mirror of
https://github.com/sqlite/sqlite.git
synced 2025-11-16 23:02:26 +03:00
Disable the skip-scan optimization for DISTINCT queries.
Fix for ticket [ced41c7c7d6b4d36] FossilOrigin-Name: a871d69c6de65038360aa6142fbad22689fb347e526cca56bb83e695c1441fbe
This commit is contained in:
14
manifest
14
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Convert\san\sassert()\sin\sR-Tree\sinto\sa\sdatabase\scorruption\sdetection\scase.
|
C Disable\sthe\sskip-scan\soptimization\sfor\sDISTINCT\squeries.\nFix\sfor\sticket\s[ced41c7c7d6b4d36]
|
||||||
D 2019-07-29T17:18:45.497
|
D 2019-07-30T01:17:03.473
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||||
@@ -609,7 +609,7 @@ F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
|
|||||||
F src/wal.c bbd6838bd79c0a32144d482fb0b6a9d2d1a252fb3b16d5005ec30f2f80413b0d
|
F src/wal.c bbd6838bd79c0a32144d482fb0b6a9d2d1a252fb3b16d5005ec30f2f80413b0d
|
||||||
F src/wal.h 606292549f5a7be50b6227bd685fa76e3a4affad71bb8ac5ce4cb5c79f6a176a
|
F src/wal.h 606292549f5a7be50b6227bd685fa76e3a4affad71bb8ac5ce4cb5c79f6a176a
|
||||||
F src/walker.c d5a94907dcac990e31976be9dc769d17f6a806782593d6aec9d760ee01ec22cd
|
F src/walker.c d5a94907dcac990e31976be9dc769d17f6a806782593d6aec9d760ee01ec22cd
|
||||||
F src/where.c a3c9a0e1215c0e67e508014084e8f47271895b56f780fc26ac57be34fac33c1a
|
F src/where.c 03125c703ae26ae6ec32bc2e5563b38e41082c120d6d6e526c5f0174ce1cbd93
|
||||||
F src/whereInt.h 6fab4b6f7e4ae716f112ee09cd1343fc6dde3d4a1831feabc6b3ed3b54b8eef3
|
F src/whereInt.h 6fab4b6f7e4ae716f112ee09cd1343fc6dde3d4a1831feabc6b3ed3b54b8eef3
|
||||||
F src/wherecode.c 37a1004237d630d785c47bba2290eac652a7a8b0047518eba3cb7c808b604c4a
|
F src/wherecode.c 37a1004237d630d785c47bba2290eac652a7a8b0047518eba3cb7c808b604c4a
|
||||||
F src/whereexpr.c 5e559bdd24b06e3bc2e68f258bf751302954dc1e432daf71fdd8098a71462326
|
F src/whereexpr.c 5e559bdd24b06e3bc2e68f258bf751302954dc1e432daf71fdd8098a71462326
|
||||||
@@ -1329,7 +1329,7 @@ F test/shortread1.test bb591ef20f0fd9ed26d0d12e80eee6d7ac8897a3
|
|||||||
F test/show_speedtest1_rtree.tcl 32e6c5f073d7426148a6936a0408f4b5b169aba5
|
F test/show_speedtest1_rtree.tcl 32e6c5f073d7426148a6936a0408f4b5b169aba5
|
||||||
F test/shrink.test 1b4330b1fd9e818c04726d45cb28db73087535ce
|
F test/shrink.test 1b4330b1fd9e818c04726d45cb28db73087535ce
|
||||||
F test/sidedelete.test f0ad71abe6233e3b153100f3b8d679b19a488329
|
F test/sidedelete.test f0ad71abe6233e3b153100f3b8d679b19a488329
|
||||||
F test/skipscan1.test b1fef3046d555836712d4a3a7c8ae8193356c6a15bee59cb3976e4ee98596c97
|
F test/skipscan1.test 64ad7a05a3c336e0280ac277c656b029d723071a18afc22beb3e352058e05c03
|
||||||
F test/skipscan2.test 3eb703ce794f139e7b83567911046298bcde29606116727f9b700ce34f559d2d
|
F test/skipscan2.test 3eb703ce794f139e7b83567911046298bcde29606116727f9b700ce34f559d2d
|
||||||
F test/skipscan3.test ec5bab3f81c7038b43450e7b3062e04a198bdbb5
|
F test/skipscan3.test ec5bab3f81c7038b43450e7b3062e04a198bdbb5
|
||||||
F test/skipscan5.test 67817a4b6857c47e0e33ba3e506da6f23ef68de2
|
F test/skipscan5.test 67817a4b6857c47e0e33ba3e506da6f23ef68de2
|
||||||
@@ -1838,7 +1838,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P 11f7f94f1c5d761e7f381e277658b7e857cc369283996c509061de55fd6aad52
|
P 48b518eb6f76fb0beb161d1ebcf3b793efc36262d6d77a1ad5906b6501138e28
|
||||||
R 4b6136e9b391e089f928150a88e88819
|
R cc614d2cc68120f92ad0f4eec7ab3887
|
||||||
U drh
|
U drh
|
||||||
Z d18c141f950c38e740b9d65f9c3aa0d1
|
Z 570b02f38ebd5b0effe898329e81f79a
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
48b518eb6f76fb0beb161d1ebcf3b793efc36262d6d77a1ad5906b6501138e28
|
a871d69c6de65038360aa6142fbad22689fb347e526cca56bb83e695c1441fbe
|
||||||
@@ -2723,6 +2723,7 @@ static int whereLoopAddBtreeIndex(
|
|||||||
&& pProbe->noSkipScan==0
|
&& pProbe->noSkipScan==0
|
||||||
&& OptimizationEnabled(db, SQLITE_SkipScan)
|
&& OptimizationEnabled(db, SQLITE_SkipScan)
|
||||||
&& pProbe->aiRowLogEst[saved_nEq+1]>=42 /* TUNING: Minimum for skip-scan */
|
&& pProbe->aiRowLogEst[saved_nEq+1]>=42 /* TUNING: Minimum for skip-scan */
|
||||||
|
&& (pWInfo->wctrlFlags & (WHERE_WANT_DISTINCT|WHERE_DISTINCTBY))==0
|
||||||
&& (rc = whereLoopResize(db, pNew, pNew->nLTerm+1))==SQLITE_OK
|
&& (rc = whereLoopResize(db, pNew, pNew->nLTerm+1))==SQLITE_OK
|
||||||
){
|
){
|
||||||
LogEst nIter;
|
LogEst nIter;
|
||||||
|
|||||||
@@ -373,4 +373,21 @@ do_execsql_test skipscan1-2.3 {
|
|||||||
SELECT a,b,c,d,'|' FROM t6 WHERE d<>99 AND b=345 ORDER BY a DESC;
|
SELECT a,b,c,d,'|' FROM t6 WHERE d<>99 AND b=345 ORDER BY a DESC;
|
||||||
} {}
|
} {}
|
||||||
|
|
||||||
|
# 2019-07-29 Ticket ced41c7c7d6b4d36
|
||||||
|
# Skip-scan is disabled for DISTINCT queries
|
||||||
|
#
|
||||||
|
db close
|
||||||
|
sqlite3 db :memory:
|
||||||
|
do_execsql_test skipscan1-3.1 {
|
||||||
|
CREATE TABLE t1 (c1, c2, c3, c4, PRIMARY KEY(c4, c3));
|
||||||
|
INSERT INTO t1 VALUES(NULL,0,1,NULL);
|
||||||
|
INSERT INTO t1 VALUES(0,NULL,1,NULL);
|
||||||
|
INSERT INTO t1 VALUES(NULL,NULL,1,NULL);
|
||||||
|
ANALYZE sqlite_master;
|
||||||
|
INSERT INTO sqlite_stat1 VALUES('t1','sqlite_autoindex_t1_1','18 18 6');
|
||||||
|
ANALYZE sqlite_master;
|
||||||
|
SELECT DISTINCT quote(c1), quote(c2), quote(c3), quote(c4), '|'
|
||||||
|
FROM t1 WHERE t1.c3 = 1;
|
||||||
|
} {NULL 0 1 NULL | 0 NULL 1 NULL | NULL NULL 1 NULL |}
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
|||||||
Reference in New Issue
Block a user