Index: third_party/sqlite/src/tool/genfkey.test |
diff --git a/third_party/sqlite/src/tool/genfkey.test b/third_party/sqlite/src/tool/genfkey.test |
index e1011d62f1f3f525775c9dab840e8f6367441e83..3c0073e953dc0a2e60b421181b631c3bcaa37b96 100644 |
--- a/third_party/sqlite/src/tool/genfkey.test |
+++ b/third_party/sqlite/src/tool/genfkey.test |
@@ -292,3 +292,63 @@ do_test genfkey-5.5 { |
} |
} {0 {}} |
+# Test also column names that require quoting. |
+do_test genfkey-6.1 { |
+ execsql { |
+ DROP TABLE "t.3"; |
+ DROP TABLE t13; |
+ CREATE TABLE p( |
+ "a.1 first", "b.2 second", |
+ UNIQUE("a.1 first", "b.2 second") |
+ ); |
+ CREATE TABLE c( |
+ "c.1 I", "d.2 II", |
+ FOREIGN KEY("c.1 I", "d.2 II") |
+ REFERENCES p("a.1 first", "b.2 second") |
+ ON UPDATE CASCADE ON DELETE CASCADE |
+ ); |
+ } |
+} {} |
+do_test genfkey-6.2 { |
+ set rc [catch {exec ./sqlite3 test.db .genfkey} msg] |
+} {0} |
+do_test genfkey-6.3 { |
+ execsql $msg |
+ execsql { |
+ INSERT INTO p VALUES('A', 'B'); |
+ INSERT INTO p VALUES('C', 'D'); |
+ INSERT INTO c VALUES('A', 'B'); |
+ INSERT INTO c VALUES('C', 'D'); |
+ UPDATE p SET "a.1 first" = 'X' WHERE rowid = 1; |
+ DELETE FROM p WHERE rowid = 2; |
+ } |
+ execsql { SELECT * FROM c } |
+} {X B} |
+ |
+do_test genfkey-6.4 { |
+ execsql { |
+ DROP TABLE p; |
+ DROP TABLE c; |
+ CREATE TABLE parent("a.1", PRIMARY KEY("a.1")); |
+ CREATE TABLE child("b.2", FOREIGN KEY("b.2") REFERENCES parent("a.1")); |
+ } |
+ set rc [catch {exec ./sqlite3 test.db .genfkey} msg] |
+} {0} |
+do_test genfkey-6.5 { |
+ execsql $msg |
+ execsql { |
+ INSERT INTO parent VALUES(1); |
+ INSERT INTO child VALUES(1); |
+ } |
+ catchsql { UPDATE parent SET "a.1"=0 } |
+} {1 {constraint failed}} |
+do_test genfkey-6.6 { |
+ catchsql { UPDATE child SET "b.2"=7 } |
+} {1 {constraint failed}} |
+do_test genfkey-6.7 { |
+ execsql { |
+ SELECT * FROM parent; |
+ SELECT * FROM child; |
+ } |
+} {1 1} |
+ |