-C Merge\sthe\sfuzzershell\senhancement\sfrom\strunk.
-D 2016-09-03T16:24:43.721
+C Fix\sa\sproblem\scausing\sthe\saffinity\sof\ssub-select\srow-value\selements\sto\sbe\signored\sin\ssome\scontextes.
+D 2016-09-03T19:52:12.432
F Makefile.in cfd8fb987cd7a6af046daa87daa146d5aad0e088
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc 5017381e4853b1472e01d5bb926be1268eba429c
F src/date.c 95c9a8d00767e7221a8e9a31f4e913fc8029bf6b
F src/dbstat.c 19ee7a4e89979d4df8e44cfac7a8f905ec89b77d
F src/delete.c 76c084f0265f4a3cd1ecf17eee112a94f1ccbc05
-F src/expr.c 7e0470e2b82af8d6544132d81da18990d9b9c09d
+F src/expr.c 23b595cc6e2b609d53c72343b3fe16ce8b5e446d
F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
F src/fkey.c e2be0968c1adc679c87e467aa5b4f167588f38a8
F src/func.c 29cc9acb170ec1387b9f63eb52cd85f8de96c771
F test/rowvalue6.test d19b54feb604d5601f8614b15e214e0774c01087
F test/rowvalue7.test 5d06ff19d9e6969e574a2e662a531dd0c67801a8
F test/rowvalue8.test 5900eddad9e2c3c2e26f1a95f74aafc1232ee5e0
-F test/rowvalue9.test ca4e07da993e455e2c34a11800cd5eecfa25dbea
+F test/rowvalue9.test 749a471f237f3fcfdfbd902f850adff2d9963560
F test/rowvaluefault.test 7b16485e3f2b371f3e3d05455b8ded6d0c090244
F test/rtree.test 0c8d9dd458d6824e59683c19ab2ffa9ef946f798
F test/run-wordcount.sh 891e89c4c2d16e629cd45951d4ed899ad12afc09
F test/tt3_stress.c c57d804716165811d979d4a719e05baccd79277f
F test/tt3_vacuum.c 1753f45917699c9c1f66b64c717a717c9379f776
F test/types.test bf816ce73c7dfcfe26b700c19f97ef4050d194ff
-F test/types2.test 3555aacf8ed8dc883356e59efc314707e6247a84
+F test/types2.test 1aeb81976841a91eef292723649b5c4fe3bc3cac
F test/types3.test 99e009491a54f4dc02c06bdbc0c5eea56ae3e25a
F test/unique.test 93f8b2ef5ea51b9495f8d6493429b1fd0f465264
F test/unique2.test 3674e9f2a3f1fbbfd4772ac74b7a97090d0f77d2
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P f5e49855412e389a8a410db5d7ffb2e3634c5fa3 672c21bcf09c5bfb67e061456a56be45409c4f34
-R 66aa92e29e4f871901eff534f575b0fe
-U drh
-Z af3091527994ed297383eb80433196df
+P ed206048484667e4fe6aaeadd65882537d74bd35
+R ebdd3ea482059f46220cc36bb6b2e41e
+U dan
+Z 13aac770e03afb07d71bee955ff12a59
do_execsql_test 1.6.1 {
SELECT a1.rowid FROM a1 WHERE (a, b) IN (SELECT x, y FROM a2)
} {15 92}
-
do_execsql_test 1.6.2 {
SELECT a1.rowid FROM a1, a2 WHERE EXISTS (
SELECT 1 FROM a1 WHERE a=x AND b=y
)
} {3 14 15 92 3 14 15 92}
+# Test that [199df416] is fixed.
+#
do_execsql_test 2.1 {
CREATE TABLE b1(a TEXT);
CREATE TABLE b2(x BLOB);
-
INSERT INTO b1 VALUES(1);
INSERT INTO b2 VALUES(1);
}
-
do_execsql_test 2.2 { SELECT * FROM b1, b2 WHERE a=x; } {}
do_execsql_test 2.3 { SELECT * FROM b1 WHERE a IN (SELECT x FROM b2) } {}
-
-do_execsql_test 2.4 {
- CREATE UNIQUE INDEX b1a ON b1(a);
-}
+do_execsql_test 2.4 { CREATE UNIQUE INDEX b1a ON b1(a); }
do_execsql_test 2.5 { SELECT * FROM b1 WHERE a IN (SELECT x FROM b2) } {}
+# Test that a multi-column version of the query that revealed problem
+# [199df416] also works.
+#
do_execsql_test 3.1 {
CREATE TABLE c1(a INTEGER, b TEXT);
INSERT INTO c1 VALUES(1, 1);
-
CREATE TABLE c2(x BLOB, y BLOB);
INSERT INTO c2 VALUES(1, 1);
}
CREATE UNIQUE INDEX c1ab ON c1(a, b);
SELECT * FROM c1 WHERE (a, b) IN (SELECT x, y FROM c2)
} {}
+do_execsql_test 3.4 {
+ SELECT * FROM c1 WHERE (a, +b) IN (SELECT x, y FROM c2)
+} {}
-do_execsql_test 4.0 {
- CREATE TABLE d1(a TEXT);
- CREATE TABLE d2(x BLOB);
- INSERT INTO d1 VALUES(1);
- INSERT INTO d2 VALUES(1);
-}
-do_execsql_test 4.1 {
- SELECT * FROM d1 WHERE a IN (SELECT x FROM b2)
+do_execsql_test 3.5 {
+ SELECT c1.rowid FROM c1 WHERE b = (SELECT y FROM c2);
} {}
-do_execsql_test 4.2 {
- CREATE UNIQUE INDEX d1a ON d1(a);
-}
-do_execsql_test 4.3 {
- SELECT * FROM d1 WHERE a IN (SELECT x FROM d2)
+do_execsql_test 3.6 {
+ SELECT c1.rowid FROM c1 WHERE (a, b) = (SELECT x, y FROM c2);
} {}
+#-------------------------------------------------------------------------
+#
+do_execsql_test 4.0 {
+ CREATE TABLE d1(a TEXT, b INTEGER, c NUMERIC);
+ CREATE TABLE d2(x BLOB, y BLOB);
+
+ INSERT INTO d1 VALUES(1, 1, 1);
+ INSERT INTO d1 VALUES(2, 2, 2);
+ INSERT INTO d1 VALUES(3, 3, 3);
+ INSERT INTO d1 VALUES(4, 4, 4);
+
+ INSERT INTO d2 VALUES (1, 1);
+ INSERT INTO d2 VALUES (2, '2');
+ INSERT INTO d2 VALUES ('3', 3);
+ INSERT INTO d2 VALUES ('4', '4');
+}
+
+foreach {tn idx} {
+ 1 {}
+ 2 { CREATE INDEX idx ON d1(a) }
+ 3 { CREATE INDEX idx ON d1(a, c) }
+ 4 { CREATE INDEX idx ON d1(c) }
+ 5 { CREATE INDEX idx ON d1(c, a) }
+
+ 6 {
+ CREATE INDEX idx ON d1(c, a) ;
+ CREATE INDEX idx1 ON d2(x, y);
+ }
+
+ 7 {
+ CREATE INDEX idx ON d1(c, a) ;
+ CREATE UNIQUE INDEX idx2 ON d2(x, y) ;
+ }
+
+ 8 {
+ CREATE INDEX idx ON d1(c) ;
+ CREATE UNIQUE INDEX idx2 ON d2(x);
+ }
+
+} {
+ execsql { DROP INDEX IF EXISTS idx }
+ execsql { DROP INDEX IF EXISTS idx2 }
+ execsql { DROP INDEX IF EXISTS idx3 }
+ execsql $idx
+
+ do_execsql_test 4.$tn.1 {
+ SELECT rowid FROM d1 WHERE (a, c) IN (SELECT x, y FROM d2);
+ } {3 4}
+
+ do_execsql_test 4.$tn.2 {
+ SELECT rowid FROM d1 WHERE (c, a) IN (SELECT x, y FROM d2);
+ } {2 4}
+
+ do_execsql_test 4.$tn.3 {
+ SELECT rowid FROM d1 WHERE (+c, a) IN (SELECT x, y FROM d2);
+ } {2}
+
+ do_execsql_test 4.$tn.4 {
+ SELECT rowid FROM d1 WHERE (c, a) = (
+ SELECT x, y FROM d2 WHERE d2.rowid=d1.rowid
+ );
+ } {2 4}
+
+ do_execsql_test 4.$tn.5 {
+ SELECT d1.rowid FROM d1, d2 WHERE a = y;
+ } {2 4}
+
+ do_execsql_test 4.$tn.6 {
+ SELECT d1.rowid FROM d1 WHERE a = (
+ SELECT y FROM d2 where d2.rowid=d1.rowid
+ );
+ } {2 4}
+}
+
finish_test