From: danielk1977 Date: Fri, 21 Jan 2005 04:25:47 +0000 (+0000) Subject: Modify test scripts to work when SQLITE_OMIT_SUBQUERY (but no other OMIT macros)... X-Git-Tag: version-3.6.10~3900 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e61b9f4f3cc738645e72beb9a128f7100f1a092f;p=thirdparty%2Fsqlite.git Modify test scripts to work when SQLITE_OMIT_SUBQUERY (but no other OMIT macros) is defined. (CVS 2252) FossilOrigin-Name: d4e19efcef68d834c55c7d496cdb3696d63a31a2 --- diff --git a/manifest b/manifest index 585a095854..2dc93c681d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Modify\stest\sscripts\sto\swork\swhen\sSQLITE_OMIT_SUBQUERY\s(along\swith\sother\sOMIT\smacros)\sis\sdefined.\s(CVS\s2251) -D 2005-01-21T03:12:15 +C Modify\stest\sscripts\sto\swork\swhen\sSQLITE_OMIT_SUBQUERY\s(but\sno\sother\sOMIT\smacros)\sis\sdefined.\s(CVS\s2252) +D 2005-01-21T04:25:47 F Makefile.in ffd81f5e926d40b457071b4de8d7c1fa18f39b5a F Makefile.linux-gcc a9e5a0d309fa7c38e7c14d3ecf7690879d3a5457 F README a01693e454a00cc117967e3f9fdab2d4d52e9bc1 @@ -85,7 +85,7 @@ F src/where.c f4127cc2633ee0f74790ab7f09f5af832489e44e F tclinstaller.tcl 36478c3bbfc5b93ceac42d94e3c736937b808432 F test/all.test 7f0988442ab811dfa41793b5b550f5828ce316f3 F test/alter.test 95c57a4f461fa81293e0dccef7f83889aadb169a -F test/attach.test f39069efd4394422798f249df9a31489aa941ee1 +F test/attach.test 660ed5ed29e864fc6c1710845e939df79467ed34 F test/attach2.test eeb987770f4dbe68bd29afdbc2e8cff0142e6eb5 F test/attach3.test c05c70b933afbde0901dab9da3e66ee842c09f38 F test/auth.test 559e0816b8100740624ebb0ab7aab05f5c92831c @@ -111,7 +111,7 @@ F test/collate1.test f79736d2ebf5492167ee4d1f4ab4c09dda776b03 F test/collate2.test 224a632ba04907c049804b08162efd234aa7871f F test/collate3.test a5ff693872a915fc6267956673d20915485c1829 F test/collate4.test b8668612691c4dcf90f67a8df1eeb1544e7fdaf8 -F test/collate5.test 7999fb3122386bae38acd8ccd61e0b7c5a30e289 +F test/collate5.test 581775b94604b7435dc6a5c6e72fbbf7d69e3830 F test/collate6.test 6c9470d1606ee3e564675b229653e320c49ec638 F test/conflict.test c5b849b01cfbe0a4f63a90cba6f68e2fe3a75f87 F test/corrupt.test 916977f0255c81217a44abe0ac01b8508f65dcbf @@ -124,7 +124,7 @@ F test/delete.test fc29491f6a7ac899ce29f4549a104809e245d9a6 F test/delete2.test e382b6a97787197eb8b93dd4ccd37797c3725ea3 F test/diskfull.test e2f6cfd868713ead06dc82b84a4938e868128fc0 F test/enc.test 7a03417a1051fe8bc6c7641cf4c8c3f7e0066d52 -F test/enc2.test 6d1a2650e9da43eab499d18ca694a0cb6ec69dee +F test/enc2.test e5e95be36676df5ba7c4c4c837cabcdf9fe01f5b F test/enc3.test f6a5f0b7b7f3a88f030d3143729b87cd5c86d837 F test/expr.test b2ce68f4b3298dd06867468b770ca2604068014e F test/fkey1.test 81bb13caaa78f58d7d191d7f535529f7c91d821a @@ -139,23 +139,23 @@ F test/insert3.test fa7cb5b01709a1bca3e28c82c80c1d44386b3676 F test/interrupt.test 5b4d8389e6cf2d01b94f87cfd02d9df1073bfb2d F test/intpkey.test b57cf5236fde1bd8cbc1388fa0c91908f6fd9194 F test/ioerr.test fb507c2596bb07aeaff257cb48fcc93340159f0c -F test/join.test a61c9328ef0b2b573e1ea803882cb947b870d131 +F test/join.test 95ee10ed1a6158020f4374016594303d4f75ee76 F test/join2.test f2171c265e57ee298a27e57e7051d22962f9f324 F test/join3.test 6f0c774ff1ba0489e6c88a3e77b9d3528fb4fda0 F test/join4.test cc6cafe85e11aacacd0abcd247a46bed251308f8 F test/lastinsert.test b6a1db3e1ce2d3f0d6afe99d445084f543b6feaa F test/laststmtchanges.test 07cbdabc52407c29e40abc25050f2434f044a6b1 -F test/limit.test 9913f3cc797841098209e09f9fb259e5198ad2da +F test/limit.test f833e610ab26c618487c36f62baf6458f9284ce6 F test/lock.test a19aab9a963273fe61c1058e3d1b648d6a0a2425 F test/lock2.test 59c3dd7d9b24d1bf7ec91b2d1541c37e97939d5f F test/lock3.test 615111293cf32aa2ed16d01c6611737651c96fb9 F test/main.test a60a1d234b5f5784097973bd395514ca56003ef1 F test/malloc.test 180f7f7e19aca748ec923ab4ada6a2976b781722 -F test/memdb.test 532aac7128a3da494cddc4461d76c6e3988f771b +F test/memdb.test 1860e060be810bf0775bc57408a5b7c4954bcaea F test/memleak.test c0af09191af44a7501ec2494fdd079ac538a256c -F test/minmax.test b723a302c8c9bfa9fa417ba6f2f43c663bd8479e -F test/misc1.test e4d9edd525d859932ac70d3fad60fa1303c6f6e5 -F test/misc2.test 51f45f56af2d7d38238dc3d38eeb6342a2f4bb09 +F test/minmax.test 9429a06f1f93acf76fcacafd17160a4392e88526 +F test/misc1.test ff817d3740458884fea535b44821ec7e84700457 +F test/misc2.test fc052267d5178367f955538ae34aae1b2f696a92 F test/misc3.test 7bd937e2c62bcc6be71939faf068d506467b1e03 F test/misc4.test 145e301fdf10bd47059132db932523814201dc2a F test/misuse.test 600738a8e611989bc5f544303f5e311c5f228084 @@ -174,10 +174,10 @@ F test/reindex.test 3552c6b944a3fab28cfd3049c04c65cb79419757 F test/rollback.test 94cd981ee3a627d9f6466f69dcf1f7dbfe695d7a F test/rowid.test 040a3bef06f970c45f5fcd14b2355f7f4d62f0cf F test/safety.test 907b64fee719554a3622853812af3886fddbbb4f -F test/select1.test bb62bfcd4f3cbba385185d0c0929c3408c43b00a +F test/select1.test ad700a2a1c325a23a7206ad4d189e33917de526f F test/select2.test 91a2225926039b0d1687840735c284dbbf89f0bc F test/select3.test 9de435aa84fc406708cd8dc1b1d60e7f27cea685 -F test/select4.test 1ae6f2bd6177d4428df8644eb95d09f4568fb149 +F test/select4.test c239f516aa31f42f2ef7c6d7cd01105f08f934ca F test/select5.test 94db800bbeff2e426c0175e07f7a71d4617853b5 F test/select6.test ba1b4dd18a85bf9070c6df8d933ac4cfcacea6a6 F test/select7.test 63fb77d50f4dfdac4d4115842f083d2eb33a198c @@ -194,8 +194,8 @@ F test/threadtest1.c 6029d9c5567db28e6dc908a0c63099c3ba6c383b F test/threadtest2.c 97a830d53c24c42290501fdfba4a6e5bdd34748b F test/trace.test a54fa8df0d01cf827289a7659d78959e8fd2f955 F test/trans.test 29645b344d2b9b6792793562b12340177ddd8f96 -F test/trigger1.test 98239dd6a8baf6817a028aa8d41c7da17c6824b1 -F test/trigger2.test 534390be509127859fee7c23018f03b9bf21a88f +F test/trigger1.test 9db1a7c91930baa2dc60ce72c7e969900bf2ae8a +F test/trigger2.test 52ae91097801291771da9db60be60a65e1360a65 F test/trigger3.test 9102fd3933db294dc654b5aee9edfe9e94f2b9e2 F test/trigger4.test e7c0812b14750754602468f15495260e8c6625e0 F test/trigger5.test 619391a3e9fc194081d22cefd830d811e7badf83 @@ -207,7 +207,7 @@ F test/update.test 7669ca789d62c258b678e8aa7a22a57eac10f2cf F test/utf16.test 459c2f5ab80c60092c603630a348c32d6e59c558 F test/vacuum.test f18eccdee5b538d46298c64d6a060cfbf97bbc23 F test/varint.test ab7b110089a08b9926ed7390e7e97bdefeb74102 -F test/view.test 3f96df86f1c61ee850b945204683773bbbb8643e +F test/view.test 5aac4c79eb86e297a53c8c4a2543dc193034e66d F test/where.test ffb790dfda75d977bae7a1f5830351623f76861b F tool/diffdb.c 7524b1b5df217c20cd0431f6789851a4e0cb191b F tool/lemon.c eb3b2bbefc0d442fa459f4f1924e598e804eca9c @@ -271,7 +271,7 @@ F www/tclsqlite.tcl e73f8f8e5f20e8277619433f7970060ab01088fc F www/vdbe.tcl 095f106d93875c94b47367384ebc870517431618 F www/version3.tcl 092a01f5ef430d2c4acc0ae558d74c4bb89638a0 F www/whentouse.tcl 3e522a06ad41992023c80ca29a048ae2331ca5bd -P de8ee3a29e1aafcfa05841cb44da0a05f0579596 -R 617b6e607d17d790bf84f6e775c7d625 +P bb0254ab14417f0ab40f10f37cb63a60507f070a +R 2ca411fe266afa1cd45463edd41babae U danielk1977 -Z 3efedbe6a0ea0314bb3302f4acfcc917 +Z f5d13d8f7ccd862886011c686ad3e5a3 diff --git a/manifest.uuid b/manifest.uuid index a7ac2070b7..c277e9630f 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -bb0254ab14417f0ab40f10f37cb63a60507f070a \ No newline at end of file +d4e19efcef68d834c55c7d496cdb3696d63a31a2 \ No newline at end of file diff --git a/test/attach.test b/test/attach.test index 5f01fa9b44..ed5525ebd6 100644 --- a/test/attach.test +++ b/test/attach.test @@ -12,7 +12,7 @@ # focus of this script is testing the ATTACH and DETACH commands # and related functionality. # -# $Id: attach.test,v 1.32 2004/11/23 10:13:03 danielk1977 Exp $ +# $Id: attach.test,v 1.33 2005/01/21 04:25:47 danielk1977 Exp $ # set testdir [file dirname $argv0] @@ -613,48 +613,50 @@ do_test attach-5.4 { END; } db2 } {1 {trigger r5 cannot reference objects in database temp}} -do_test attach-5.5 { - catchsql { - CREATE TRIGGER r5 AFTER INSERT ON t5 BEGIN - SELECT 'no-op' || (SELECT * FROM temp.t6); - END; - } db2 -} {1 {trigger r5 cannot reference objects in database temp}} -do_test attach-5.6 { - catchsql { - CREATE TRIGGER r5 AFTER INSERT ON t5 BEGIN - SELECT 'no-op' FROM t1 WHERE x<(SELECT min(x) FROM temp.t6); - END; - } db2 -} {1 {trigger r5 cannot reference objects in database temp}} -do_test attach-5.7 { - catchsql { - CREATE TRIGGER r5 AFTER INSERT ON t5 BEGIN - SELECT 'no-op' FROM t1 GROUP BY 1 HAVING x<(SELECT min(x) FROM temp.t6); - END; - } db2 -} {1 {trigger r5 cannot reference objects in database temp}} -do_test attach-5.7 { - catchsql { - CREATE TRIGGER r5 AFTER INSERT ON t5 BEGIN - SELECT max(1,x,(SELECT min(x) FROM temp.t6)) FROM t1; - END; - } db2 -} {1 {trigger r5 cannot reference objects in database temp}} -do_test attach-5.8 { - catchsql { - CREATE TRIGGER r5 AFTER INSERT ON t5 BEGIN - INSERT INTO t1 VALUES((SELECT min(x) FROM temp.t6),5); - END; - } db2 -} {1 {trigger r5 cannot reference objects in database temp}} -do_test attach-5.9 { - catchsql { - CREATE TRIGGER r5 AFTER INSERT ON t5 BEGIN - DELETE FROM t1 WHERE x<(SELECT min(x) FROM temp.t6); - END; - } db2 -} {1 {trigger r5 cannot reference objects in database temp}} +ifcapable subquery { + do_test attach-5.5 { + catchsql { + CREATE TRIGGER r5 AFTER INSERT ON t5 BEGIN + SELECT 'no-op' || (SELECT * FROM temp.t6); + END; + } db2 + } {1 {trigger r5 cannot reference objects in database temp}} + do_test attach-5.6 { + catchsql { + CREATE TRIGGER r5 AFTER INSERT ON t5 BEGIN + SELECT 'no-op' FROM t1 WHERE x<(SELECT min(x) FROM temp.t6); + END; + } db2 + } {1 {trigger r5 cannot reference objects in database temp}} + do_test attach-5.7 { + catchsql { + CREATE TRIGGER r5 AFTER INSERT ON t5 BEGIN + SELECT 'no-op' FROM t1 GROUP BY 1 HAVING x<(SELECT min(x) FROM temp.t6); + END; + } db2 + } {1 {trigger r5 cannot reference objects in database temp}} + do_test attach-5.7 { + catchsql { + CREATE TRIGGER r5 AFTER INSERT ON t5 BEGIN + SELECT max(1,x,(SELECT min(x) FROM temp.t6)) FROM t1; + END; + } db2 + } {1 {trigger r5 cannot reference objects in database temp}} + do_test attach-5.8 { + catchsql { + CREATE TRIGGER r5 AFTER INSERT ON t5 BEGIN + INSERT INTO t1 VALUES((SELECT min(x) FROM temp.t6),5); + END; + } db2 + } {1 {trigger r5 cannot reference objects in database temp}} + do_test attach-5.9 { + catchsql { + CREATE TRIGGER r5 AFTER INSERT ON t5 BEGIN + DELETE FROM t1 WHERE x<(SELECT min(x) FROM temp.t6); + END; + } db2 + } {1 {trigger r5 cannot reference objects in database temp}} +} ;# endif subquery } ;# endif trigger # Check to make sure we get a sensible error if unable to open diff --git a/test/collate5.test b/test/collate5.test index 7145ab6757..13ac1f2e4a 100644 --- a/test/collate5.test +++ b/test/collate5.test @@ -14,7 +14,7 @@ # SELECT statements that use user-defined collation sequences. Also # GROUP BY clauses that use user-defined collation sequences. # -# $Id: collate5.test,v 1.2 2004/11/22 13:35:42 danielk1977 Exp $ +# $Id: collate5.test,v 1.3 2005/01/21 04:25:47 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -181,11 +181,10 @@ do_test collate5-2.4.0 { foreach ii $::lens { execsql "INSERT INTO collate5t3 VALUES($ii, '[string repeat a $ii]');" } - execsql { + expr [llength [execsql { COMMIT; - SELECT count(*) FROM - (SELECT * FROM collate5t3 UNION SELECT * FROM collate5t3); - } + SELECT * FROM collate5t3 UNION SELECT * FROM collate5t3; + }]] / 2 } [llength $::lens] do_test collate5-2.4.1 { execsql {DROP TABLE collate5t3;} diff --git a/test/enc2.test b/test/enc2.test index 4931783d85..3bdcf72e8d 100644 --- a/test/enc2.test +++ b/test/enc2.test @@ -13,7 +13,7 @@ # various suported unicode encodings (UTF-8, UTF-16, UTF-16le and # UTF-16be). # -# $Id: enc2.test,v 1.19 2004/11/14 04:04:18 drh Exp $ +# $Id: enc2.test,v 1.20 2005/01/21 04:25:47 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -102,11 +102,13 @@ do_test $t.5 { SELECT * FROM t1 WHERE a = 'four'; } } {four IV 4} -do_test $t.6 { - execsql { - SELECT * FROM t1 WHERE a IN ('one', 'two'); - } -} {one I 1 two II 2} +ifcapable subquery { + do_test $t.6 { + execsql { + SELECT * FROM t1 WHERE a IN ('one', 'two'); + } + } {one I 1 two II 2} +} # Now check that we can retrieve data in both UTF-16 and UTF-8 do_test $t.7 { diff --git a/test/join.test b/test/join.test index 6cf536d2f9..3bd9423732 100644 --- a/test/join.test +++ b/test/join.test @@ -12,7 +12,7 @@ # # This file implements tests for joins, including outer joins. # -# $Id: join.test,v 1.16 2005/01/21 03:12:16 danielk1977 Exp $ +# $Id: join.test,v 1.17 2005/01/21 04:25:47 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -374,12 +374,14 @@ do_test join-8.1 { SELECT * FROM t9 LEFT JOIN v10_11 ON( a=x ); } } {1 11 1 111 2 22 {} {}} -do_test join-8.2 { - execsql { - SELECT * FROM t9 LEFT JOIN (SELECT x, q FROM t10, t11 WHERE t10.y=t11.p) - ON( a=x); - } -} {1 11 1 111 2 22 {} {}} +ifcapable subquery { + do_test join-8.2 { + execsql { + SELECT * FROM t9 LEFT JOIN (SELECT x, q FROM t10, t11 WHERE t10.y=t11.p) + ON( a=x); + } + } {1 11 1 111 2 22 {} {}} +} do_test join-8.3 { execsql { SELECT * FROM v10_11 LEFT JOIN t9 ON( a=x ); @@ -407,20 +409,25 @@ do_test join-9.1 { CREATE TABLE t13(b,c); INSERT INTO t13 VALUES(22,222); COMMIT; - SELECT * FROM t12 NATURAL LEFT JOIN t13 - EXCEPT - SELECT * FROM t12 NATURAL LEFT JOIN (SELECT * FROM t13 WHERE b>0); } } {} -ifcapable view { -do_test join-9.2 { - execsql { - CREATE VIEW v13 AS SELECT * FROM t13 WHERE b>0; + +ifcapable subquery { + do_test join-9.1.1 { SELECT * FROM t12 NATURAL LEFT JOIN t13 EXCEPT - SELECT * FROM t12 NATURAL LEFT JOIN v13; - } -} {} + SELECT * FROM t12 NATURAL LEFT JOIN (SELECT * FROM t13 WHERE b>0); + } {} +} +ifcapable view { + do_test join-9.2 { + execsql { + CREATE VIEW v13 AS SELECT * FROM t13 WHERE b>0; + SELECT * FROM t12 NATURAL LEFT JOIN t13 + EXCEPT + SELECT * FROM t12 NATURAL LEFT JOIN v13; + } + } {} } ;# ifcapable view } ;# ifcapable compound diff --git a/test/limit.test b/test/limit.test index 733ea6f196..b694df7785 100644 --- a/test/limit.test +++ b/test/limit.test @@ -12,7 +12,7 @@ # focus of this file is testing the LIMIT ... OFFSET ... clause # of SELECT statements. # -# $Id: limit.test,v 1.22 2005/01/21 03:12:16 danielk1977 Exp $ +# $Id: limit.test,v 1.23 2005/01/21 04:25:47 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -65,13 +65,13 @@ do_test limit-1.7 { execsql {SELECT * FROM t1 AS a, t1 AS b ORDER BY a.x, b.x LIMIT 5 OFFSET 32} } {1 5 0 5 1 5 1 5 1 5 2 5 1 5 3 5 1 5 4 5} -ifcapable view { -do_test limit-2.1 { - execsql { - CREATE VIEW v1 AS SELECT * FROM t1 LIMIT 2; - SELECT count(*) FROM (SELECT * FROM v1); - } -} 2 +ifcapable {view && subquery} { + do_test limit-2.1 { + execsql { + CREATE VIEW v1 AS SELECT * FROM t1 LIMIT 2; + SELECT count(*) FROM (SELECT * FROM v1); + } + } 2 } ;# ifcapable view do_test limit-2.2 { execsql { diff --git a/test/memdb.test b/test/memdb.test index 3de7f13e16..0052ce2e37 100644 --- a/test/memdb.test +++ b/test/memdb.test @@ -11,7 +11,7 @@ # This file implements regression tests for SQLite library. The # focus of this script is in-memory database backend. # -# $Id: memdb.test,v 1.12 2004/11/22 13:35:42 danielk1977 Exp $ +# $Id: memdb.test,v 1.13 2005/01/21 04:25:47 danielk1977 Exp $ set testdir [file dirname $argv0] @@ -348,27 +348,29 @@ do_test memdb-6.15 { } } {} -do_test memdb-7.1 { - execsql { - CREATE TABLE t6(x); - INSERT INTO t6 VALUES(1); - INSERT INTO t6 SELECT x+1 FROM t6; - INSERT INTO t6 SELECT x+2 FROM t6; - INSERT INTO t6 SELECT x+4 FROM t6; - INSERT INTO t6 SELECT x+8 FROM t6; - INSERT INTO t6 SELECT x+16 FROM t6; - INSERT INTO t6 SELECT x+32 FROM t6; - INSERT INTO t6 SELECT x+64 FROM t6; - INSERT INTO t6 SELECT x+128 FROM t6; - SELECT count(*) FROM (SELECT DISTINCT x FROM t6); +ifcapable subquery { + do_test memdb-7.1 { + execsql { + CREATE TABLE t6(x); + INSERT INTO t6 VALUES(1); + INSERT INTO t6 SELECT x+1 FROM t6; + INSERT INTO t6 SELECT x+2 FROM t6; + INSERT INTO t6 SELECT x+4 FROM t6; + INSERT INTO t6 SELECT x+8 FROM t6; + INSERT INTO t6 SELECT x+16 FROM t6; + INSERT INTO t6 SELECT x+32 FROM t6; + INSERT INTO t6 SELECT x+64 FROM t6; + INSERT INTO t6 SELECT x+128 FROM t6; + SELECT count(*) FROM (SELECT DISTINCT x FROM t6); + } + } {256} + for {set i 1} {$i<=256} {incr i} { + do_test memdb-7.2.$i { + execsql "DELETE FROM t6 WHERE x=\ + (SELECT x FROM t6 ORDER BY random() LIMIT 1)" + execsql {SELECT count(*) FROM t6} + } [expr {256-$i}] } -} {256} -for {set i 1} {$i<=256} {incr i} { - do_test memdb-7.2.$i { - execsql "DELETE FROM t6 WHERE x=\ - (SELECT x FROM t6 ORDER BY random() LIMIT 1)" - execsql {SELECT count(*) FROM t6} - } [expr {256-$i}] } } ;# ifcapable memorydb diff --git a/test/minmax.test b/test/minmax.test index 7e53a0ae9c..fd0ba4ec19 100644 --- a/test/minmax.test +++ b/test/minmax.test @@ -13,7 +13,7 @@ # aggregate min() and max() functions and which are handled as # as a special case. # -# $Id: minmax.test,v 1.15 2005/01/21 03:12:16 danielk1977 Exp $ +# $Id: minmax.test,v 1.16 2005/01/21 04:25:47 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -134,27 +134,27 @@ do_test minmax-3.3 { set sqlite_search_count } {0} -ifcapable compound { -do_test minmax-4.1 { - execsql { - SELECT coalesce(min(x+0),-1), coalesce(max(x+0),-1) FROM - (SELECT * FROM t1 UNION SELECT NULL as 'x', NULL as 'y') - } -} {1 20} -do_test minmax-4.2 { - execsql { - SELECT y, sum(x) FROM - (SELECT null, y+1 FROM t1 UNION SELECT * FROM t1) - GROUP BY y ORDER BY y; - } -} {1 1.0 2 5.0 3 22.0 4 92.0 5 90.0 6 0.0} -do_test minmax-4.3 { - execsql { - SELECT y, count(x), count(*) FROM - (SELECT null, y+1 FROM t1 UNION SELECT * FROM t1) - GROUP BY y ORDER BY y; - } -} {1 1 1 2 2 3 3 4 5 4 8 9 5 5 6 6 0 1} +ifcapable {compound && subquery} { + do_test minmax-4.1 { + execsql { + SELECT coalesce(min(x+0),-1), coalesce(max(x+0),-1) FROM + (SELECT * FROM t1 UNION SELECT NULL as 'x', NULL as 'y') + } + } {1 20} + do_test minmax-4.2 { + execsql { + SELECT y, sum(x) FROM + (SELECT null, y+1 FROM t1 UNION SELECT * FROM t1) + GROUP BY y ORDER BY y; + } + } {1 1.0 2 5.0 3 22.0 4 92.0 5 90.0 6 0.0} + do_test minmax-4.3 { + execsql { + SELECT y, count(x), count(*) FROM + (SELECT null, y+1 FROM t1 UNION SELECT * FROM t1) + GROUP BY y ORDER BY y; + } + } {1 1 1 2 2 3 3 4 5 4 8 9 5 5 6 6 0 1} } ;# ifcapable compound # Make sure the min(x) and max(x) optimizations work on empty tables @@ -279,22 +279,22 @@ do_test minmax-8.2 { # Ticket #658: Test the min()/max() optimization when the FROM clause # is a subquery. # -ifcapable compound { -do_test minmax-9.1 { - execsql { - SELECT max(rowid) FROM ( - SELECT max(rowid) FROM t4 UNION SELECT max(rowid) FROM t5 - ) - } -} {1} -do_test minmax-9.2 { - execsql { - SELECT max(rowid) FROM ( - SELECT max(rowid) FROM t4 EXCEPT SELECT max(rowid) FROM t5 - ) - } -} {{}} -} ;# ifcapable compound +ifcapable {compound && subquery} { + do_test minmax-9.1 { + execsql { + SELECT max(rowid) FROM ( + SELECT max(rowid) FROM t4 UNION SELECT max(rowid) FROM t5 + ) + } + } {1} + do_test minmax-9.2 { + execsql { + SELECT max(rowid) FROM ( + SELECT max(rowid) FROM t4 EXCEPT SELECT max(rowid) FROM t5 + ) + } + } {{}} +} ;# ifcapable compound&&subquery # If there is a NULL in an aggregate max() or min(), ignore it. An # aggregate min() or max() will only return NULL if all values are NULL. diff --git a/test/misc1.test b/test/misc1.test index be3ab7ca36..ef32f09886 100644 --- a/test/misc1.test +++ b/test/misc1.test @@ -13,7 +13,7 @@ # This file implements tests for miscellanous features that were # left out of other test files. # -# $Id: misc1.test,v 1.32 2005/01/21 03:12:16 danielk1977 Exp $ +# $Id: misc1.test,v 1.33 2005/01/21 04:25:47 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -554,7 +554,7 @@ do_test misc1-17.1 { END; INSERT INTO TempTable(TestString) VALUES ('1'); INSERT INTO TempTable(TestString) VALUES ('2'); - UPDATE TempTable SET TestString = TestString + 1 WHERE TestID IN (1, 2); + UPDATE TempTable SET TestString = TestString + 1 WHERE TestID=1 OR TestId=2; COMMIT; SELECT TestString FROM RealTable ORDER BY 1; } diff --git a/test/misc2.test b/test/misc2.test index 6a22b613a6..85e4032ca1 100644 --- a/test/misc2.test +++ b/test/misc2.test @@ -13,7 +13,7 @@ # This file implements tests for miscellanous features that were # left out of other test files. # -# $Id: misc2.test,v 1.19 2005/01/20 02:17:02 danielk1977 Exp $ +# $Id: misc2.test,v 1.20 2005/01/21 04:25:47 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -49,17 +49,19 @@ do_test misc2-2.1 { } } {} ifcapable view { -do_test misc2-2.2 { - execsql { - SELECT rowid, * FROM (SELECT * FROM t1, t2); - } -} {{} 1 2 3 7 8 9} -do_test misc2-2.3 { - execsql { - CREATE VIEW v1 AS SELECT * FROM t1, t2; - SELECT rowid, * FROM v1; + ifcapable subquery { + do_test misc2-2.2 { + execsql { + SELECT rowid, * FROM (SELECT * FROM t1, t2); + } + } {{} 1 2 3 7 8 9} } -} {{} 1 2 3 7 8 9} + do_test misc2-2.3 { + execsql { + CREATE VIEW v1 AS SELECT * FROM t1, t2; + SELECT rowid, * FROM v1; + } + } {{} 1 2 3 7 8 9} } ;# ifcapable view # Check name binding precedence. Ticket #387 diff --git a/test/select1.test b/test/select1.test index 13ccf0301d..0f12ecf57b 100644 --- a/test/select1.test +++ b/test/select1.test @@ -11,7 +11,7 @@ # This file implements regression tests for SQLite library. The # focus of this file is testing the SELECT statement. # -# $Id: select1.test,v 1.41 2005/01/21 03:12:16 danielk1977 Exp $ +# $Id: select1.test,v 1.42 2005/01/21 04:25:47 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -782,21 +782,21 @@ ifcapable subquery { } {} } -ifcapable compound { -do_test select1-12.9 { - execsql2 { - SELECT x FROM ( - SELECT a,b FROM t3 UNION SELECT a AS 'x', b AS 'y' FROM t4 ORDER BY a,b - ) ORDER BY x; - } -} {x 1 x 3} -do_test select1-12.10 { - execsql2 { - SELECT z.x FROM ( - SELECT a,b FROM t3 UNION SELECT a AS 'x', b AS 'y' FROM t4 ORDER BY a,b - ) AS 'z' ORDER BY x; - } -} {x 1 x 3} +ifcapable {compound && subquery} { + do_test select1-12.9 { + execsql2 { + SELECT x FROM ( + SELECT a,b FROM t3 UNION SELECT a AS 'x', b AS 'y' FROM t4 ORDER BY a,b + ) ORDER BY x; + } + } {x 1 x 3} + do_test select1-12.10 { + execsql2 { + SELECT z.x FROM ( + SELECT a,b FROM t3 UNION SELECT a AS 'x', b AS 'y' FROM t4 ORDER BY a,b + ) AS 'z' ORDER BY x; + } + } {x 1 x 3} } ;# ifcapable compound diff --git a/test/select4.test b/test/select4.test index 423f352d28..7ceb564aba 100644 --- a/test/select4.test +++ b/test/select4.test @@ -12,7 +12,7 @@ # focus of this file is testing UNION, INTERSECT and EXCEPT operators # in SELECT statements. # -# $Id: select4.test,v 1.17 2004/11/22 13:35:42 danielk1977 Exp $ +# $Id: select4.test,v 1.18 2005/01/21 04:25:47 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -95,14 +95,16 @@ do_test select4-1.1g { } } {0 1 2 3 4 5 3 4} execsql {DROP TABLE t2} -do_test select4-1.2 { - execsql { - SELECT log FROM t1 WHERE n IN - (SELECT DISTINCT log FROM t1 UNION ALL - SELECT n FROM t1 WHERE log=3) - ORDER BY log; - } -} {0 1 2 2 3 3 3 3} +ifcapable subquery { + do_test select4-1.2 { + execsql { + SELECT log FROM t1 WHERE n IN + (SELECT DISTINCT log FROM t1 UNION ALL + SELECT n FROM t1 WHERE log=3) + ORDER BY log; + } + } {0 1 2 2 3 3 3 3} +} do_test select4-1.3 { set v [catch {execsql { SELECT DISTINCT log FROM t1 ORDER BY log @@ -123,14 +125,16 @@ do_test select4-2.1 { ORDER BY log; } } {0 1 2 3 4 5 6 7 8} -do_test select4-2.2 { - execsql { - SELECT log FROM t1 WHERE n IN - (SELECT DISTINCT log FROM t1 UNION - SELECT n FROM t1 WHERE log=3) - ORDER BY log; - } -} {0 1 2 2 3 3 3 3} +ifcapable subquery { + do_test select4-2.2 { + execsql { + SELECT log FROM t1 WHERE n IN + (SELECT DISTINCT log FROM t1 UNION + SELECT n FROM t1 WHERE log=3) + ORDER BY log; + } + } {0 1 2 2 3 3 3 3} +} do_test select4-2.3 { set v [catch {execsql { SELECT DISTINCT log FROM t1 ORDER BY log @@ -173,14 +177,16 @@ do_test select4-3.1.3 { } } {4 3 2 1 0} execsql {DROP TABLE t2} -do_test select4-3.2 { - execsql { - SELECT log FROM t1 WHERE n IN - (SELECT DISTINCT log FROM t1 EXCEPT - SELECT n FROM t1 WHERE log=3) - ORDER BY log; - } -} {0 1 2 2} +ifcapable subquery { + do_test select4-3.2 { + execsql { + SELECT log FROM t1 WHERE n IN + (SELECT DISTINCT log FROM t1 EXCEPT + SELECT n FROM t1 WHERE log=3) + ORDER BY log; + } + } {0 1 2 2} +} do_test select4-3.3 { set v [catch {execsql { SELECT DISTINCT log FROM t1 ORDER BY log @@ -232,14 +238,16 @@ do_test select4-4.1.4 { } } {6 5} execsql {DROP TABLE t2} -do_test select4-4.2 { - execsql { - SELECT log FROM t1 WHERE n IN - (SELECT DISTINCT log FROM t1 INTERSECT - SELECT n FROM t1 WHERE log=3) - ORDER BY log; - } -} {3} +ifcapable subquery { + do_test select4-4.2 { + execsql { + SELECT log FROM t1 WHERE n IN + (SELECT DISTINCT log FROM t1 INTERSECT + SELECT n FROM t1 WHERE log=3) + ORDER BY log; + } + } {3} +} do_test select4-4.3 { set v [catch {execsql { SELECT DISTINCT log FROM t1 ORDER BY log @@ -414,27 +422,29 @@ do_test select4-6.3.1 { # Make sure the DISTINCT keyword treats NULLs as indistinct. # -do_test select4-6.4 { - execsql { - SELECT * FROM ( - SELECT NULL, 1 UNION ALL SELECT NULL, 1 - ); - } -} {{} 1 {} 1} -do_test select4-6.5 { - execsql { - SELECT DISTINCT * FROM ( - SELECT NULL, 1 UNION ALL SELECT NULL, 1 - ); - } -} {{} 1} -do_test select4-6.6 { - execsql { - SELECT DISTINCT * FROM ( - SELECT 1,2 UNION ALL SELECT 1,2 - ); - } -} {1 2} +ifcapable subquery { + do_test select4-6.4 { + execsql { + SELECT * FROM ( + SELECT NULL, 1 UNION ALL SELECT NULL, 1 + ); + } + } {{} 1 {} 1} + do_test select4-6.5 { + execsql { + SELECT DISTINCT * FROM ( + SELECT NULL, 1 UNION ALL SELECT NULL, 1 + ); + } + } {{} 1} + do_test select4-6.6 { + execsql { + SELECT DISTINCT * FROM ( + SELECT 1,2 UNION ALL SELECT 1,2 + ); + } + } {1 2} +} # Test distinctness of NULL in other ways. # @@ -454,24 +464,26 @@ do_test select4-7.1 { SELECT * FROM t2 ORDER BY x; } } {0 1 1 1 2 2 3 4 4 8 5 15} -do_test select4-7.2 { - execsql2 { - SELECT * FROM t1 WHERE n IN (SELECT n FROM t1 INTERSECT SELECT x FROM t2) - ORDER BY n - } -} {n 1 log 0 n 2 log 1 n 3 log 2 n 4 log 2 n 5 log 3} -do_test select4-7.3 { - execsql2 { - SELECT * FROM t1 WHERE n IN (SELECT n FROM t1 EXCEPT SELECT x FROM t2) - ORDER BY n LIMIT 2 - } -} {n 6 log 3 n 7 log 3} -do_test select4-7.4 { - execsql2 { - SELECT * FROM t1 WHERE n IN (SELECT n FROM t1 UNION SELECT x FROM t2) - ORDER BY n LIMIT 2 - } -} {n 1 log 0 n 2 log 1} +ifcapable subquery { + do_test select4-7.2 { + execsql2 { + SELECT * FROM t1 WHERE n IN (SELECT n FROM t1 INTERSECT SELECT x FROM t2) + ORDER BY n + } + } {n 1 log 0 n 2 log 1 n 3 log 2 n 4 log 2 n 5 log 3} + do_test select4-7.3 { + execsql2 { + SELECT * FROM t1 WHERE n IN (SELECT n FROM t1 EXCEPT SELECT x FROM t2) + ORDER BY n LIMIT 2 + } + } {n 6 log 3 n 7 log 3} + do_test select4-7.4 { + execsql2 { + SELECT * FROM t1 WHERE n IN (SELECT n FROM t1 UNION SELECT x FROM t2) + ORDER BY n LIMIT 2 + } + } {n 1 log 0 n 2 log 1} +} ;# ifcapable subquery } ;# ifcapable compound diff --git a/test/trigger1.test b/test/trigger1.test index 3118ba02cd..e80579e425 100644 --- a/test/trigger1.test +++ b/test/trigger1.test @@ -141,7 +141,7 @@ do_test trigger1-1.10 { create trigger r1 after delete on t1 for each row begin delete from t1 WHERE a=old.a+2; end; - delete from t1 where a in (1,3); + delete from t1 where a=1 OR a=3; select * from t1; drop table t1; } @@ -157,7 +157,7 @@ do_test trigger1-1.11 { create trigger r1 after update on t1 for each row begin delete from t1 WHERE a=old.a+2; end; - update t1 set b='x-' || b where a in (1,3); + update t1 set b='x-' || b where a=1 OR a=3; select * from t1; drop table t1; } diff --git a/test/trigger2.test b/test/trigger2.test index 66bd60a8ff..be70bd7f10 100644 --- a/test/trigger2.test +++ b/test/trigger2.test @@ -55,151 +55,153 @@ ifcapable {!trigger} { } # 1. -set ii 0 -foreach tbl_defn { - {CREATE TEMP TABLE tbl (a, b);} - {CREATE TABLE tbl (a, b);} - {CREATE TABLE tbl (a INTEGER PRIMARY KEY, b);} - {CREATE TEMPORARY TABLE tbl (a INTEGER PRIMARY KEY, b);} - {CREATE TABLE tbl (a, b PRIMARY KEY);} - {CREATE TABLE tbl (a, b); CREATE INDEX tbl_idx ON tbl(b);} - {CREATE TEMP TABLE tbl (a, b); CREATE INDEX tbl_idx ON tbl(b);} -} { - incr ii - catchsql { DROP INDEX tbl_idx; } +ifcapable subquery { + set ii 0 + foreach tbl_defn { + {CREATE TEMP TABLE tbl (a, b);} + {CREATE TABLE tbl (a, b);} + {CREATE TABLE tbl (a INTEGER PRIMARY KEY, b);} + {CREATE TEMPORARY TABLE tbl (a INTEGER PRIMARY KEY, b);} + {CREATE TABLE tbl (a, b PRIMARY KEY);} + {CREATE TABLE tbl (a, b); CREATE INDEX tbl_idx ON tbl(b);} + {CREATE TEMP TABLE tbl (a, b); CREATE INDEX tbl_idx ON tbl(b);} + } { + incr ii + catchsql { DROP INDEX tbl_idx; } + catchsql { + DROP TABLE rlog; + DROP TABLE clog; + DROP TABLE tbl; + DROP TABLE other_tbl; + } + + execsql $tbl_defn + + execsql { + INSERT INTO tbl VALUES(1, 2); + INSERT INTO tbl VALUES(3, 4); + + CREATE TABLE rlog (idx, old_a, old_b, db_sum_a, db_sum_b, new_a, new_b); + CREATE TABLE clog (idx, old_a, old_b, db_sum_a, db_sum_b, new_a, new_b); + + CREATE TRIGGER before_update_row BEFORE UPDATE ON tbl FOR EACH ROW + BEGIN + INSERT INTO rlog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM rlog), + old.a, old.b, + (SELECT sum(a) FROM tbl), (SELECT sum(b) FROM tbl), + new.a, new.b); + END; + + CREATE TRIGGER after_update_row AFTER UPDATE ON tbl FOR EACH ROW + BEGIN + INSERT INTO rlog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM rlog), + old.a, old.b, + (SELECT sum(a) FROM tbl), (SELECT sum(b) FROM tbl), + new.a, new.b); + END; + + CREATE TRIGGER conditional_update_row AFTER UPDATE ON tbl FOR EACH ROW + WHEN old.a = 1 + BEGIN + INSERT INTO clog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM clog), + old.a, old.b, + (SELECT sum(a) FROM tbl), (SELECT sum(b) FROM tbl), + new.a, new.b); + END; + } + + do_test trigger2-1.$ii.1 { + set r {} + foreach v [execsql { + UPDATE tbl SET a = a * 10, b = b * 10; + SELECT * FROM rlog ORDER BY idx; + SELECT * FROM clog ORDER BY idx; + }] { + lappend r [expr {int($v)}] + } + set r + } [list 1 1 2 4 6 10 20 \ + 2 1 2 13 24 10 20 \ + 3 3 4 13 24 30 40 \ + 4 3 4 40 60 30 40 \ + 1 1 2 13 24 10 20 ] + + execsql { + DELETE FROM rlog; + DELETE FROM tbl; + INSERT INTO tbl VALUES (100, 100); + INSERT INTO tbl VALUES (300, 200); + CREATE TRIGGER delete_before_row BEFORE DELETE ON tbl FOR EACH ROW + BEGIN + INSERT INTO rlog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM rlog), + old.a, old.b, + (SELECT sum(a) FROM tbl), (SELECT sum(b) FROM tbl), + 0, 0); + END; + + CREATE TRIGGER delete_after_row AFTER DELETE ON tbl FOR EACH ROW + BEGIN + INSERT INTO rlog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM rlog), + old.a, old.b, + (SELECT sum(a) FROM tbl), (SELECT sum(b) FROM tbl), + 0, 0); + END; + } + do_test trigger2-1.$ii.2 { + set r {} + foreach v [execsql { + DELETE FROM tbl; + SELECT * FROM rlog; + }] { + lappend r [expr {int($v)}] + } + set r + } [list 1 100 100 400 300 0 0 \ + 2 100 100 300 200 0 0 \ + 3 300 200 300 200 0 0 \ + 4 300 200 0 0 0 0 ] + + execsql { + DELETE FROM rlog; + CREATE TRIGGER insert_before_row BEFORE INSERT ON tbl FOR EACH ROW + BEGIN + INSERT INTO rlog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM rlog), + 0, 0, + (SELECT sum(a) FROM tbl), (SELECT sum(b) FROM tbl), + new.a, new.b); + END; + + CREATE TRIGGER insert_after_row AFTER INSERT ON tbl FOR EACH ROW + BEGIN + INSERT INTO rlog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM rlog), + 0, 0, + (SELECT sum(a) FROM tbl), (SELECT sum(b) FROM tbl), + new.a, new.b); + END; + } + do_test trigger2-1.$ii.3 { + execsql { + + CREATE TABLE other_tbl(a, b); + INSERT INTO other_tbl VALUES(1, 2); + INSERT INTO other_tbl VALUES(3, 4); + -- INSERT INTO tbl SELECT * FROM other_tbl; + INSERT INTO tbl VALUES(5, 6); + DROP TABLE other_tbl; + + SELECT * FROM rlog; + } + } [list 1 0 0 0.0 0.0 5 6 \ + 2 0 0 5.0 6.0 5 6 ] + + integrity_check trigger2-1.$ii.4 + } catchsql { DROP TABLE rlog; DROP TABLE clog; DROP TABLE tbl; DROP TABLE other_tbl; } - - execsql $tbl_defn - - execsql { - INSERT INTO tbl VALUES(1, 2); - INSERT INTO tbl VALUES(3, 4); - - CREATE TABLE rlog (idx, old_a, old_b, db_sum_a, db_sum_b, new_a, new_b); - CREATE TABLE clog (idx, old_a, old_b, db_sum_a, db_sum_b, new_a, new_b); - - CREATE TRIGGER before_update_row BEFORE UPDATE ON tbl FOR EACH ROW - BEGIN - INSERT INTO rlog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM rlog), - old.a, old.b, - (SELECT sum(a) FROM tbl), (SELECT sum(b) FROM tbl), - new.a, new.b); - END; - - CREATE TRIGGER after_update_row AFTER UPDATE ON tbl FOR EACH ROW - BEGIN - INSERT INTO rlog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM rlog), - old.a, old.b, - (SELECT sum(a) FROM tbl), (SELECT sum(b) FROM tbl), - new.a, new.b); - END; - - CREATE TRIGGER conditional_update_row AFTER UPDATE ON tbl FOR EACH ROW - WHEN old.a = 1 - BEGIN - INSERT INTO clog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM clog), - old.a, old.b, - (SELECT sum(a) FROM tbl), (SELECT sum(b) FROM tbl), - new.a, new.b); - END; - } - - do_test trigger2-1.$ii.1 { - set r {} - foreach v [execsql { - UPDATE tbl SET a = a * 10, b = b * 10; - SELECT * FROM rlog ORDER BY idx; - SELECT * FROM clog ORDER BY idx; - }] { - lappend r [expr {int($v)}] - } - set r - } [list 1 1 2 4 6 10 20 \ - 2 1 2 13 24 10 20 \ - 3 3 4 13 24 30 40 \ - 4 3 4 40 60 30 40 \ - 1 1 2 13 24 10 20 ] - - execsql { - DELETE FROM rlog; - DELETE FROM tbl; - INSERT INTO tbl VALUES (100, 100); - INSERT INTO tbl VALUES (300, 200); - CREATE TRIGGER delete_before_row BEFORE DELETE ON tbl FOR EACH ROW - BEGIN - INSERT INTO rlog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM rlog), - old.a, old.b, - (SELECT sum(a) FROM tbl), (SELECT sum(b) FROM tbl), - 0, 0); - END; - - CREATE TRIGGER delete_after_row AFTER DELETE ON tbl FOR EACH ROW - BEGIN - INSERT INTO rlog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM rlog), - old.a, old.b, - (SELECT sum(a) FROM tbl), (SELECT sum(b) FROM tbl), - 0, 0); - END; - } - do_test trigger2-1.$ii.2 { - set r {} - foreach v [execsql { - DELETE FROM tbl; - SELECT * FROM rlog; - }] { - lappend r [expr {int($v)}] - } - set r - } [list 1 100 100 400 300 0 0 \ - 2 100 100 300 200 0 0 \ - 3 300 200 300 200 0 0 \ - 4 300 200 0 0 0 0 ] - - execsql { - DELETE FROM rlog; - CREATE TRIGGER insert_before_row BEFORE INSERT ON tbl FOR EACH ROW - BEGIN - INSERT INTO rlog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM rlog), - 0, 0, - (SELECT sum(a) FROM tbl), (SELECT sum(b) FROM tbl), - new.a, new.b); - END; - - CREATE TRIGGER insert_after_row AFTER INSERT ON tbl FOR EACH ROW - BEGIN - INSERT INTO rlog VALUES ( (SELECT coalesce(max(idx),0) + 1 FROM rlog), - 0, 0, - (SELECT sum(a) FROM tbl), (SELECT sum(b) FROM tbl), - new.a, new.b); - END; - } - do_test trigger2-1.$ii.3 { - execsql { - - CREATE TABLE other_tbl(a, b); - INSERT INTO other_tbl VALUES(1, 2); - INSERT INTO other_tbl VALUES(3, 4); - -- INSERT INTO tbl SELECT * FROM other_tbl; - INSERT INTO tbl VALUES(5, 6); - DROP TABLE other_tbl; - - SELECT * FROM rlog; - } - } [list 1 0 0 0.0 0.0 5 6 \ - 2 0 0 5.0 6.0 5 6 ] - - integrity_check trigger2-1.$ii.4 -} -catchsql { - DROP TABLE rlog; - DROP TABLE clog; - DROP TABLE tbl; - DROP TABLE other_tbl; } # 2. @@ -348,9 +350,11 @@ execsql { } # trigger2-3.2: WHEN clause -set when_triggers [ list \ - {t1 BEFORE INSERT ON tbl WHEN new.a > 20} \ - {t2 BEFORE INSERT ON tbl WHEN (SELECT count(*) FROM tbl) = 0} ] +set when_triggers [list {t1 BEFORE INSERT ON tbl WHEN new.a > 20}] +ifcapable subquery { + lappend when_triggers \ + {t2 BEFORE INSERT ON tbl WHEN (SELECT count(*) FROM tbl) = 0} ] +} execsql { CREATE TABLE tbl (a, b, c, d); @@ -362,10 +366,15 @@ foreach trig $when_triggers { execsql "CREATE TRIGGER $trig BEGIN UPDATE log set a = a + 1; END;" } +ifcapable subquery { + set t232 {1 0 1} +} else { + set t232 {0 0 1} +} do_test trigger2-3.2 { execsql { - INSERT INTO tbl VALUES(0, 0, 0, 0); -- 1 + INSERT INTO tbl VALUES(0, 0, 0, 0); -- 1 (ifcapable subquery) SELECT * FROM log; UPDATE log SET a = 0; @@ -377,7 +386,7 @@ do_test trigger2-3.2 { SELECT * FROM log; UPDATE log SET a = 0; } -} {1 0 1} +} $t232 execsql { DROP TABLE tbl; DROP TABLE log; diff --git a/test/view.test b/test/view.test index d39b6e40b7..6f30a943a3 100644 --- a/test/view.test +++ b/test/view.test @@ -11,7 +11,7 @@ # This file implements regression tests for SQLite library. The # focus of this file is testing VIEW statements. # -# $Id: view.test,v 1.21 2004/11/22 13:35:42 danielk1977 Exp $ +# $Id: view.test,v 1.22 2005/01/21 04:25:47 danielk1977 Exp $ set testdir [file dirname $argv0] source $testdir/tester.tcl @@ -335,28 +335,31 @@ do_test view-8.3 { SELECT * FROM v7 ORDER BY a; } } {9 18 27 39} -do_test view-8.4 { - execsql { - CREATE VIEW v8 AS SELECT max(cnt) AS mx FROM - (SELECT a%2 AS eo, count(*) AS cnt FROM t1 GROUP BY eo); - SELECT * FROM v8; - } -} 3 -do_test view-8.5 { - execsql { - SELECT mx+10, mx*2 FROM v8; - } -} {13 6} -do_test view-8.6 { - execsql { - SELECT mx+10, pqr FROM v6, v8 WHERE xyz=2; - } -} {13 7} -do_test view-8.7 { - execsql { - SELECT mx+10, pqr FROM v6, v8 WHERE xyz>2; - } -} {13 13 13 19 13 27} + +ifcapable subquery { + do_test view-8.4 { + execsql { + CREATE VIEW v8 AS SELECT max(cnt) AS mx FROM + (SELECT a%2 AS eo, count(*) AS cnt FROM t1 GROUP BY eo); + SELECT * FROM v8; + } + } 3 + do_test view-8.5 { + execsql { + SELECT mx+10, mx*2 FROM v8; + } + } {13 6} + do_test view-8.6 { + execsql { + SELECT mx+10, pqr FROM v6, v8 WHERE xyz=2; + } + } {13 7} + do_test view-8.7 { + execsql { + SELECT mx+10, pqr FROM v6, v8 WHERE xyz>2; + } + } {13 13 13 19 13 27} +} ;# ifcapable subquery # Tests for a bug found by Michiel de Wit involving ORDER BY in a VIEW. #