Do not attempt to use the skip-scan optimization if prior terms of the
index are already used for non-equality constraints. Ticket [304017f5f04a0035] FossilOrigin-Name: d7126a9ced86cb0934d5bde2bf535e6b529c361444c99e723f29dd3eb36e7044
This commit is contained in:
parent
9e10f9ab05
commit
b592d47a81
16
manifest
16
manifest
@ -1,5 +1,5 @@
|
||||
C Ensure\sthe\sSF_Aggregate\sflag\son\sa\sSELECT\sstatement\sis\sset\sif\sa\sDISTINCT\sis\stransformed\sto\sa\sGROUP\sBY.\sTicket\s[9c944882].
|
||||
D 2020-01-06T17:06:12.101
|
||||
C Do\snot\sattempt\sto\suse\sthe\sskip-scan\soptimization\sif\sprior\sterms\sof\sthe\nindex\sare\salready\sused\sfor\snon-equality\sconstraints.\nTicket\s[304017f5f04a0035]
|
||||
D 2020-01-06T17:33:09.190
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||
@ -614,7 +614,7 @@ F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
|
||||
F src/wal.c 15a2845769f51ba132f9cf0b2c7a6887a91fc8437892dbcce9fcdc68b66d60a1
|
||||
F src/wal.h 606292549f5a7be50b6227bd685fa76e3a4affad71bb8ac5ce4cb5c79f6a176a
|
||||
F src/walker.c a137468bf36c92e64d2275caa80c83902e3a0fc59273591b96c6416d3253d05d
|
||||
F src/where.c 4ca6c066554247a69dc54616755f68c301c16e23ec36d40170f07763fd0737b3
|
||||
F src/where.c df2bea0e0122e853d9f1a8ec68920744166d2a524e338eba92e5470538ecd1f9
|
||||
F src/whereInt.h e1d1db6bbec0ba4f345acc338f956c8237a6f06413afa68c6414e82fb5b06745
|
||||
F src/wherecode.c 75ad6cbb8dfe585ffe0fc71008750b5158fc4811c3a498327033920b18f0a4be
|
||||
F src/whereexpr.c 4b34be1434183e7bb8a05d4bf42bd53ea53021b0b060936fbd12062b4ff6b396
|
||||
@ -1340,7 +1340,7 @@ F test/shortread1.test bb591ef20f0fd9ed26d0d12e80eee6d7ac8897a3
|
||||
F test/show_speedtest1_rtree.tcl 32e6c5f073d7426148a6936a0408f4b5b169aba5
|
||||
F test/shrink.test 1b4330b1fd9e818c04726d45cb28db73087535ce
|
||||
F test/sidedelete.test f0ad71abe6233e3b153100f3b8d679b19a488329
|
||||
F test/skipscan1.test 2a64ca7b3e6246bb86b47c9051bfd324603b1b60675fe606513535267713e080
|
||||
F test/skipscan1.test ed524bc86f27646b3a297f45d6557b55db338977b6838f8064b196b35848b31b
|
||||
F test/skipscan2.test 3eb703ce794f139e7b83567911046298bcde29606116727f9b700ce34f559d2d
|
||||
F test/skipscan3.test ec5bab3f81c7038b43450e7b3062e04a198bdbb5
|
||||
F test/skipscan5.test 67817a4b6857c47e0e33ba3e506da6f23ef68de2
|
||||
@ -1853,7 +1853,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||
P 46f8ef70fb8b3ae00cc081b280f3dff38b1d0f1b52a8f4477ec89dec32e4d813
|
||||
R 28c300f982e3504535dbaf5798fe1687
|
||||
U dan
|
||||
Z 066ef948a76ae495e0e47b3f62fda826
|
||||
P 1409758f72c0206cc48f9f7e789382472949523b7056ea46f8dcb93fd3ea60c6
|
||||
R bd298e40a86eebf6b18fcd31345471e7
|
||||
U drh
|
||||
Z 45dcdf5551f03c892f39822b38628702
|
||||
|
@ -1 +1 @@
|
||||
1409758f72c0206cc48f9f7e789382472949523b7056ea46f8dcb93fd3ea60c6
|
||||
d7126a9ced86cb0934d5bde2bf535e6b529c361444c99e723f29dd3eb36e7044
|
@ -2431,8 +2431,9 @@ static int whereLoopAddBtreeIndex(
|
||||
|
||||
pNew = pBuilder->pNew;
|
||||
if( db->mallocFailed ) return SQLITE_NOMEM_BKPT;
|
||||
WHERETRACE(0x800, ("BEGIN %s.addBtreeIdx(%s), nEq=%d\n",
|
||||
pProbe->pTable->zName,pProbe->zName, pNew->u.btree.nEq));
|
||||
WHERETRACE(0x800, ("BEGIN %s.addBtreeIdx(%s), nEq=%d, nSkip=%d\n",
|
||||
pProbe->pTable->zName,pProbe->zName,
|
||||
pNew->u.btree.nEq, pNew->nSkip));
|
||||
|
||||
assert( (pNew->wsFlags & WHERE_VIRTUALTABLE)==0 );
|
||||
assert( (pNew->wsFlags & WHERE_TOP_LIMIT)==0 );
|
||||
@ -2729,6 +2730,7 @@ static int whereLoopAddBtreeIndex(
|
||||
assert( 42==sqlite3LogEst(18) );
|
||||
if( saved_nEq==saved_nSkip
|
||||
&& saved_nEq+1<pProbe->nKeyCol
|
||||
&& saved_nEq==pNew->nLTerm
|
||||
&& pProbe->noSkipScan==0
|
||||
&& OptimizationEnabled(db, SQLITE_SkipScan)
|
||||
&& pProbe->aiRowLogEst[saved_nEq+1]>=42 /* TUNING: Minimum for skip-scan */
|
||||
|
@ -398,4 +398,25 @@ do_eqp_test skipscan1-3.2 {
|
||||
`--USE TEMP B-TREE FOR DISTINCT
|
||||
}
|
||||
|
||||
# 2020-01-06 ticket 304017f5f04a0035
|
||||
#
|
||||
reset_db
|
||||
do_execsql_test skipscan1-4.10 {
|
||||
CREATE TABLE t1(a,b INT);
|
||||
INSERT INTO t1(a,b) VALUES(1,2),(3,3),(4,5);
|
||||
CREATE UNIQUE INDEX i1 ON t1(b,b,a,a,a,a,a,b,a);
|
||||
ANALYZE;
|
||||
DROP TABLE IF EXISTS sqlite_stat4;
|
||||
INSERT INTO sqlite_stat1 VALUES('t1','i1','30 30 30 2 2 2 2 2 2 2');
|
||||
ANALYZE sqlite_master;
|
||||
|
||||
SELECT DISTINCT a
|
||||
FROM t1
|
||||
WHERE a = b
|
||||
AND a = 3
|
||||
AND b IN (1,3,2,4)
|
||||
AND b >= 0
|
||||
AND a <= 10;
|
||||
} {3}
|
||||
|
||||
finish_test
|
||||
|
Loading…
x
Reference in New Issue
Block a user