Modify test scripts to work when SQLITE_OMIT_SUBQUERY (but no other OMIT macros) is defined. (CVS 2252)
FossilOrigin-Name: d4e19efcef68d834c55c7d496cdb3696d63a31a2
This commit is contained in:
parent
3e8c37e7f8
commit
e61b9f4f3c
38
manifest
38
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
|
||||
|
@ -1 +1 @@
|
||||
bb0254ab14417f0ab40f10f37cb63a60507f070a
|
||||
d4e19efcef68d834c55c7d496cdb3696d63a31a2
|
@ -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
|
||||
|
@ -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;}
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
}
|
||||
} {}
|
||||
|
||||
ifcapable subquery {
|
||||
do_test join-9.1.1 {
|
||||
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;
|
||||
SELECT * FROM t12 NATURAL LEFT JOIN t13
|
||||
EXCEPT
|
||||
SELECT * FROM t12 NATURAL LEFT JOIN v13;
|
||||
}
|
||||
} {}
|
||||
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
|
||||
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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);
|
||||
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}
|
||||
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
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
#
|
||||
|
Loading…
x
Reference in New Issue
Block a user