Index: third_party/sqlite/src/test/e_fkey.test |
diff --git a/third_party/sqlite/src/test/e_fkey.test b/third_party/sqlite/src/test/e_fkey.test |
index ae789d50723e59183c29461e284949c87b7e8bdc..09756505c3a16157af08a049dd65ca3f0b850947 100644 |
--- a/third_party/sqlite/src/test/e_fkey.test |
+++ b/third_party/sqlite/src/test/e_fkey.test |
@@ -135,9 +135,9 @@ reset_db |
# |
# This also tests that foreign key constraints are disabled by default. |
# |
-# EVIDENCE-OF: R-59578-04990 Foreign key constraints are disabled by |
+# EVIDENCE-OF: R-44261-39702 Foreign key constraints are disabled by |
# default (for backwards compatibility), so must be enabled separately |
-# for each database connection separately. |
+# for each database connection. |
# |
drop_all_tables |
do_test e_fkey-4.1 { |
@@ -163,9 +163,10 @@ do_test e_fkey-4.2 { |
} {world} |
#------------------------------------------------------------------------- |
-# EVIDENCE-OF: R-15278-54456 The application can can also use a PRAGMA |
+# EVIDENCE-OF: R-08013-37737 The application can also use a PRAGMA |
# foreign_keys statement to determine if foreign keys are currently |
# enabled. |
+ |
# |
# This also tests the example code in section 2 of foreignkeys.in. |
# |
@@ -211,7 +212,7 @@ do_test e_fkey-6.1 { |
catchsql { |
DELETE FROM t1 |
} |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-6.2 { |
execsql { PRAGMA foreign_keys } |
} {1} |
@@ -265,11 +266,11 @@ do_test e_fkey-7.1 { |
# |
do_test e_fkey-8.1 { |
catchsql { INSERT INTO track VALUES(1, 'track 1', 1) } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-8.2 { |
execsql { INSERT INTO artist VALUES(2, 'artist 1') } |
catchsql { INSERT INTO track VALUES(1, 'track 1', 1) } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-8.2 { |
execsql { INSERT INTO track VALUES(1, 'track 1', 2) } |
} {} |
@@ -283,7 +284,7 @@ do_test e_fkey-8.2 { |
# |
do_test e_fkey-9.1 { |
catchsql { DELETE FROM artist WHERE artistid = 2 } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-9.2 { |
execsql { |
DELETE FROM track WHERE trackartist = 2; |
@@ -311,14 +312,14 @@ do_test e_fkey-10.2 { |
do_test e_fkey-10.3 { |
# Setting the trackid to a non-NULL value fails, of course. |
catchsql { UPDATE track SET trackartist = 5 WHERE trackid = 1 } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-10.4 { |
execsql { |
INSERT INTO artist VALUES(5, 'artist 5'); |
UPDATE track SET trackartist = 5 WHERE trackid = 1; |
} |
catchsql { DELETE FROM artist WHERE artistid = 5} |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-10.5 { |
execsql { |
UPDATE track SET trackartist = NULL WHERE trackid = 1; |
@@ -344,8 +345,8 @@ proc test_r52486_21352 {tn sql} { |
set res [catchsql $sql] |
set results { |
{0 {}} |
- {1 {PRIMARY KEY must be unique}} |
- {1 {foreign key constraint failed}} |
+ {1 {UNIQUE constraint failed: artist.artistid}} |
+ {1 {FOREIGN KEY constraint failed}} |
} |
if {[lsearch $results $res]<0} { |
error $res |
@@ -409,7 +410,7 @@ do_test e_fkey-12.1 { |
} {} |
do_test e_fkey-12.2 { |
catchsql { INSERT INTO track VALUES(14, 'Mr. Bojangles', NULL) } |
-} {1 {track.trackartist may not be NULL}} |
+} {1 {NOT NULL constraint failed: track.trackartist}} |
#------------------------------------------------------------------------- |
# EVIDENCE-OF: R-16127-35442 |
@@ -438,7 +439,7 @@ do_test e_fkey-13.1 { |
} {} |
do_test e_fkey-13.2 { |
catchsql { INSERT INTO track VALUES(14, 'Mr. Bojangles', 3) } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-13.3 { |
execsql { INSERT INTO track VALUES(14, 'Mr. Bojangles', NULL) } |
} {} |
@@ -446,7 +447,7 @@ do_test e_fkey-13.4 { |
catchsql { |
UPDATE track SET trackartist = 3 WHERE trackname = 'Mr. Bojangles'; |
} |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-13.5 { |
execsql { |
INSERT INTO artist VALUES(3, 'Sammy Davis Jr.'); |
@@ -464,7 +465,7 @@ do_test e_fkey-14.1 { |
catchsql { |
DELETE FROM artist WHERE artistname = 'Frank Sinatra'; |
} |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-14.2 { |
execsql { |
DELETE FROM track WHERE trackname = 'My Way'; |
@@ -475,7 +476,7 @@ do_test e_fkey-14.3 { |
catchsql { |
UPDATE artist SET artistid=4 WHERE artistname = 'Dean Martin'; |
} |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-14.4 { |
execsql { |
DELETE FROM track WHERE trackname IN('That''s Amore', 'Christmas Blues'); |
@@ -513,7 +514,7 @@ do_test e_fkey-15.1 { |
proc test_efkey_45 {tn isError sql} { |
do_test e_fkey-15.$tn.1 " |
catchsql {$sql} |
- " [lindex {{0 {}} {1 {foreign key constraint failed}}} $isError] |
+ " [lindex {{0 {}} {1 {FOREIGN KEY constraint failed}}} $isError] |
do_test e_fkey-15.$tn.2 { |
execsql { |
@@ -557,10 +558,10 @@ do_test e_fkey-16.2 { |
} {} |
do_test e_fkey-16.3 { |
catchsql { UPDATE t2 SET b = 'two' WHERE rowid = 1 } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-16.4 { |
catchsql { DELETE FROM t1 WHERE rowid = 1 } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
#------------------------------------------------------------------------- |
# Specifically, test that when comparing child and parent key values the |
@@ -592,7 +593,7 @@ do_test e_fkey-17.3 { |
} {integer integer text} |
do_test e_fkey-17.4 { |
catchsql { DELETE FROM t1 WHERE rowid = 2 } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
########################################################################### |
### SECTION 3: Required and Suggested Database Indexes |
@@ -627,7 +628,8 @@ proc test_efkey_57 {tn isError sql} { |
execsql $sql |
do_test e_fkey-18.$tn { |
catchsql { INSERT INTO t2 VALUES(NULL) } |
- } [lindex {{0 {}} {1 {foreign key mismatch}}} $isError] |
+ } [lindex {{0 {}} {/1 {foreign key mismatch - ".*" referencing ".*"}/}} \ |
+ $isError] |
} |
test_efkey_57 2 0 { CREATE TABLE t1(x PRIMARY KEY) } |
test_efkey_57 3 0 { CREATE TABLE t1(x UNIQUE) } |
@@ -698,16 +700,16 @@ do_test e_fkey-19.2 { |
} {} |
do_test e_fkey-19.2 { |
catchsql { INSERT INTO child4 VALUES('xxx', 5) } |
-} {1 {foreign key mismatch}} |
+} {1 {foreign key mismatch - "child4" referencing "parent"}} |
do_test e_fkey-19.3 { |
catchsql { INSERT INTO child5 VALUES('xxx', 6) } |
-} {1 {foreign key mismatch}} |
+} {1 {foreign key mismatch - "child5" referencing "parent"}} |
do_test e_fkey-19.4 { |
catchsql { INSERT INTO child6 VALUES(2, 3) } |
-} {1 {foreign key mismatch}} |
+} {1 {foreign key mismatch - "child6" referencing "parent"}} |
do_test e_fkey-19.5 { |
catchsql { INSERT INTO child7 VALUES(3) } |
-} {1 {foreign key mismatch}} |
+} {1 {foreign key mismatch - "child7" referencing "parent"}} |
#------------------------------------------------------------------------- |
# Test errors in the database schema that are detected while preparing |
@@ -765,12 +767,12 @@ do_test e_fkey-20.1 { |
foreach {tn tbl ptbl err} { |
2 c1 {} "no such table: main.nosuchtable" |
- 3 c2 p2 "foreign key mismatch" |
- 4 c3 p3 "foreign key mismatch" |
- 5 c4 p4 "foreign key mismatch" |
- 6 c5 p5 "foreign key mismatch" |
- 7 c6 p6 "foreign key mismatch" |
- 8 c7 p7 "foreign key mismatch" |
+ 3 c2 p2 "foreign key mismatch - \"c2\" referencing \"p2\"" |
+ 4 c3 p3 "foreign key mismatch - \"c3\" referencing \"p3\"" |
+ 5 c4 p4 "foreign key mismatch - \"c4\" referencing \"p4\"" |
+ 6 c5 p5 "foreign key mismatch - \"c5\" referencing \"p5\"" |
+ 7 c6 p6 "foreign key mismatch - \"c6\" referencing \"p6\"" |
+ 8 c7 p7 "foreign key mismatch - \"c7\" referencing \"p7\"" |
} { |
do_test e_fkey-20.$tn.1 { |
catchsql "INSERT INTO $tbl VALUES('a', 'b')" |
@@ -820,22 +822,22 @@ do_test e_fkey-21.2 { |
} {} |
do_test e_fkey-21.3 { |
catchsql { INSERT INTO child9 VALUES('I') } |
-} {1 {foreign key mismatch}} |
+} {1 {foreign key mismatch - "child9" referencing "parent2"}} |
do_test e_fkey-21.4 { |
catchsql { INSERT INTO child9 VALUES('II') } |
-} {1 {foreign key mismatch}} |
+} {1 {foreign key mismatch - "child9" referencing "parent2"}} |
do_test e_fkey-21.5 { |
catchsql { INSERT INTO child9 VALUES(NULL) } |
-} {1 {foreign key mismatch}} |
+} {1 {foreign key mismatch - "child9" referencing "parent2"}} |
do_test e_fkey-21.6 { |
catchsql { INSERT INTO child10 VALUES('I', 'II', 'III') } |
-} {1 {foreign key mismatch}} |
+} {1 {foreign key mismatch - "child10" referencing "parent2"}} |
do_test e_fkey-21.7 { |
catchsql { INSERT INTO child10 VALUES(1, 2, 3) } |
-} {1 {foreign key mismatch}} |
+} {1 {foreign key mismatch - "child10" referencing "parent2"}} |
do_test e_fkey-21.8 { |
catchsql { INSERT INTO child10 VALUES(NULL, NULL, NULL) } |
-} {1 {foreign key mismatch}} |
+} {1 {foreign key mismatch - "child10" referencing "parent2"}} |
#------------------------------------------------------------------------- |
# Test errors that are reported when creating the child table. |
@@ -895,7 +897,7 @@ do_test e_fkey-23.1 { |
proc test_efkey_60 {tn isError sql} { |
do_test e_fkey-23.$tn " |
catchsql {$sql} |
- " [lindex {{0 {}} {1 {foreign key constraint failed}}} $isError] |
+ " [lindex {{0 {}} {1 {FOREIGN KEY constraint failed}}} $isError] |
} |
test_efkey_60 2 1 "INSERT INTO c1 VALUES(239, 231)" |
@@ -932,7 +934,7 @@ do_test e_fkey-24.1 { |
proc test_efkey_61 {tn isError sql} { |
do_test e_fkey-24.$tn " |
catchsql {$sql} |
- " [lindex {{0 {}} {1 {foreign key constraint failed}}} $isError] |
+ " [lindex {{0 {}} {1 {FOREIGN KEY constraint failed}}} $isError] |
} |
foreach {tn c} [list 2 c1 3 c2 4 c3] { |
test_efkey_61 $tn.1 1 "INSERT INTO $c VALUES(1, 2)" |
@@ -973,15 +975,15 @@ do_execsql_test e_fkey-25.2 { |
EXPLAIN QUERY PLAN DELETE FROM artist WHERE 1; |
EXPLAIN QUERY PLAN SELECT rowid FROM track WHERE trackartist = ?; |
} { |
- 0 0 0 {SCAN TABLE artist (~1000000 rows)} |
- 0 0 0 {SCAN TABLE track (~100000 rows)} |
+ 0 0 0 {SCAN TABLE artist} |
+ 0 0 0 {SCAN TABLE track} |
} |
do_execsql_test e_fkey-25.3 { |
PRAGMA foreign_keys = ON; |
EXPLAIN QUERY PLAN DELETE FROM artist WHERE 1; |
} { |
- 0 0 0 {SCAN TABLE artist (~1000000 rows)} |
- 0 0 0 {SCAN TABLE track (~100000 rows)} |
+ 0 0 0 {SCAN TABLE artist} |
+ 0 0 0 {SCAN TABLE track} |
} |
do_test e_fkey-25.4 { |
execsql { |
@@ -997,7 +999,7 @@ do_test e_fkey-25.5 { |
concat \ |
[execsql { SELECT rowid FROM track WHERE trackartist = 5 }] \ |
[catchsql { DELETE FROM artist WHERE artistid = 5 }] |
-} {1 1 {foreign key constraint failed}} |
+} {1 1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-25.6 { |
concat \ |
@@ -1009,7 +1011,7 @@ do_test e_fkey-25.7 { |
concat \ |
[execsql { SELECT rowid FROM track WHERE trackartist = 6 }] \ |
[catchsql { DELETE FROM artist WHERE artistid = 6 }] |
-} {2 1 {foreign key constraint failed}} |
+} {2 1 {FOREIGN KEY constraint failed}} |
#------------------------------------------------------------------------- |
# EVIDENCE-OF: R-47936-10044 Or, more generally: |
@@ -1098,15 +1100,15 @@ do_test e_fkey-27.2 { |
do_execsql_test e_fkey-27.3 { |
EXPLAIN QUERY PLAN UPDATE artist SET artistid = ?, artistname = ? |
} { |
- 0 0 0 {SCAN TABLE artist (~1000000 rows)} |
- 0 0 0 {SEARCH TABLE track USING COVERING INDEX trackindex (trackartist=?) (~10 rows)} |
- 0 0 0 {SEARCH TABLE track USING COVERING INDEX trackindex (trackartist=?) (~10 rows)} |
+ 0 0 0 {SCAN TABLE artist} |
+ 0 0 0 {SEARCH TABLE track USING COVERING INDEX trackindex (trackartist=?)} |
+ 0 0 0 {SEARCH TABLE track USING COVERING INDEX trackindex (trackartist=?)} |
} |
do_execsql_test e_fkey-27.4 { |
EXPLAIN QUERY PLAN DELETE FROM artist |
} { |
- 0 0 0 {SCAN TABLE artist (~1000000 rows)} |
- 0 0 0 {SEARCH TABLE track USING COVERING INDEX trackindex (trackartist=?) (~10 rows)} |
+ 0 0 0 {SCAN TABLE artist} |
+ 0 0 0 {SEARCH TABLE track USING COVERING INDEX trackindex (trackartist=?)} |
} |
@@ -1151,7 +1153,7 @@ do_test e_fkey-28.8 { |
CREATE TABLE c(a, b, FOREIGN KEY(a,b) REFERENCES p); |
} |
catchsql {DELETE FROM p} |
-} {1 {foreign key mismatch}} |
+} {1 {foreign key mismatch - "c" referencing "p"}} |
do_test e_fkey-28.9 { |
drop_all_tables |
execsql { |
@@ -1159,7 +1161,7 @@ do_test e_fkey-28.9 { |
CREATE TABLE c(a REFERENCES p); |
} |
catchsql {DELETE FROM p} |
-} {1 {foreign key mismatch}} |
+} {1 {foreign key mismatch - "c" referencing "p"}} |
#------------------------------------------------------------------------- |
@@ -1198,7 +1200,7 @@ do_test e_fkey-29.3 { |
catchsql { |
INSERT INTO song VALUES(2, 'Elvis Presley', 'Elvis Is Back!', 'Fever'); |
} |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
#------------------------------------------------------------------------- |
@@ -1239,7 +1241,7 @@ do_test e_fkey-31.1 { |
do_test e_fkey-31.2 { |
# Execute a statement that violates the immediate FK constraint. |
catchsql { INSERT INTO prince VALUES(1, 2) } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-31.3 { |
# This time, use a trigger to fix the constraint violation before the |
@@ -1264,7 +1266,7 @@ do_test e_fkey-31.4 { |
DROP TRIGGER kt; |
} |
catchsql { INSERT INTO prince VALUES(3, 4) } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-31.5 { |
execsql { |
COMMIT; |
@@ -1295,7 +1297,7 @@ do_test e_fkey-31.5 { |
proc test_efkey_34 {tn isError sql} { |
do_test e_fkey-32.$tn " |
catchsql {$sql} |
- " [lindex {{0 {}} {1 {foreign key constraint failed}}} $isError] |
+ " [lindex {{0 {}} {1 {FOREIGN KEY constraint failed}}} $isError] |
} |
drop_all_tables |
@@ -1326,7 +1328,7 @@ drop_all_tables |
proc test_efkey_35 {tn isError sql} { |
do_test e_fkey-33.$tn " |
catchsql {$sql} |
- " [lindex {{0 {}} {1 {foreign key constraint failed}}} $isError] |
+ " [lindex {{0 {}} {1 {FOREIGN KEY constraint failed}}} $isError] |
} |
do_test e_fkey-33.1 { |
execsql { |
@@ -1416,7 +1418,7 @@ do_test e_fkey-34.1 { |
proc test_efkey_29 {tn sql isError} { |
do_test e_fkey-34.$tn "catchsql {$sql}" [ |
- lindex {{0 {}} {1 {foreign key constraint failed}}} $isError |
+ lindex {{0 {}} {1 {FOREIGN KEY constraint failed}}} $isError |
] |
} |
test_efkey_29 2 "BEGIN" 0 |
@@ -1490,7 +1492,7 @@ do_test e_fkey-35.2 { |
INSERT INTO track VALUES(1, 'White Christmas', 5); |
} |
catchsql COMMIT |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-35.3 { |
execsql { |
INSERT INTO artist VALUES(5, 'Bing Crosby'); |
@@ -1527,7 +1529,7 @@ do_test e_fkey-36.2 { |
} {} |
do_test e_fkey-36.3 { |
catchsql COMMIT |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-36.4 { |
execsql { |
UPDATE t1 SET a = 5 WHERE a = 4; |
@@ -1557,7 +1559,7 @@ do_test e_fkey-37.1 { |
} {} |
do_test e_fkey-37.2 { |
catchsql {RELEASE one} |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-37.3 { |
execsql { |
UPDATE t1 SET a = 7 WHERE a = 6; |
@@ -1574,7 +1576,7 @@ do_test e_fkey-37.4 { |
} {} |
do_test e_fkey-37.5 { |
catchsql {RELEASE one} |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-37.6 { |
execsql {ROLLBACK TO one ; RELEASE one} |
} {} |
@@ -1605,7 +1607,7 @@ do_test e_fkey-38.2 { |
} {1 1 2 2 3 3 4 4 5 6} |
do_test e_fkey-38.3 { |
catchsql COMMIT |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-38.4 { |
execsql { |
ROLLBACK TO one; |
@@ -1626,11 +1628,11 @@ do_test e_fkey-38.5 { |
} {} |
do_test e_fkey-38.6 { |
catchsql {RELEASE a} |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-38.7 { |
execsql {ROLLBACK TO c} |
catchsql {RELEASE a} |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-38.8 { |
execsql { |
ROLLBACK TO b; |
@@ -1781,7 +1783,7 @@ do_test e_fkey-41.2 { |
} {j k l m} |
do_test e_fkey-41.3 { |
catchsql COMMIT |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-41.4 { |
execsql ROLLBACK |
} {} |
@@ -1819,10 +1821,10 @@ do_test e_fkey-41.2 { |
} {} |
do_test e_fkey-41.3 { |
catchsql { DELETE FROM parent WHERE p1 = 'a' } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-41.4 { |
catchsql { UPDATE parent SET p2 = 'e' WHERE p1 = 'c' } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
#------------------------------------------------------------------------- |
# Test that RESTRICT is slightly different from NO ACTION for IMMEDIATE |
@@ -1856,7 +1858,7 @@ do_test e_fkey-42.1 { |
} {} |
do_test e_fkey-42.2 { |
catchsql { UPDATE parent SET x = 'key one' WHERE x = 'key1' } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-42.3 { |
execsql { |
UPDATE parent SET x = 'key two' WHERE x = 'key2'; |
@@ -1884,7 +1886,7 @@ do_test e_fkey-42.4 { |
} {} |
do_test e_fkey-42.5 { |
catchsql { DELETE FROM parent WHERE x = 'key1' } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-42.6 { |
execsql { |
DELETE FROM parent WHERE x = 'key2'; |
@@ -1907,7 +1909,7 @@ do_test e_fkey-42.7 { |
} {} |
do_test e_fkey-42.8 { |
catchsql { REPLACE INTO parent VALUES('key1') } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-42.9 { |
execsql { |
REPLACE INTO parent VALUES('key2'); |
@@ -1943,13 +1945,13 @@ do_test e_fkey-43.1 { |
} {} |
do_test e_fkey-43.2 { |
catchsql { UPDATE parent SET x = 'key one' WHERE x = 'key1' } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-43.3 { |
execsql { UPDATE parent SET x = 'key two' WHERE x = 'key2' } |
} {} |
do_test e_fkey-43.4 { |
catchsql COMMIT |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-43.5 { |
execsql { |
UPDATE child2 SET c = 'key two'; |
@@ -1977,13 +1979,13 @@ do_test e_fkey-43.6 { |
} {} |
do_test e_fkey-43.7 { |
catchsql { DELETE FROM parent WHERE x = 'key1' } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-43.8 { |
execsql { DELETE FROM parent WHERE x = 'key2' } |
} {} |
do_test e_fkey-43.9 { |
catchsql COMMIT |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-43.10 { |
execsql { |
UPDATE child2 SET c = NULL; |
@@ -2060,7 +2062,7 @@ do_test e_fkey-45.1 { |
do_test e_fkey-45.2 { |
execsql { |
DELETE FROM pA WHERE rowid = 3; |
- SELECT quote(x) FROM pA; |
+ SELECT quote(x) FROM pA ORDER BY rowid; |
} |
} {X'0000' X'9999' X'1234'} |
do_test e_fkey-45.3 { |
@@ -2069,7 +2071,7 @@ do_test e_fkey-45.3 { |
do_test e_fkey-45.4 { |
execsql { |
UPDATE pA SET x = X'8765' WHERE rowid = 4; |
- SELECT quote(x) FROM pA; |
+ SELECT quote(x) FROM pA ORDER BY rowid; |
} |
} {X'0000' X'9999' X'8765'} |
do_test e_fkey-45.5 { |
@@ -2239,7 +2241,7 @@ do_test e_fkey-49.3 { |
} {ONE two three} |
do_test e_fkey-49.4 { |
catchsql { UPDATE parent SET a = '' WHERE a = 'oNe' } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
#------------------------------------------------------------------------- |
@@ -2274,7 +2276,7 @@ do_test e_fkey-50.1 { |
} {} |
do_test e_fkey-50.2 { |
catchsql { DELETE FROM artist WHERE artistname = 'Sammy Davis Jr.' } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-50.3 { |
execsql { |
INSERT INTO artist VALUES(0, 'Unknown Artist'); |
@@ -2325,7 +2327,7 @@ do_test e_fkey-51.1 { |
do_test e_fkey-51.2 { |
execsql { |
UPDATE parent SET x = 22; |
- SELECT * FROM parent UNION ALL SELECT 'xxx' UNION ALL SELECT a FROM child; |
+ SELECT * FROM parent ORDER BY rowid; SELECT 'xxx' ; SELECT a FROM child; |
} |
} {22 21 23 xxx 22} |
do_test e_fkey-51.3 { |
@@ -2335,7 +2337,7 @@ do_test e_fkey-51.3 { |
INSERT INTO parent VALUES(-1); |
INSERT INTO child VALUES(-1); |
UPDATE parent SET x = 22; |
- SELECT * FROM parent UNION ALL SELECT 'xxx' UNION ALL SELECT a FROM child; |
+ SELECT * FROM parent ORDER BY rowid; SELECT 'xxx' ; SELECT a FROM child; |
} |
} {22 23 21 xxx 23} |
@@ -2638,7 +2640,7 @@ do_test e_fkey-58.1 { |
} |
execsql { INSERT INTO c5 VALUES('a', 'b') } |
catchsql { DROP TABLE p } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-58.2 { |
execsql { SELECT * FROM p } |
} {a b} |
@@ -2647,7 +2649,7 @@ do_test e_fkey-58.3 { |
BEGIN; |
DROP TABLE p; |
} |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-58.4 { |
execsql { |
SELECT * FROM p; |
@@ -2681,11 +2683,11 @@ do_test e_fkey-59.2 { |
} {} |
do_test e_fkey-59.3 { |
catchsql COMMIT |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-59.4 { |
execsql { CREATE TABLE p(a, b, PRIMARY KEY(a, b)) } |
catchsql COMMIT |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-59.5 { |
execsql { INSERT INTO p VALUES('a', 'b') } |
execsql COMMIT |
@@ -2729,19 +2731,19 @@ do_test e_fkey-60.3 { |
do_test e_fkey-60.4 { |
execsql { CREATE TABLE nosuchtable(x PRIMARY KEY) } |
catchsql { DELETE FROM p } |
-} {1 {foreign key mismatch}} |
+} {1 {foreign key mismatch - "c2" referencing "p"}} |
do_test e_fkey-60.5 { |
execsql { DROP TABLE c1 } |
catchsql { DELETE FROM p } |
-} {1 {foreign key mismatch}} |
+} {1 {foreign key mismatch - "c2" referencing "p"}} |
do_test e_fkey-60.6 { |
execsql { DROP TABLE c2 } |
execsql { DELETE FROM p } |
} {} |
#------------------------------------------------------------------------- |
-# Test that the special behaviours of ALTER and DROP TABLE are only |
-# activated when foreign keys are enabled. Special behaviours are: |
+# Test that the special behaviors of ALTER and DROP TABLE are only |
+# activated when foreign keys are enabled. Special behaviors are: |
# |
# 1. ADD COLUMN not allowing a REFERENCES clause with a non-NULL |
# default value. |
@@ -2836,7 +2838,7 @@ foreach zMatch [list SIMPLE PARTIAL FULL Simple parTIAL FuLL ] { |
do_test e_fkey-62.$zMatch.2 { |
execsql { INSERT INTO p VALUES(1, 2, 3) } |
- # MATCH SIMPLE behaviour: Allow any child key that contains one or more |
+ # MATCH SIMPLE behavior: Allow any child key that contains one or more |
# NULL value to be inserted. Non-NULL values do not have to map to any |
# parent key values, so long as at least one field of the child key is |
# NULL. |
@@ -2848,7 +2850,7 @@ foreach zMatch [list SIMPLE PARTIAL FULL Simple parTIAL FuLL ] { |
# Check that the FK is enforced properly if there are no NULL values |
# in the child key columns. |
catchsql { INSERT INTO c VALUES('a', 2, 4) } |
- } {1 {foreign key constraint failed}} |
+ } {1 {FOREIGN KEY constraint failed}} |
} |
#------------------------------------------------------------------------- |
@@ -2878,13 +2880,13 @@ do_test e_fkey-62.3 { |
} {} |
do_test e_fkey-62.4 { |
catchsql { INSERT INTO ci VALUES('x', 'y') } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-62.5 { |
catchsql { INSERT INTO cd VALUES('x', 'y') } |
} {0 {}} |
do_test e_fkey-62.6 { |
catchsql { COMMIT } |
-} {1 {foreign key constraint failed}} |
+} {1 {FOREIGN KEY constraint failed}} |
do_test e_fkey-62.7 { |
execsql { |
DELETE FROM cd; |
@@ -2945,45 +2947,52 @@ proc test_on_update_recursion {limit} { |
" |
} |
-do_test e_fkey-63.1.1 { |
- test_on_delete_recursion $SQLITE_MAX_TRIGGER_DEPTH |
-} {0 0} |
-do_test e_fkey-63.1.2 { |
- test_on_delete_recursion [expr $SQLITE_MAX_TRIGGER_DEPTH+1] |
-} {1 {too many levels of trigger recursion}} |
-do_test e_fkey-63.1.3 { |
- sqlite3_limit db SQLITE_LIMIT_TRIGGER_DEPTH 5 |
- test_on_delete_recursion 5 |
-} {0 0} |
-do_test e_fkey-63.1.4 { |
- test_on_delete_recursion 6 |
-} {1 {too many levels of trigger recursion}} |
-do_test e_fkey-63.1.5 { |
- sqlite3_limit db SQLITE_LIMIT_TRIGGER_DEPTH 1000000 |
-} {5} |
-do_test e_fkey-63.2.1 { |
- test_on_update_recursion $SQLITE_MAX_TRIGGER_DEPTH |
-} {0 0} |
-do_test e_fkey-63.2.2 { |
- test_on_update_recursion [expr $SQLITE_MAX_TRIGGER_DEPTH+1] |
-} {1 {too many levels of trigger recursion}} |
-do_test e_fkey-63.2.3 { |
- sqlite3_limit db SQLITE_LIMIT_TRIGGER_DEPTH 5 |
- test_on_update_recursion 5 |
-} {0 0} |
-do_test e_fkey-63.2.4 { |
- test_on_update_recursion 6 |
-} {1 {too many levels of trigger recursion}} |
-do_test e_fkey-63.2.5 { |
- sqlite3_limit db SQLITE_LIMIT_TRIGGER_DEPTH 1000000 |
-} {5} |
+# If the current build was created using clang with the -fsanitize=address |
+# switch, then the library uses considerably more stack space than usual. |
+# So much more, that some of the following tests cause stack overflows |
+# if they are run under this configuration. |
+# |
+if {[clang_sanitize_address]==0} { |
+ do_test e_fkey-63.1.1 { |
+ test_on_delete_recursion $SQLITE_MAX_TRIGGER_DEPTH |
+ } {0 0} |
+ do_test e_fkey-63.1.2 { |
+ test_on_delete_recursion [expr $SQLITE_MAX_TRIGGER_DEPTH+1] |
+ } {1 {too many levels of trigger recursion}} |
+ do_test e_fkey-63.1.3 { |
+ sqlite3_limit db SQLITE_LIMIT_TRIGGER_DEPTH 5 |
+ test_on_delete_recursion 5 |
+ } {0 0} |
+ do_test e_fkey-63.1.4 { |
+ test_on_delete_recursion 6 |
+ } {1 {too many levels of trigger recursion}} |
+ do_test e_fkey-63.1.5 { |
+ sqlite3_limit db SQLITE_LIMIT_TRIGGER_DEPTH 1000000 |
+ } {5} |
+ do_test e_fkey-63.2.1 { |
+ test_on_update_recursion $SQLITE_MAX_TRIGGER_DEPTH |
+ } {0 0} |
+ do_test e_fkey-63.2.2 { |
+ test_on_update_recursion [expr $SQLITE_MAX_TRIGGER_DEPTH+1] |
+ } {1 {too many levels of trigger recursion}} |
+ do_test e_fkey-63.2.3 { |
+ sqlite3_limit db SQLITE_LIMIT_TRIGGER_DEPTH 5 |
+ test_on_update_recursion 5 |
+ } {0 0} |
+ do_test e_fkey-63.2.4 { |
+ test_on_update_recursion 6 |
+ } {1 {too many levels of trigger recursion}} |
+ do_test e_fkey-63.2.5 { |
+ sqlite3_limit db SQLITE_LIMIT_TRIGGER_DEPTH 1000000 |
+ } {5} |
+} |
#------------------------------------------------------------------------- |
# The setting of the recursive_triggers pragma does not affect foreign |
# key actions. |
# |
-# EVIDENCE-OF: R-51769-32730 The PRAGMA recursive_triggers setting does |
-# not not affect the operation of foreign key actions. |
+# EVIDENCE-OF: R-44355-00270 The PRAGMA recursive_triggers setting does |
+# not affect the operation of foreign key actions. |
# |
foreach recursive_triggers_setting [list 0 1 ON OFF] { |
drop_all_tables |