| Index: third_party/sqlite/src/test/e_insert.test
|
| diff --git a/third_party/sqlite/src/test/e_insert.test b/third_party/sqlite/src/test/e_insert.test
|
| index 2192f2e9fbca73db21075891625ec1bc03014a79..0ea4b76bb529a2008bea4c1205807f33ec19bd34 100644
|
| --- a/third_party/sqlite/src/test/e_insert.test
|
| +++ b/third_party/sqlite/src/test/e_insert.test
|
| @@ -18,6 +18,11 @@
|
| set testdir [file dirname $argv0]
|
| source $testdir/tester.tcl
|
|
|
| +ifcapable !compound {
|
| + finish_test
|
| + return
|
| +}
|
| +
|
| # Organization of tests:
|
| #
|
| # e_insert-0.*: Test the syntax diagram.
|
| @@ -45,7 +50,7 @@ proc do_insert_tests {args} {
|
| uplevel do_select_tests $args
|
| }
|
|
|
| -# EVIDENCE-OF: R-41448-54465 -- syntax diagram insert-stmt
|
| +# -- syntax diagram insert-stmt
|
| #
|
| do_insert_tests e_insert-0 {
|
| 1 "INSERT INTO a1 DEFAULT VALUES" {}
|
| @@ -118,12 +123,26 @@ do_insert_tests e_insert-0 {
|
| 68 "INSERT OR IGNORE INTO a1 (b, a) SELECT c, b FROM a2" {}
|
| 69 "REPLACE INTO a1 (b, a) SELECT c, b FROM a2" {}
|
| 70 "REPLACE INTO main.a1 (b, a) SELECT c, b FROM a2" {}
|
| + 71 "INSERT INTO a1 (b, a) VALUES(1, 2),(3,4)" {}
|
| + 72 "INSERT INTO main.a1 (b, a) VALUES(1, 2),(3,4)" {}
|
| + 73 "INSERT OR ROLLBACK INTO main.a1 (b, a) VALUES(1, 2),(3,4)" {}
|
| + 74 "INSERT OR ROLLBACK INTO a1 (b, a) VALUES(1, 2),(3,4)" {}
|
| + 75 "INSERT OR ABORT INTO main.a1 (b, a) VALUES(1, 2),(3,4)" {}
|
| + 76 "INSERT OR ABORT INTO a1 (b, a) VALUES(1, 2),(3,4)" {}
|
| + 77 "INSERT OR REPLACE INTO main.a1 (b, a) VALUES(1, 2),(3,4)" {}
|
| + 78 "INSERT OR REPLACE INTO a1 (b, a) VALUES(1, 2),(3,4)" {}
|
| + 79 "INSERT OR FAIL INTO main.a1 (b, a) VALUES(1, 2),(3,4)" {}
|
| + 80 "INSERT OR FAIL INTO a1 (b, a) VALUES(1, 2),(3,4)" {}
|
| + 81 "INSERT OR FAIL INTO main.a1 (b, a) VALUES(1, 2),(3,4)" {}
|
| + 82 "INSERT OR IGNORE INTO a1 (b, a) VALUES(1, 2),(3,4)" {}
|
| + 83 "REPLACE INTO a1 (b, a) VALUES(1, 2),(3,4)" {}
|
| + 84 "REPLACE INTO main.a1 (b, a) VALUES(1, 2),(3,4)" {}
|
| }
|
|
|
| delete_all_data
|
|
|
| -# EVIDENCE-OF: R-20288-20462 The first form (with the "VALUES" keyword)
|
| -# creates a single new row in an existing table.
|
| +# EVIDENCE-OF: R-21490-41092 The first form (with the "VALUES" keyword)
|
| +# creates one or more new rows in an existing table.
|
| #
|
| do_insert_tests e_insert-1.1 {
|
| 0 "SELECT count(*) FROM a2" {0}
|
| @@ -133,11 +152,14 @@ do_insert_tests e_insert-1.1 {
|
|
|
| 2a "INSERT INTO a2(a, b) VALUES(1, 2)" {}
|
| 2b "SELECT count(*) FROM a2" {2}
|
| +
|
| + 3a "INSERT INTO a2(a) VALUES(3),(4)" {}
|
| + 3b "SELECT count(*) FROM a2" {4}
|
| }
|
|
|
| -# EVIDENCE-OF: R-36040-20870 If no column-list is specified then the
|
| -# number of values must be the same as the number of columns in the
|
| -# table.
|
| +# EVIDENCE-OF: R-53616-44976 If no column-list is specified then the
|
| +# number of values inserted into each row must be the same as the number
|
| +# of columns in the table.
|
| #
|
| # A test in the block above verifies that if the VALUES list has the
|
| # correct number of columns (for table a2, 3 columns) works. So these
|
| @@ -152,9 +174,10 @@ do_insert_tests e_insert-1.2 -error {
|
| 4 "INSERT INTO a2 VALUES(1,2,3,4,5)" {a2 3 5}
|
| }
|
|
|
| -# EVIDENCE-OF: R-52422-65517 In this case the result of evaluting the
|
| -# left-most expression in the VALUES list is inserted into the left-most
|
| -# column of the new row, and so on.
|
| +# EVIDENCE-OF: R-29730-42609 In this case the result of evaluating the
|
| +# left-most expression from each term of the VALUES list is inserted
|
| +# into the left-most column of each new row, and so forth for each
|
| +# subsequent expression.
|
| #
|
| delete_all_data
|
| do_insert_tests e_insert-1.3 {
|
| @@ -168,8 +191,9 @@ do_insert_tests e_insert-1.3 {
|
| 3b "SELECT * FROM a2 WHERE oid=last_insert_rowid()" {2 x y}
|
| }
|
|
|
| -# EVIDENCE-OF: R-62524-00361 If a column-list is specified, then the
|
| -# number of values must match the number of specified columns.
|
| +# EVIDENCE-OF: R-09234-17933 If a column-list is specified, then the
|
| +# number of values in each term of the VALUE list must match the number
|
| +# of specified columns.
|
| #
|
| do_insert_tests e_insert-1.4 -error {
|
| %d values for %d columns
|
| @@ -347,22 +371,22 @@ do_execsql_test e_insert-4.1.0 {
|
| INSERT INTO a4 VALUES(3, 'a');
|
| } {}
|
| foreach {tn sql error ac data } {
|
| - 1.1 "INSERT INTO a4 VALUES(2,'b')" {column c is not unique} 1 {1 a 2 a 3 a}
|
| + 1.1 "INSERT INTO a4 VALUES(2,'b')" {UNIQUE constraint failed: a4.c} 1 {1 a 2 a 3 a}
|
| 1.2 "INSERT OR REPLACE INTO a4 VALUES(2, 'b')" {} 1 {1 a 3 a 2 b}
|
| 1.3 "INSERT OR IGNORE INTO a4 VALUES(3, 'c')" {} 1 {1 a 3 a 2 b}
|
| 1.4 "BEGIN" {} 0 {1 a 3 a 2 b}
|
| - 1.5 "INSERT INTO a4 VALUES(1, 'd')" {column c is not unique} 0 {1 a 3 a 2 b}
|
| + 1.5 "INSERT INTO a4 VALUES(1, 'd')" {UNIQUE constraint failed: a4.c} 0 {1 a 3 a 2 b}
|
| 1.6 "INSERT OR ABORT INTO a4 VALUES(1, 'd')"
|
| - {column c is not unique} 0 {1 a 3 a 2 b}
|
| + {UNIQUE constraint failed: a4.c} 0 {1 a 3 a 2 b}
|
| 1.7 "INSERT OR ROLLBACK INTO a4 VALUES(1, 'd')"
|
| - {column c is not unique} 1 {1 a 3 a 2 b}
|
| + {UNIQUE constraint failed: a4.c} 1 {1 a 3 a 2 b}
|
| 1.8 "INSERT INTO a4 SELECT 4, 'e' UNION ALL SELECT 3, 'e'"
|
| - {column c is not unique} 1 {1 a 3 a 2 b}
|
| + {UNIQUE constraint failed: a4.c} 1 {1 a 3 a 2 b}
|
| 1.9 "INSERT OR FAIL INTO a4 SELECT 4, 'e' UNION ALL SELECT 3, 'e'"
|
| - {column c is not unique} 1 {1 a 3 a 2 b 4 e}
|
| + {UNIQUE constraint failed: a4.c} 1 {1 a 3 a 2 b 4 e}
|
|
|
| 2.1 "INSERT INTO a4 VALUES(2,'f')"
|
| - {column c is not unique} 1 {1 a 3 a 2 b 4 e}
|
| + {UNIQUE constraint failed: a4.c} 1 {1 a 3 a 2 b 4 e}
|
| 2.2 "REPLACE INTO a4 VALUES(2, 'f')" {} 1 {1 a 3 a 4 e 2 f}
|
| } {
|
| do_catchsql_test e_insert-4.1.$tn.1 $sql [list [expr {$error!=""}] $error]
|
|
|