-C Fix\sa\sproblem\swith\s(DELETE...LIMIT)\sstatements\sagainst\sWITHOUT\sROWID\stables\nwith\sa\ssingle\scolumn\sPK.
-D 2017-11-10T15:42:21.918
+C Fix\sa\sproblem\sinvolving\s"DELETE/UPDATE...LIMIT"\sstatements\sthat\suse\san\sINDEXED\nBY\sclause.
+D 2017-11-10T16:14:26.225
F Makefile.in b142eb20482922153ebc77b261cdfd0a560ed05a81e9f6d9a2b0e8192922a1d2
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc a55372a22454e742ba7c8f6edf05b83213ec01125166ad7dcee0567e2f7fc81b
F src/date.c 48f743d88bbe88f848532d333cca84f26e52a4f217e86f86be7fc1b919c33d74
F src/dbpage.c 432f46fb47c99ae1f0e2863fe595038a6f9d3b59f4a3dabe5f86ec2a88758fde
F src/dbstat.c 7a4ba8518b6369ef3600c49cf9c918ad979acba610b2aebef1b656d649b96720
-F src/delete.c cd86beec4f64491270f52521a45f0d335e29766b165511d025ee11119839375a
+F src/delete.c 2b9f2d34c9420cbe6d83e99d08d735d8ba6b70729123b8c50909a7fa74a048d3
F src/expr.c 0016b95aed1df47ebc0eb7415bd621841d72dbffd3bfb62210e50e71d83b4691
F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
F src/fkey.c 5ff2c895fe087756d8085dc1a9bc229b5670e2a65c3929dd87c71e43649af333
F test/whereK.test f8e3cf26a8513ecc7f514f54df9f0572c046c42b
F test/wherefault.test 1374c3aa198388925246475f84ad4cd5f9528864
F test/wherelimit.test 1dee70c9cc147330156d75e23de88f771e624998b03ae316cb64e1d249f129d8
-F test/wherelimit2.test 565fc74c3f96c3f08f3c20e233530e4c5532e6dfa01d1acc8dd2da5009a3dfd3
+F test/wherelimit2.test 85e3fc3e61e100d8da27323c5cb30ed5881013c3b9100bb26ac5fd52d594c79b
F test/wild001.test bca33f499866f04c24510d74baf1e578d4e44b1c
F test/win32heap.test 10fd891266bd00af68671e702317726375e5407561d859be1aa04696f2aeee74
F test/win32lock.test fbf107c91d8f5512be5a5b87c4c42ab9fdd54972
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 584b88aaf89ab30cb51185396b7b50c6ecba286add023a26ab41d865b9c605ce
-R d15b259ca771d410cbcab13660cb7826
+P 35477a3dcceadf5dade8e036d5a2ce91b9ca83c4b85d309db233bdbcf538b1cc
+R 07fcc16cd40c06e7e9266df3e5decf1a
U dan
-Z 4ca2b1e389083d1c64078c78c67450a8
+Z 02c3e7941017d253308184d6859dc937
#-------------------------------------------------------------------------
# Simple test using WITHOUT ROWID table.
#
-do_execsql_test 2.0 {
+do_execsql_test 2.1.0 {
CREATE TABLE t2(a, b, c, PRIMARY KEY(a, b)) WITHOUT ROWID;
INSERT INTO t2 VALUES(1, 1, 'h');
INSERT INTO t2 VALUES(1, 2, 'g');
INSERT INTO t2 VALUES(4, 2, 'a');
}
-do_execsql_test 2.1 {
+do_execsql_test 2.1.1 {
BEGIN;
DELETE FROM t2 WHERE b=1 ORDER BY c LIMIT 2;
SELECT c FROM t2 ORDER BY 1;
ROLLBACK;
} {a c e f g h}
-do_execsql_test 2.2 {
+do_execsql_test 2.1.2 {
BEGIN;
UPDATE t2 SET c=NULL ORDER BY a, b DESC LIMIT 3 OFFSET 1;
SELECT a, b, c FROM t2;
4 2 a
}
+do_execsql_test 2.2.0 {
+ DROP TABLE t2;
+ CREATE TABLE t2(a INTEGER PRIMARY KEY, b, c) WITHOUT ROWID;
+ INSERT INTO t2 VALUES(1, 1, 'h');
+ INSERT INTO t2 VALUES(2, 2, 'g');
+ INSERT INTO t2 VALUES(3, 1, 'f');
+ INSERT INTO t2 VALUES(4, 2, 'e');
+ INSERT INTO t2 VALUES(5, 1, 'd');
+ INSERT INTO t2 VALUES(6, 2, 'c');
+ INSERT INTO t2 VALUES(7, 1, 'b');
+ INSERT INTO t2 VALUES(8, 2, 'a');
+}
+
+do_execsql_test 2.2.1 {
+ BEGIN;
+ DELETE FROM t2 WHERE b=1 ORDER BY c LIMIT 2;
+ SELECT c FROM t2 ORDER BY 1;
+ ROLLBACK;
+} {a c e f g h}
+
+do_execsql_test 2.2.2 {
+ BEGIN;
+ UPDATE t2 SET c=NULL ORDER BY a DESC LIMIT 3 OFFSET 1;
+ SELECT a, b, c FROM t2;
+ ROLLBACK;
+} {
+ 1 1 h
+ 2 2 g
+ 3 1 f
+ 4 2 e
+ 5 1 {}
+ 6 2 {}
+ 7 1 {}
+ 8 2 a
+}
+
#-------------------------------------------------------------------------
# Test using a virtual table
#
#-------------------------------------------------------------------------
# Test using INDEXED BY clauses.
#
-foreach {tn t} {1 "" 2 "WITHOUT ROWID"} {
- execsql "DROP TABLE IF EXISTS x1"
- execsql "CREATE TABLE x1(a INTEGER PRIMARY KEY, b, c, d) $t"
- do_execsql_test 4.$tn.0 {
- CREATE INDEX x1bc ON x1(b, c);
- INSERT INTO x1 VALUES(1,1,1,1);
- INSERT INTO x1 VALUES(2,1,2,2);
- INSERT INTO x1 VALUES(3,2,1,3);
- INSERT INTO x1 VALUES(4,2,2,3);
- INSERT INTO x1 VALUES(5,3,1,2);
- INSERT INTO x1 VALUES(6,3,2,1);
- }
-
- do_execsql_test 4.$tn.1 {
- BEGIN;
- DELETE FROM x1 ORDER BY a LIMIT 2;
- SELECT a FROM x1;
- ROLLBACK;
- } {3 4 5 6}
+do_execsql_test 4.0 {
+ CREATE TABLE x1(a INTEGER PRIMARY KEY, b, c, d);
+ CREATE INDEX x1bc ON x1(b, c);
+ INSERT INTO x1 VALUES(1,1,1,1);
+ INSERT INTO x1 VALUES(2,1,2,2);
+ INSERT INTO x1 VALUES(3,2,1,3);
+ INSERT INTO x1 VALUES(4,2,2,3);
+ INSERT INTO x1 VALUES(5,3,1,2);
+ INSERT INTO x1 VALUES(6,3,2,1);
}
+do_execsql_test 4.1 {
+ BEGIN;
+ DELETE FROM x1 ORDER BY a LIMIT 2;
+ SELECT a FROM x1;
+ ROLLBACK;
+} {3 4 5 6}
+
+do_catchsql_test 4.2 {
+ DELETE FROM x1 INDEXED BY x1bc WHERE d=3 LIMIT 1;
+} {1 {no query solution}}
+
+do_execsql_test 4.3 {
+ DELETE FROM x1 INDEXED BY x1bc WHERE b=3 LIMIT 1;
+ SELECT a FROM x1;
+} {1 2 3 4 6}
+do_catchsql_test 4.4 {
+ UPDATE x1 INDEXED BY x1bc SET d=5 WHERE d=3 LIMIT 1;
+} {1 {no query solution}}
+do_execsql_test 4.5 {
+ UPDATE x1 INDEXED BY x1bc SET d=5 WHERE b=2 LIMIT 1;
+ SELECT a, d FROM x1;
+} {1 1 2 2 3 5 4 3 6 1}
#-------------------------------------------------------------------------
# Test using object names that require quoting.