-C Ignore\sforeign\skey\smismatch\serrors\swhile\scompiling\sDROP\sTABLE\scommands.
-D 2009-09-28T18:52:12
+C Various\sfixes\sso\sthat\s"make\stest"\sworks\swith\sOMIT_FOREIGN_KEY,\sOMIT_TRIGGER\sand\sOMIT_ALTER_TABLE.
+D 2009-09-29T06:33:24
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
F Makefile.in 4ca3f1dd6efa2075bcb27f4dc43eef749877740d
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
F sqlite3.1 6be1ad09113570e1fc8dcaff84c9b0b337db5ffc
F sqlite3.pc.in ae6f59a76e862f5c561eb32a380228a02afc3cad
-F src/alter.c 082657ce3a584a512ed472e3163c09ed399e17f4
+F src/alter.c 1b63d4f2a6e76af9e2964d4d86ccc8e74c3fae4a
F src/analyze.c 5a8b8aa3d170eac5e71af45458cec61f83c623ee
F src/attach.c 13995348fc5a26cdd136a50806faf292aabc173f
F src/auth.c d6a88bf8e81e6a079ccb8881002b327e42ec46b9
F test/boundary2.test 9ae758d7dab7e882c8b6cc4a6a10278385bff8fa
F test/boundary3.tcl 8901d6a503d0bf64251dd81cc74e5ad3add4b119
F test/boundary3.test 56ef82096b4329aca2be74fa1e2b0f762ea0eb45
-F test/boundary4.tcl bf068a95bed74cffd5829766b836479fcebeb18b
-F test/boundary4.test 940bd509e34ae93c14ae62aeb8cf9afcf178b863
+F test/boundary4.tcl 0bb4b1a94f4fc5ae59b79b9a2b7a140c405e2983
+F test/boundary4.test 89e02fa66397b8a325d5eb102b5806f961f8ec4b
F test/busy.test 76b4887f8b9160ba903c1ac22e8ff406ad6ae2f0
F test/cache.test 3ff445c445742a7b6b9ba6e1d62a25263f9424b9
F test/capi2.test 172c717ed101e78e0798dd21b9896a22366f35b4
F test/filectrl.test 8923a6dc7630f31c8a9dd3d3d740aa0922df7bf8
F test/filefmt.test 84e3d0fe9f12d0d2ac852465c6f8450aea0d6f43
F test/fkey1.test 01c7de578e11747e720c2d9aeef27f239853c4da
-F test/fkey2.test a041806ef603f8dbae139ad99e57ed1e6cadebf2
-F test/fkey3.test 4d8d87a72e0dee5b5411cf10dc05ad9edebbeac8
+F test/fkey2.test 3efd8c692e480205cc46026ff2430977e032133a
+F test/fkey3.test c17565b40c97a0dd5102610183c744611171b5ec
F test/fkey_malloc.test da912d000bb6ceb1cd11b655de1989762fa71ceb
F test/format4.test 1f0cac8ff3895e9359ed87e41aaabee982a812eb
F test/fts1a.test 46090311f85da51bb33bd5ce84f7948359c6d8d7
F test/tkt3810.test 90fa0635dfa7da9680c8cd3513350a49b3a8ae12
F test/tkt3824.test 3da2f5c81b057e3ff355f5dfc9aa0cf0a92e0206
F test/tkt3832.test 2300d10d57562b89875b72148338ac3e14f8847d
-F test/tkt3838.test 2a1525946bc9d3751e1d49ce95f3a2472f2b7408
+F test/tkt3838.test f956f0719b5f805b12dd1dbf19f19d298bacebc3
F test/tkt3841.test 4659845bc53f809a5932c61c6ce8c5bb9d6b947f
F test/tkt3871.test 43ecbc8d90dc83908e2a454aef345acc9d160c6f
F test/tkt3879.test 2ad5bef2c87e9991ce941e054c31abe26ef7fb90
F test/tkt3922.test 022ace32c049e3964f68492c12eb803e8e4856d8
F test/tkt3929.test 75a862e45bcb39e9a7944c89b92afa531304afca
F test/tkt3935.test e15261fedb9e30a4305a311da614a5d8e693c767
-F test/tkt3992.test 12e5f884524379ec05b0649eda8f2dc9c15f5395
+F test/tkt3992.test f3e7d548ac26f763b47bc0f750da3d03c81071da
F test/tkt3997.test a335fa41ca3985660a139df7b734a26ef53284bd
F test/tkt4018.test 7c2c9ba4df489c676a0a7a0e809a1fb9b2185bd1
F test/tokenize.test ce430a7aed48fc98301611429595883fdfcab5d7
F test/varint.test ab7b110089a08b9926ed7390e7e97bdefeb74102
F test/veryquick.test e265401afefa994cdf2fe4b6f286b1e87c2f9b9d
F test/view.test 45f518205ecdb6dd23a86dd4a99bb4ae945e625d
-F test/vtab1.test e321e3c80434fe8de97fa4ad815882d2c7838d21
+F test/vtab1.test 9bc4a349a1989bcd064eb3b8fac2f06aca64297a
F test/vtab2.test 7bcffc050da5c68f4f312e49e443063e2d391c0d
F test/vtab3.test baad99fd27217f5d6db10660522e0b7192446de1
F test/vtab4.test 942f8b8280b3ea8a41dae20e7822d065ca1cb275
-F test/vtab5.test a0a84a89c622f4e2e816ebf39883dc319b4a1024
+F test/vtab5.test 889f444970393c73f1e077e2bdc5d845e157a391
F test/vtab6.test c7f290d172609d636fbfc58166eadcb55d5c117c
F test/vtab7.test a8c3c3cb3eb60be364991bd714e4927e26c4cd85
F test/vtab8.test e19fa4a538fcd1bb66c22825fa8f71618fb13583
F test/vtabB.test 04df5dc531b9f44d9ca65b9c1b79f12b5922a796
F test/vtabC.test 1cf7896ab6859bfe3074244b2b0e12de5cbdd766
F test/vtabD.test 74167b1578e5886fe4c886d6bef2fd1406444c42
-F test/vtab_alter.test 3a299749fee97ca3d53bd55717f536e4a2284856
+F test/vtab_alter.test 9e374885248f69e251bdaacf480b04a197f125e5
F test/vtab_err.test 0d4d8eb4def1d053ac7c5050df3024fd47a3fbd8
-F test/vtab_shared.test 561305eff0bb574a983c29029ef294a4a895a14c
+F test/vtab_shared.test 0eff9ce4f19facbe0a3e693f6c14b80711a4222d
F test/where.test de337a3fe0a459ec7c93db16a519657a90552330
F test/where2.test 45eacc126aabb37959a387aa83e59ce1f1f03820
F test/where3.test 97d3936e6a443b968f1a61cdcc0f673252000e94
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P 8353808c9e70412fdee31bfda7810e948f1c7485
-R d0e9896e0ec532c989c7902d96591d81
+P 5b4d46374a8e808246a1813c12c36c4a75371898
+R 32675a16ccbf8ba9a57d02ab929283d4
U dan
-Z c982a4c0e50b77ad87726fbdb4e6d971
+Z 3978b535f562bf4c0abfd653652139fb
-5b4d46374a8e808246a1813c12c36c4a75371898
\ No newline at end of file
+e4eb227b14e4bfcb9f7f284692a391b7355f0204
\ No newline at end of file
return zNew;
}
+#if !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER)
/*
** Generate the text of a WHERE expression which can be used to select all
** tables that have foreign key constraints that refer to table pTab (i.e.
}
return zWhere;
}
+#endif
/*
** Generate the text of a WHERE expression which can be used to select all
zTabName = pTab->zName;
nTabName = sqlite3Utf8CharLen(zTabName, -1);
-#ifndef SQLITE_OMIT_FOREIGN_KEY
+#if !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER)
if( db->flags&SQLITE_ForeignKeys ){
/* If foreign-key support is enabled, rewrite the CREATE TABLE
** statements corresponding to all child tables of foreign key constraints
}
#endif
-#ifndef SQLITE_OMIT_FOREIGN_KEY
+#if !defined(SQLITE_OMIT_FOREIGN_KEY) && !defined(SQLITE_OMIT_TRIGGER)
if( db->flags&SQLITE_ForeignKeys ){
FKey *p;
for(p=sqlite3FkReferences(pTab); p; p=p->pNextTo){
# Many of the boundary tests depend on a working 64-bit implementation.
if {![working_64bit_int]} { finish_test; return }
+ifcapable !altertable { finish_test; return }
}
expr srand(0)
# Many of the boundary tests depend on a working 64-bit implementation.
if {![working_64bit_int]} { finish_test; return }
+ifcapable !altertable { finish_test; return }
do_test boundary4-1.1 {
db eval {
# fkey2-14.3*: DROP TABLE
#
drop_all_tables
-do_test fkey2-14.1.1 {
- # Adding a column with a REFERENCES clause is not supported.
- execsql {
- CREATE TABLE t1(a PRIMARY KEY);
- CREATE TABLE t2(a, b);
- }
- catchsql { ALTER TABLE t2 ADD COLUMN c REFERENCES t1 }
-} {0 {}}
-do_test fkey2-14.1.2 {
- catchsql { ALTER TABLE t2 ADD COLUMN d DEFAULT NULL REFERENCES t1 }
-} {0 {}}
-do_test fkey2-14.1.3 {
- catchsql { ALTER TABLE t2 ADD COLUMN e REFERENCES t1 DEFAULT NULL}
-} {0 {}}
-do_test fkey2-14.1.4 {
- catchsql { ALTER TABLE t2 ADD COLUMN f REFERENCES t1 DEFAULT 'text'}
-} {1 {Cannot add a REFERENCES column with non-NULL default value}}
-do_test fkey2-14.1.5 {
- catchsql { ALTER TABLE t2 ADD COLUMN g DEFAULT CURRENT_TIME REFERENCES t1 }
-} {1 {Cannot add a REFERENCES column with non-NULL default value}}
-do_test fkey2-14.1.6 {
- execsql {
- PRAGMA foreign_keys = off;
- ALTER TABLE t2 ADD COLUMN h DEFAULT 'text' REFERENCES t1;
- PRAGMA foreign_keys = on;
- SELECT sql FROM sqlite_master WHERE name='t2';
+ifcapable altertable {
+ do_test fkey2-14.1.1 {
+ # Adding a column with a REFERENCES clause is not supported.
+ execsql {
+ CREATE TABLE t1(a PRIMARY KEY);
+ CREATE TABLE t2(a, b);
+ }
+ catchsql { ALTER TABLE t2 ADD COLUMN c REFERENCES t1 }
+ } {0 {}}
+ do_test fkey2-14.1.2 {
+ catchsql { ALTER TABLE t2 ADD COLUMN d DEFAULT NULL REFERENCES t1 }
+ } {0 {}}
+ do_test fkey2-14.1.3 {
+ catchsql { ALTER TABLE t2 ADD COLUMN e REFERENCES t1 DEFAULT NULL}
+ } {0 {}}
+ do_test fkey2-14.1.4 {
+ catchsql { ALTER TABLE t2 ADD COLUMN f REFERENCES t1 DEFAULT 'text'}
+ } {1 {Cannot add a REFERENCES column with non-NULL default value}}
+ do_test fkey2-14.1.5 {
+ catchsql { ALTER TABLE t2 ADD COLUMN g DEFAULT CURRENT_TIME REFERENCES t1 }
+ } {1 {Cannot add a REFERENCES column with non-NULL default value}}
+ do_test fkey2-14.1.6 {
+ execsql {
+ PRAGMA foreign_keys = off;
+ ALTER TABLE t2 ADD COLUMN h DEFAULT 'text' REFERENCES t1;
+ PRAGMA foreign_keys = on;
+ SELECT sql FROM sqlite_master WHERE name='t2';
+ }
+ } {{CREATE TABLE t2(a, b, c REFERENCES t1, d DEFAULT NULL REFERENCES t1, e REFERENCES t1 DEFAULT NULL, h DEFAULT 'text' REFERENCES t1)}}
+
+
+ # Test the sqlite_rename_parent() function directly.
+ #
+ proc test_rename_parent {zCreate zOld zNew} {
+ db eval {SELECT sqlite_rename_parent($zCreate, $zOld, $zNew)}
}
-} {{CREATE TABLE t2(a, b, c REFERENCES t1, d DEFAULT NULL REFERENCES t1, e REFERENCES t1 DEFAULT NULL, h DEFAULT 'text' REFERENCES t1)}}
-
-
-# Test the sqlite_rename_parent() function directly.
-#
-proc test_rename_parent {zCreate zOld zNew} {
- db eval {SELECT sqlite_rename_parent($zCreate, $zOld, $zNew)}
+ do_test fkey2-14.2.1.1 {
+ test_rename_parent {CREATE TABLE t1(a REFERENCES t2)} t2 t3
+ } {{CREATE TABLE t1(a REFERENCES "t3")}}
+ do_test fkey2-14.2.1.2 {
+ test_rename_parent {CREATE TABLE t1(a REFERENCES t2)} t4 t3
+ } {{CREATE TABLE t1(a REFERENCES t2)}}
+ do_test fkey2-14.2.1.3 {
+ test_rename_parent {CREATE TABLE t1(a REFERENCES "t2")} t2 t3
+ } {{CREATE TABLE t1(a REFERENCES "t3")}}
+
+ # Test ALTER TABLE RENAME TABLE a bit.
+ #
+ do_test fkey2-14.2.2.1 {
+ drop_all_tables
+ execsql {
+ CREATE TABLE t1(a PRIMARY KEY, b REFERENCES t1);
+ CREATE TABLE t2(a PRIMARY KEY, b REFERENCES t1, c REFERENCES t2);
+ CREATE TABLE t3(a REFERENCES t1, b REFERENCES t2, c REFERENCES t1);
+ }
+ execsql { SELECT sql FROM sqlite_master WHERE type = 'table'}
+ } [list \
+ {CREATE TABLE t1(a PRIMARY KEY, b REFERENCES t1)} \
+ {CREATE TABLE t2(a PRIMARY KEY, b REFERENCES t1, c REFERENCES t2)} \
+ {CREATE TABLE t3(a REFERENCES t1, b REFERENCES t2, c REFERENCES t1)} \
+ ]
+ do_test fkey2-14.2.2.2 {
+ execsql { ALTER TABLE t1 RENAME TO t4 }
+ execsql { SELECT sql FROM sqlite_master WHERE type = 'table'}
+ } [list \
+ {CREATE TABLE "t4"(a PRIMARY KEY, b REFERENCES "t4")} \
+ {CREATE TABLE t2(a PRIMARY KEY, b REFERENCES "t4", c REFERENCES t2)} \
+ {CREATE TABLE t3(a REFERENCES "t4", b REFERENCES t2, c REFERENCES "t4")} \
+ ]
+ do_test fkey2-14.2.2.3 {
+ catchsql { INSERT INTO t3 VALUES(1, 2, 3) }
+ } {1 {foreign key constraint failed}}
+ do_test fkey2-14.2.2.4 {
+ execsql { INSERT INTO t4 VALUES(1, NULL) }
+ } {}
+ do_test fkey2-14.2.2.5 {
+ catchsql { UPDATE t4 SET b = 5 }
+ } {1 {foreign key constraint failed}}
+ do_test fkey2-14.2.2.6 {
+ catchsql { UPDATE t4 SET b = 1 }
+ } {0 {}}
+ do_test fkey2-14.2.2.7 {
+ execsql { INSERT INTO t3 VALUES(1, NULL, 1) }
+ } {}
}
-do_test fkey2-14.2.1.1 {
- test_rename_parent {CREATE TABLE t1(a REFERENCES t2)} t2 t3
-} {{CREATE TABLE t1(a REFERENCES "t3")}}
-do_test fkey2-14.2.1.2 {
- test_rename_parent {CREATE TABLE t1(a REFERENCES t2)} t4 t3
-} {{CREATE TABLE t1(a REFERENCES t2)}}
-do_test fkey2-14.2.1.3 {
- test_rename_parent {CREATE TABLE t1(a REFERENCES "t2")} t2 t3
-} {{CREATE TABLE t1(a REFERENCES "t3")}}
-
-# Test ALTER TABLE RENAME TABLE a bit.
-#
-do_test fkey2-14.2.2.1 {
- drop_all_tables
- execsql {
- CREATE TABLE t1(a PRIMARY KEY, b REFERENCES t1);
- CREATE TABLE t2(a PRIMARY KEY, b REFERENCES t1, c REFERENCES t2);
- CREATE TABLE t3(a REFERENCES t1, b REFERENCES t2, c REFERENCES t1);
- }
- execsql { SELECT sql FROM sqlite_master WHERE type = 'table'}
-} [list \
- {CREATE TABLE t1(a PRIMARY KEY, b REFERENCES t1)} \
- {CREATE TABLE t2(a PRIMARY KEY, b REFERENCES t1, c REFERENCES t2)} \
- {CREATE TABLE t3(a REFERENCES t1, b REFERENCES t2, c REFERENCES t1)} \
-]
-do_test fkey2-14.2.2.2 {
- execsql { ALTER TABLE t1 RENAME TO t4 }
- execsql { SELECT sql FROM sqlite_master WHERE type = 'table'}
-} [list \
- {CREATE TABLE "t4"(a PRIMARY KEY, b REFERENCES "t4")} \
- {CREATE TABLE t2(a PRIMARY KEY, b REFERENCES "t4", c REFERENCES t2)} \
- {CREATE TABLE t3(a REFERENCES "t4", b REFERENCES t2, c REFERENCES "t4")} \
-]
-do_test fkey2-14.2.2.3 {
- catchsql { INSERT INTO t3 VALUES(1, 2, 3) }
-} {1 {foreign key constraint failed}}
-do_test fkey2-14.2.2.4 {
- execsql { INSERT INTO t4 VALUES(1, NULL) }
-} {}
-do_test fkey2-14.2.2.5 {
- catchsql { UPDATE t4 SET b = 5 }
-} {1 {foreign key constraint failed}}
-do_test fkey2-14.2.2.6 {
- catchsql { UPDATE t4 SET b = 1 }
-} {0 {}}
-do_test fkey2-14.2.2.7 {
- execsql { INSERT INTO t3 VALUES(1, NULL, 1) }
-} {}
do_test fkey-2.14.3.1 {
drop_all_tables
set testdir [file dirname $argv0]
source $testdir/tester.tcl
-ifcapable {!foreignkey} {
+ifcapable {!foreignkey||!trigger} {
finish_test
return
}
set testdir [file dirname $argv0]
source $testdir/tester.tcl
+ifcapable !altertable {
+ finish_test
+ return
+}
do_test tkt3838-1.1 {
db eval {
}
} {2 1.0}
-do_test tkt3992-2.1 {
- execsql {
- CREATE TABLE t1(a, b);
- INSERT INTO t1 VALUES(1, 2);
- ALTER TABLE t1 ADD COLUMN c DEFAULT 3;
- SELECT * FROM t1;
- }
-} {1 2 3}
-do_test tkt3992-2.2 {
- execsql {
- UPDATE t1 SET a = 'one';
- SELECT * FROM t1;
- }
-} {one 2 3}
+ifcapable altertable {
+ do_test tkt3992-2.1 {
+ execsql {
+ CREATE TABLE t1(a, b);
+ INSERT INTO t1 VALUES(1, 2);
+ ALTER TABLE t1 ADD COLUMN c DEFAULT 3;
+ SELECT * FROM t1;
+ }
+ } {1 2 3}
+ do_test tkt3992-2.2 {
+ execsql {
+ UPDATE t1 SET a = 'one';
+ SELECT * FROM t1;
+ }
+ } {one 2 3}
+}
ifcapable trigger {
db function tcl eval
incr tn
}
-do_test vtab1-16.$tn {
- set echo_module_fail(xRename,t2) "the xRename method has failed"
- catchsql { ALTER TABLE echo_t2 RENAME TO another_name }
-} "1 {echo-vtab-error: the xRename method has failed}"
-unset echo_module_fail(xRename,t2)
-incr tn
+ifcapable altertable {
+ do_test vtab1-16.$tn {
+ set echo_module_fail(xRename,t2) "the xRename method has failed"
+ catchsql { ALTER TABLE echo_t2 RENAME TO another_name }
+ } "1 {echo-vtab-error: the xRename method has failed}"
+ unset echo_module_fail(xRename,t2)
+ incr tn
+}
unset -nocomplain echo_module_begin_fail
finish_test
# Test that it is impossible to add a column to a virtual table.
#
-do_test vtab5.4.2 {
- catchsql {
- ALTER TABLE echo_strings ADD COLUMN col2;
- }
-} {1 {virtual tables may not be altered}}
+ifcapable altertable {
+ do_test vtab5.4.2 {
+ catchsql {
+ ALTER TABLE echo_strings ADD COLUMN col2;
+ }
+ } {1 {virtual tables may not be altered}}
+}
# Test that it is impossible to rename a virtual table.
# UPDATE: It is now possible.
set testdir [file dirname $argv0]
source $testdir/tester.tcl
-ifcapable !vtab {
+ifcapable !vtab||!altertable {
finish_test
return
}
# Try a rename or two.
#
-do_test vtab_shared-1.13.1 {
- execsql { ALTER TABLE t1 RENAME TO t4 }
- execsql { SELECT * FROM t4 } db
-} {1 2 3 4 5 6}
-do_test vtab_shared-1.13.2 {
- execsql { SELECT * FROM t4 } db2
-} {1 2 3 4 5 6}
-do_test vtab_shared-1.13.3 {
- execsql { ALTER TABLE t2 RENAME TO t5 }
- execsql { SELECT * FROM t4 } db2
-} {1 2 3 4 5 6}
+ifcapable altertable {
+ do_test vtab_shared-1.13.1 {
+ execsql { ALTER TABLE t1 RENAME TO t4 }
+ execsql { SELECT * FROM t4 } db
+ } {1 2 3 4 5 6}
+ do_test vtab_shared-1.13.2 {
+ execsql { SELECT * FROM t4 } db2
+ } {1 2 3 4 5 6}
+ do_test vtab_shared-1.13.3 {
+ execsql { ALTER TABLE t2 RENAME TO t5 }
+ execsql { SELECT * FROM t4 } db2
+ } {1 2 3 4 5 6}
+}
# Try an UPDATE/INSERT/DELETE on a shared vtab as the first statement after a
# schema is loaded.