]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Modify test scripts to work when SQLITE_OMIT_SUBQUERY (but no other OMIT macros)...
authordanielk1977 <danielk1977@noemail.net>
Fri, 21 Jan 2005 04:25:47 +0000 (04:25 +0000)
committerdanielk1977 <danielk1977@noemail.net>
Fri, 21 Jan 2005 04:25:47 +0000 (04:25 +0000)
FossilOrigin-Name: d4e19efcef68d834c55c7d496cdb3696d63a31a2

16 files changed:
manifest
manifest.uuid
test/attach.test
test/collate5.test
test/enc2.test
test/join.test
test/limit.test
test/memdb.test
test/minmax.test
test/misc1.test
test/misc2.test
test/select1.test
test/select4.test
test/trigger1.test
test/trigger2.test
test/view.test

index 585a0958546ca31d531114f83a66b0c824867984..2dc93c681d16ac3e1c1b050755e4f0790cdb0f7b 100644 (file)
--- 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
index a7ac2070b7f3485f737ad9a477abb7acead24882..c277e9630f229e7b116f09660a9a2160ea9b9803 100644 (file)
@@ -1 +1 @@
-bb0254ab14417f0ab40f10f37cb63a60507f070a
\ No newline at end of file
+d4e19efcef68d834c55c7d496cdb3696d63a31a2
\ No newline at end of file
index 5f01fa9b441877d82f93c666a98b25bfb06a7ec3..ed5525ebd6f8874b6d007ef9ac890b51a7102a7a 100644 (file)
@@ -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
index 7145ab6757b2a3fe1f75aee45715a39f70f81f84..13ac1f2e4a3e4facfccc97eff54b5f9883805ec1 100644 (file)
@@ -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;}
index 4931783d8515516fd603527d998329f5560d1e3d..3bdcf72e8d1ef8ff180387f3955919d440531182 100644 (file)
@@ -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 {
index 6cf536d2f96303d37a70bdb9a7992f1fd8d413fc..3bd94237324c6127632771885f87ae209fd5d9eb 100644 (file)
@@ -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
 
index 733ea6f1967f91b1e3b7d0a6c7fdc3199351f620..b694df7785b276851f0dc4690e211c0eb872cb4b 100644 (file)
@@ -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 {
index 3de7f13e164ffda4622924363f9ac269221fa217..0052ce2e3796804031c6a798eef68b3263e17583 100644 (file)
@@ -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
index 7e53a0ae9cd77abebdc56ca643446af3161ba53e..fd0ba4ec19afd410caf041ade58ba74495120e54 100644 (file)
@@ -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.
index be3ab7ca360d2dd2459faa0099c4a013f36e6337..ef32f09886db14da091b4dda893fa772297beb61 100644 (file)
@@ -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;
   }
index 6a22b613a6c4c8affd255b9a3e7f8075bb56d030..85e4032ca1663c43249cb0452e76533238319c11 100644 (file)
@@ -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
index 13ccf0301d5469be0b3d20c9eba1752d672edef3..0f12ecf57b1c38b0ff04a183eee4f710af394373 100644 (file)
@@ -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
 
 
index 423f352d28b844dcc6852d386483b5a9ed60b557..7ceb564aba14003d7174a5d662c14ace65be1fd7 100644 (file)
@@ -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
 
index 3118ba02cd0898a9f4e3d4f6fb4501a3163ff343..e80579e425b7295344c3458aaafdd2247af32a6c 100644 (file)
@@ -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;
   }
index 66bd60a8ff1afb1b016d164c32a569e322f6d765..be70bd7f10e5c45f6aa22666f1fbf95aafd188b6 100644 (file)
@@ -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;
index d39b6e40b7a1a6467f72c7a7924804a6650ecc49..6f30a943a3f6256a3bcfe5da65f1966c80ff3a8a 100644 (file)
@@ -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.
 #