mirror of
https://github.com/sqlite/sqlite.git
synced 2026-10-23 21:49:02 +03:00
When processing a vector IN(...) term in a WHERE clause, do not add individual terms for each column if the RHS of the IN(...) is a query that is expected to do the special min-max aggregate behaviour. Possible fix for [bugs:/info/2026-08-03T09:05:06Z | 2026-08-03T09:05:06Z].
FossilOrigin-Name: b5cee626e149c2cd977ad682ca34ccafe847a468f9e01b365a1fd901a08176e4
This commit is contained in:
19
manifest
19
manifest
@@ -1,5 +1,5 @@
|
||||
C Set\sO_BINARY\sfor\sWindows\sconsole\soutput\sin\sthe\sCLI.\sCandidate\sfix\sfor\n[bugs:/info/2026-08-03T08:52:42Z|bug\s2026-08-03T08:52:42Z].
|
||||
D 2026-08-03T13:22:37.268
|
||||
C When\sprocessing\sa\svector\sIN(...)\sterm\sin\sa\sWHERE\sclause,\sdo\snot\sadd\sindividual\sterms\sfor\seach\scolumn\sif\sthe\sRHS\sof\sthe\sIN(...)\sis\sa\squery\sthat\sis\sexpected\sto\sdo\sthe\sspecial\smin-max\saggregate\sbehaviour.\sPossible\sfix\sfor\s[bugs:/info/2026-08-03T09:05:06Z\s|\s2026-08-03T09:05:06Z].
|
||||
D 2026-08-03T14:10:21.411
|
||||
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
@@ -827,7 +827,7 @@ F src/walker.c d5006d6b005e4ea7302ad390957a8d41ed83faa177e412f89bc5600a7462a014
|
||||
F src/where.c 2f5b4091f37bfac7658ea3d52b2c192d8fb2ec062f232815e0eb5152a46267db
|
||||
F src/whereInt.h f039ad303bc2913de673e431821ef8db3b619d249e6e5548d90072a684e72285
|
||||
F src/wherecode.c 48603db02e70b579e813b076e4dd7da4ad48099633918b21a85c9a83a949500e
|
||||
F src/whereexpr.c 89d33f43594a4a5c3028c86ff0d0f8946aca96b2e535074f23b9893f51c95705
|
||||
F src/whereexpr.c cd88bd3e1a421fb987eb5991ecf7a9a3d5dad1abb02a8baa070336b6dfa70b59
|
||||
F src/window.c 0d7dacdf2e84c6ee8ff498d5cc881dd245fcb2f14f6c5976e97e112ce96e90dc
|
||||
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
|
||||
F test/affinity2.test 4d7a34d328e58ca2a2d78fd76c27614a41ca7ddf4312ded9c68c04f430b3b47d
|
||||
@@ -1293,7 +1293,7 @@ F test/in3.test 3cbf58c87f4052cee3a58b37b6389777505aa0c0
|
||||
F test/in4.test 6630816b7e59b7bd336b0a95cbf831dcf046d35b10ea987d6e69d223735f1887
|
||||
F test/in5.test 4fd79c70dfa0681313e8cdca07f5ff0400bdc0e20f808a5c59eaef1e4b48082a
|
||||
F test/in6.test f5f40d6816a8bb7c784424b58a10ac38efb76ab29127a2c17399e0cbeeda0e4b
|
||||
F test/in7.test 5a3109dd348d43e70235ac3acf1390b0f41fb6e6deb51f6cab489e8ab4aad276
|
||||
F test/in7.test eeb2e73631c39824195bcb12cc298fd7ccb539398b50d410c2207b7a95a4f908
|
||||
F test/incrblob.test c9b96afc292aeff43d6687bcb09b0280aa599822
|
||||
F test/incrblob2.test a494c9e848560039a23974b9119cfc2cf3ad3bd15cc2694ee6367ae537ef8f1f
|
||||
F test/incrblob3.test 67621a04b3084113bf38ce03797d70eca012d9d8f948193b8f655df577b0da6f
|
||||
@@ -2218,8 +2218,11 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
|
||||
F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
|
||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||
F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
|
||||
P e0ab12ec7270046010c0b96682799d5659c10e6ba9620bb4bffc8209ad1272fe
|
||||
R fdc798b1beb7352c0a4b9a14362c5777
|
||||
U drh
|
||||
Z 3670a18ce469b4696c16002865ce9f8c
|
||||
P af136dc1d10361e41fa3bd0d31e9b066e34b19bfd2be1076cc7d7ff2bcef337a
|
||||
R bcc6b80eda17c38ac6a6dca6992a1ee9
|
||||
T *branch * bug-2026-08-03T09:05:06Z
|
||||
T *sym-bug-2026-08-03T09:05:06Z *
|
||||
T -sym-trunk *
|
||||
U dan
|
||||
Z c78f545f344f8c288245a5bc15c6ba47
|
||||
# Remove this line to create a well-formed Fossil manifest.
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
branch trunk
|
||||
tag trunk
|
||||
branch bug-2026-08-03T09:05:06Z
|
||||
tag bug-2026-08-03T09:05:06Z
|
||||
|
||||
@@ -1 +1 @@
|
||||
af136dc1d10361e41fa3bd0d31e9b066e34b19bfd2be1076cc7d7ff2bcef337a
|
||||
b5cee626e149c2cd977ad682ca34ccafe847a468f9e01b365a1fd901a08176e4
|
||||
|
||||
@@ -1540,6 +1540,7 @@ exprAnalyze_restart:
|
||||
#ifndef SQLITE_OMIT_WINDOWFUNC
|
||||
&& pExpr->x.pSelect->pWin==0
|
||||
#endif
|
||||
&& (pExpr->x.pSelect->selFlags & SF_MinMaxAgg)==0
|
||||
&& pWC->op==TK_AND
|
||||
&& pExpr->x.pSelect->pEList->nExpr <= UMXV(pTerm->nChild)
|
||||
/* ^-- See bug 2026-06-04T10:00:49Z */
|
||||
|
||||
@@ -337,5 +337,65 @@ do_execsql_test 5.12 {
|
||||
GROUP BY t1.a
|
||||
} {07777 1 07777}
|
||||
|
||||
#-------------------------------------------------------------------------
|
||||
# Report <https://sqlite.org/bugs/info/2026-08-03T09:05:06Z>
|
||||
#
|
||||
reset_db
|
||||
do_execsql_test 6.0 {
|
||||
CREATE TABLE t0(c1 INTEGER NOT NULL, UNIQUE(c1));
|
||||
INSERT INTO t0(c1) VALUES (5), (-1);
|
||||
|
||||
CREATE TABLE t2(c2 INTEGER NOT NULL, UNIQUE(c2));
|
||||
INSERT INTO t2(c2) VALUES (5), (-1);
|
||||
} {}
|
||||
|
||||
do_execsql_test 6.1 {
|
||||
SELECT c1 FROM t0 WHERE (((c1),(c1)) IN (
|
||||
SELECT c2, min(c2) FROM t2)
|
||||
);
|
||||
} {-1}
|
||||
|
||||
reset_db
|
||||
do_execsql_test 6.2 {
|
||||
CREATE TABLE t1(a, b);
|
||||
INSERT INTO t1 VALUES(2, 'two');
|
||||
INSERT INTO t1 VALUES(1, 'one');
|
||||
INSERT INTO t1 VALUES(4, 'four');
|
||||
INSERT INTO t1 VALUES(3, 'three');
|
||||
|
||||
CREATE TABLE t2(x);
|
||||
INSERT INTO t2 VALUES(1), (2), (3);
|
||||
}
|
||||
|
||||
foreach {tn idx} {
|
||||
3 { CREATE INDEX i1 ON t1(a) }
|
||||
4 { CREATE INDEX i1 ON t1(b) }
|
||||
} {
|
||||
do_execsql_test 6.$tn.1 { DROP INDEX IF EXISTS i1 }
|
||||
execsql $idx
|
||||
|
||||
do_execsql_test 6.$tn.2 {
|
||||
SELECT * FROM t1 WHERE a IN (SELECT count(*) FROM t2)
|
||||
} {3 three}
|
||||
|
||||
do_execsql_test 6.$tn.3 {
|
||||
SELECT * FROM t1 WHERE (a, b) IN (SELECT count(*), 'three' FROM t2)
|
||||
} {3 three}
|
||||
|
||||
do_eqp_test 6.$tn.4 {
|
||||
SELECT * FROM t1 WHERE (a, b) IN (SELECT count(*), 'three' FROM t2)
|
||||
} {SEARCH t1 USING INDEX i1}
|
||||
|
||||
do_eqp_test 6.$tn.5 {
|
||||
SELECT * FROM t1 WHERE (a, b) IN (SELECT min(x), 'one' FROM t2)
|
||||
} {SCAN t1}
|
||||
|
||||
do_execsql_test 6.$tn.6 {
|
||||
SELECT * FROM t1 WHERE (a, b) IN (SELECT min(x), 'one' FROM t2)
|
||||
} {1 one}
|
||||
|
||||
|
||||
}
|
||||
|
||||
finish_test
|
||||
|
||||
|
||||
Reference in New Issue
Block a user