mirror of
https://github.com/sqlite/sqlite.git
synced 2026-10-23 21:49:02 +03:00
Fix query planner error in the case of a multi-index OR on a WITHOUT ROWID
table where the OR-term uses the seek-scan optimization. [bugs:/info/2026-10-23T03:09:01Z|Bug 2026-10-23T03:09:01Z]. FossilOrigin-Name: b33ff35e6246a9dc62205db244511eead28fae90cea686e205effae5e6cc5b49
This commit is contained in:
14
manifest
14
manifest
@@ -1,5 +1,5 @@
|
||||
C Fix\sa\sproblem\sin\sQRF\swhen\sthe\sscreen\swidth\sis\snarrower\sthan\sa\scolumn.\n[bugs:/info/2026-10-23T03:50:28Z|Bug\s2026-10-23T03:50:28Z]
|
||||
D 2026-10-23T11:55:02.104
|
||||
C Fix\squery\splanner\serror\sin\sthe\scase\sof\sa\smulti-index\sOR\son\sa\sWITHOUT\sROWID\ntable\swhere\sthe\sOR-term\suses\sthe\sseek-scan\soptimization.\n[bugs:/info/2026-10-23T03:09:01Z|Bug\s2026-10-23T03:09:01Z].
|
||||
D 2026-10-23T12:14:17.568
|
||||
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
@@ -891,7 +891,7 @@ F src/wal.h c6251cfc1950643a976625ca452e46dc9b466b4f5dd2e85f244f29f79bf68ace
|
||||
F src/walker.c d5006d6b005e4ea7302ad390957a8d41ed83faa177e412f89bc5600a7462a014
|
||||
F src/where.c 801d94357804abe447b87c64d33ef186c6dc79b38beb3d128cac3e5a1f3c3f44
|
||||
F src/whereInt.h 5d739acb94bf1fdf6edd502a919e3dcf2d340dda63cc1827304e119ea878f6f3
|
||||
F src/wherecode.c f255e418ccf877f6bb9892145288728f1aa1a0ab8c2f2a57f82132e538c15b65
|
||||
F src/wherecode.c 41abe8c4ab3fc851496d64896b0d2b20d637e10933af5600716f0049c1892b0c
|
||||
F src/whereexpr.c 8b5c937bea8bca9673f3f57925b37e7dcb5343834aac5564349f706460aa2ecd
|
||||
F src/window.c 88ae7299cabf3124639236accbc2fa461a81473232e758c85d016922bf5061ab
|
||||
F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
|
||||
@@ -1680,7 +1680,7 @@ F test/schema6.test e4bd1f23d368695eb9e7b51ef6e02ca0642ea2ab4a52579959826b5e7dce
|
||||
F test/schemafault.test 1936bceca55ac82c5efbcc9fc91a1933e45c8d1e1d106b9a7e56c972a5a2a51e
|
||||
F test/securedel.test 2f70b2449186a1921bd01ec9da407fbfa98c3a7a5521854c300c194b2ff09384
|
||||
F test/securedel2.test 2d54c28e46eb1fd6902089958b20b1b056c6f1c5
|
||||
F test/seekscan1.test 2148a174ba55fa378f18fdf62eeed1f3a3cc9b6f360a948db613cad0c80b1f04
|
||||
F test/seekscan1.test c03d81f495f24bbcbb4d087af09b5732ba5ce06b250ce8abfb703839f3e42bc2
|
||||
F test/select1.test 15ffb8ce2cb5dae47dcef680484aac770efcb42f330455bbaffad636af71e597
|
||||
F test/select2.test 352480e0e9c66eda9c3044e412abdf5be0215b56
|
||||
F test/select3.test 152ce3978c8600c70413e921e39e4c5aeb8ff1e96dd722442a9981e1b8afc702
|
||||
@@ -2297,8 +2297,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
|
||||
F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
|
||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||
F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
|
||||
P a327ab93a4758f9bb420e9ae1dd955ce102d28b89a9b1294414266a5f583b282
|
||||
R 315e776739a0d09cb45f78064faf45ea
|
||||
P 8de43901c796964bfc7943261fe639874e395ec9415970e4e6a5d1c4868d18a8
|
||||
R 76f86836a23654d720e54f2ffe987534
|
||||
U drh
|
||||
Z a75d750748e7fd638d439eeb2315fce1
|
||||
Z 83ebcaba0cfdc6727cc4f7a3f3b5a6a2
|
||||
# Remove this line to create a well-formed Fossil manifest.
|
||||
|
||||
@@ -1 +1 @@
|
||||
8de43901c796964bfc7943261fe639874e395ec9415970e4e6a5d1c4868d18a8
|
||||
b33ff35e6246a9dc62205db244511eead28fae90cea686e205effae5e6cc5b49
|
||||
|
||||
@@ -2146,7 +2146,9 @@ Bitmask sqlite3WhereCodeOneLoopStart(
|
||||
SWAP(u8, nBtm, nTop);
|
||||
}
|
||||
|
||||
if( iLevel>0 && (pLoop->wsFlags & WHERE_IN_SEEKSCAN)!=0 ){
|
||||
if( (iLevel>0 || (pWInfo->wctrlFlags & WHERE_OR_SUBCLAUSE)!=0)
|
||||
&& (pLoop->wsFlags & WHERE_IN_SEEKSCAN)!=0
|
||||
){
|
||||
/* In case OP_SeekScan is used, ensure that the index cursor does not
|
||||
** point to a valid row for the first iteration of this loop. */
|
||||
sqlite3VdbeAddOp1(v, OP_NullRow, iIdxCur);
|
||||
|
||||
@@ -189,8 +189,13 @@ foreach {tn idx used} {
|
||||
}
|
||||
}
|
||||
|
||||
# Bug report 2026-10-23T03:09:01Z
|
||||
do_execsql_test 4.1 {
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1(a, b, PRIMARY KEY(a, b)) WITHOUT ROWID;
|
||||
INSERT INTO t1 VALUES(1, 1), (2, 1), (3, 1), (4, 1);
|
||||
ANALYZE;
|
||||
SELECT * FROM t1 WHERE a = 2 OR (a = 1 AND b IN (1, 2));
|
||||
} {2 1 1 1}
|
||||
|
||||
finish_test
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user