-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
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
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
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
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
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
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
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
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
-bb0254ab14417f0ab40f10f37cb63a60507f070a
\ No newline at end of file
+d4e19efcef68d834c55c7d496cdb3696d63a31a2
\ No newline at end of file
# 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]
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
# 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
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;}
# 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
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 {
#
# 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
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 );
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
# 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
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 {
# 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]
}
} {}
-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
# 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
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
# 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.
# 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
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;
}
# 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
}
} {}
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
# 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
} {}
}
-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
# 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
}
} {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
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
}
} {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
}
} {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
# 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.
#
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
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;
}
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;
}
}
# 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.
}
# 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);
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;
SELECT * FROM log;
UPDATE log SET a = 0;
}
-} {1 0 1}
+} $t232
execsql {
DROP TABLE tbl;
DROP TABLE log;
# 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
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.
#