]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Disable the skip-scan optimization for DISTINCT queries.
authordrh <drh@noemail.net>
Tue, 30 Jul 2019 01:17:03 +0000 (01:17 +0000)
committerdrh <drh@noemail.net>
Tue, 30 Jul 2019 01:17:03 +0000 (01:17 +0000)
Fix for ticket [ced41c7c7d6b4d36]

FossilOrigin-Name: a871d69c6de65038360aa6142fbad22689fb347e526cca56bb83e695c1441fbe

manifest
manifest.uuid
src/where.c
test/skipscan1.test

index 4f979abb1a820083437d19646d16ade53f565f34..f940ffbed65ce89b58929b011bac47b436ea11b1 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Convert\san\sassert()\sin\sR-Tree\sinto\sa\sdatabase\scorruption\sdetection\scase.
-D 2019-07-29T17:18:45.497
+C Disable\sthe\sskip-scan\soptimization\sfor\sDISTINCT\squeries.\nFix\sfor\sticket\s[ced41c7c7d6b4d36]
+D 2019-07-30T01:17:03.473
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -609,7 +609,7 @@ F src/vxworks.h d2988f4e5a61a4dfe82c6524dd3d6e4f2ce3cdb9
 F src/wal.c bbd6838bd79c0a32144d482fb0b6a9d2d1a252fb3b16d5005ec30f2f80413b0d
 F src/wal.h 606292549f5a7be50b6227bd685fa76e3a4affad71bb8ac5ce4cb5c79f6a176a
 F src/walker.c d5a94907dcac990e31976be9dc769d17f6a806782593d6aec9d760ee01ec22cd
-F src/where.c a3c9a0e1215c0e67e508014084e8f47271895b56f780fc26ac57be34fac33c1a
+F src/where.c 03125c703ae26ae6ec32bc2e5563b38e41082c120d6d6e526c5f0174ce1cbd93
 F src/whereInt.h 6fab4b6f7e4ae716f112ee09cd1343fc6dde3d4a1831feabc6b3ed3b54b8eef3
 F src/wherecode.c 37a1004237d630d785c47bba2290eac652a7a8b0047518eba3cb7c808b604c4a
 F src/whereexpr.c 5e559bdd24b06e3bc2e68f258bf751302954dc1e432daf71fdd8098a71462326
@@ -1329,7 +1329,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 b1fef3046d555836712d4a3a7c8ae8193356c6a15bee59cb3976e4ee98596c97
+F test/skipscan1.test 64ad7a05a3c336e0280ac277c656b029d723071a18afc22beb3e352058e05c03
 F test/skipscan2.test 3eb703ce794f139e7b83567911046298bcde29606116727f9b700ce34f559d2d
 F test/skipscan3.test ec5bab3f81c7038b43450e7b3062e04a198bdbb5
 F test/skipscan5.test 67817a4b6857c47e0e33ba3e506da6f23ef68de2
@@ -1838,7 +1838,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 11f7f94f1c5d761e7f381e277658b7e857cc369283996c509061de55fd6aad52
-R 4b6136e9b391e089f928150a88e88819
+P 48b518eb6f76fb0beb161d1ebcf3b793efc36262d6d77a1ad5906b6501138e28
+R cc614d2cc68120f92ad0f4eec7ab3887
 U drh
-Z d18c141f950c38e740b9d65f9c3aa0d1
+Z 570b02f38ebd5b0effe898329e81f79a
index 95480f60010889d5bb748dae095088c32cf91b21..ace1a0b23df6cb836729c1b71b23b61731463813 100644 (file)
@@ -1 +1 @@
-48b518eb6f76fb0beb161d1ebcf3b793efc36262d6d77a1ad5906b6501138e28
\ No newline at end of file
+a871d69c6de65038360aa6142fbad22689fb347e526cca56bb83e695c1441fbe
\ No newline at end of file
index 2e6ca3acf262ef32cfe5b75127cd967333e20e93..27c407976a4118d068afcfb79c1924f754f2b20c 100644 (file)
@@ -2723,6 +2723,7 @@ static int whereLoopAddBtreeIndex(
    && pProbe->noSkipScan==0
    && OptimizationEnabled(db, SQLITE_SkipScan)
    && 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
   ){
     LogEst nIter;
index 6aaf5335fe9ae53d8804b0db54fc436b41b79587..ad3b82db78e6571d051790daccd447d490f285b5 100644 (file)
@@ -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;
 } {}
 
+# 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