]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Further improvements to the EQP text for flex-search.
authordrh <>
Fri, 13 Jun 2025 11:08:30 +0000 (11:08 +0000)
committerdrh <>
Fri, 13 Jun 2025 11:08:30 +0000 (11:08 +0000)
FossilOrigin-Name: 40a83da50303fa0dd3fae16f35054ef73e41bd2bb170e8c0558aa6d1143aad8c

ext/expert/expert1.test
manifest
manifest.uuid
src/wherecode.c
test/autoindex3.test
test/cost.test
test/like3.test
test/tpch01.test
test/whereN.test
test/wherelimit3.test
test/with3.test

index e89b7be575c458c9caab68f22124e1bd26d37bd0..0313033c7c969b9d56ffc09ef0efb2b182d64dfb 100644 (file)
@@ -77,7 +77,7 @@ foreach {tn setup} {
       $expert destroy
 
       set tst [subst -nocommands {set {} [squish [join {$result}]]}]
-      set tst [string map {{ OR SCAN} {}} $tst]
+      set tst [regsub {, OR SCAN [ a-z0-9]+} $tst {}]
       uplevel [list do_test $tn $tst [string trim [squish $res]]]
     }
   }
@@ -91,7 +91,7 @@ foreach {tn setup} {
     proc do_rec_test {tn sql res} {
       set res [squish [string trim $res]]
       set tst [subst -nocommands { 
-        string map {{ OR SCAN} {}} [squish [string trim [exec $::CLI test.db ".expert" {$sql;}]]]
+        regsub {, OR SCAN [ a-z0-9]+} [squish [string trim [exec $::CLI test.db ".expert" {$sql;}]]] {}
       }]
       uplevel [list do_test $tn $tst $res]
     }
index 53b88ae081aacc943c01377b68f3d7cce6ec7895..12c4ae077592bc0f416afd246ed34dcced55a192 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Change\sthe\sflex-search\sEQP\smessage\sto\sbe\s"SEARCH\s...\sOR\sSCAN"\sas\sthis\sseems\nless\sdisruptive\sand\smore\sreadable.
-D 2025-06-13T00:50:14.385
+C Further\simprovements\sto\sthe\sEQP\stext\sfor\sflex-search.
+D 2025-06-13T11:08:30.514
 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
@@ -71,7 +71,7 @@ F doc/wal-lock.md 7db0cd61e2000b545b78ce89b0c2a9a8dd8d64c097839258ac10d7c5c4156e
 F ext/README.md 6eb1ac267d917767952ed0ef63f55de003b6a5da433ce1fa389e1a9532e73132
 F ext/expert/README.md b321c2762bb93c18ea102d5a5f7753a4b8bac646cb392b3b437f633caf2020c3
 F ext/expert/expert.c d548d603a4cc9e61f446cc179c120c6713511c413f82a4a32b1e1e69d3f086a4
-F ext/expert/expert1.test cb17a345a3c24310622fbf743fb0e23fa04503f4ea1891b08412f80d87370dfe
+F ext/expert/expert1.test c700f0fac91571191a97f4c027d5f10f3bff1aa2ddbccf320a1b14bdbb428c45
 F ext/expert/sqlite3expert.c cf4b1e5584862f486a4c6014ddb081831f1c512065dcf35644638d57179979d6
 F ext/expert/sqlite3expert.h ca81efc2679a92373a13a3e76a6138d0310e32be53d6c3bfaedabd158ea8969b
 F ext/expert/test_expert.c c395134bd6d4efa594a7d26578a1cb624c4027b79b4b5fcd44736c5ef1f5f725
@@ -869,7 +869,7 @@ F src/wal.h ba252daaa94f889f4b2c17c027e823d9be47ce39da1d3799886bbd51f0490452
 F src/walker.c d5006d6b005e4ea7302ad390957a8d41ed83faa177e412f89bc5600a7462a014
 F src/where.c 1a663cfc00974dec3e37e378f407ffc5a6ce0c06506b8b7ea27c1fc592746f0e
 F src/whereInt.h b0c5487551dc7821426cac213fd5c194a558cab9dfd4e130d71f7afa6416463c
-F src/wherecode.c 3f7bcdf22c0ee63d778cfd7a23c4c97ffb1574e2e8047c7ef53e3722eb0155d5
+F src/wherecode.c 047dfafac78818a2dd5c9fa7075e3f0d8a01416f6ea312e686c9d559a35114a3
 F src/whereexpr.c 2415c8eee5ff89a8b709d7d83d71c1ff986cd720d0520057e1d8a5371339012a
 F src/window.c d01227141f622f24fbe36ca105fbe6ef023f9fd98f1ccd65da95f88886565db5
 F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
@@ -932,7 +932,7 @@ F test/autoanalyze1.test b9cc3f32a990fa56669b668d237c6d53e983554ae80c0604992e188
 F test/autoinc.test 9df9930966dbe92c55ef37a4d89112cfd537be0d0596d397177c12db9e581be0
 F test/autoindex1.test 65931519206bbec71948b11e125af0656435a0937973fe5fed70d776a712911f
 F test/autoindex2.test 12ef578928102baaa0dc23ad397601a2f4ecb0df
-F test/autoindex3.test 5ac57438d9d83d13c0302a28e40dfa0df0886905c4207883a60c67516ce2791f
+F test/autoindex3.test 0d78b07de5519f0d415f24481b7de998db997b5054036608a09ca241bb078b15
 F test/autoindex4.test 3c2105e9172920e26f950ba3c5823e4972190e022c1e6f260ba476b0af24c593
 F test/autoindex5.test 3fb938cbf4e7f3896563ce04e2a24b0bc653fc6245b4bf3268cd7b20f441d87f
 F test/autovacuum.test 00671369bbf96c6a49989a9425f5b78b94075d6a4b031e5e00000c2c32f365df
@@ -1051,7 +1051,7 @@ F test/corruptK.test ac13504593d89d69690d45479547616ed12644d42b5cb7eeb2e759a76fc
 F test/corruptL.test 652fc8ac0763a6fd3eb28b951d481924167b2d9936083bcc68253b2274a0c8fe
 F test/corruptM.test 7d574320e08c1b36caa3e47262061f186367d593a7e305d35f15289cc2c3e067
 F test/corruptN.test a034bb217bebd8d007625dfb078e76ec3d53515052dbceb68bd47b2c27674d5c
-F test/cost.test 280e7b7f9f6b0b5558ae3c3ab91f5d22f9b63999c12f03bb1799173158d36904
+F test/cost.test 10a7020c9789be27f5cfac90c2c36a39c0282276e1461b824ba1f8eccdb6e01c
 F test/count.test cd4bd531066e8d77ef8fe1e3fc8253d042072e117ccab214b290cf83f1602249
 F test/countofview.test 4088e461a10ee33e69803c177a69aa1d7bba81a9ffc2df66d76465a22ca7fdfc
 F test/coveridxscan.test f35c7208dedc4f98e471c569df64c0f95a49f6e072d8dc7c8f99bdee2697de1b
@@ -1405,7 +1405,7 @@ F test/laststmtchanges.test ae613f53819206b3222771828d024154d51db200
 F test/lemon-test01.y 70110eff607ab137ccc851edb2bc7e14a6d4f246b5d2d25f82a60b69d87a9ff2
 F test/like.test 0036f8fe548fceabd1496361bfa262f35cf5ed17c794bd15e22e9f3de12e0eb0
 F test/like2.test d3be15fefee3e02fc88942a9b98f26c5339bbdef7783c90023c092c4955fe3d3
-F test/like3.test 86ffc7b04f18a914592f605150c88b9e0da32067684ba38a7fe71f19135c1b49
+F test/like3.test 3eb98719a3b12e1f712915e712cd9214ac8e88c91ddb711f4905cb0af6d96625
 F test/limit.test 350f5d03c29e7dff9a2cde016f84f8d368d40bcd02fa2b2a52fa10c4bf3cbfaf
 F test/limit2.test 621188fc3e5c3b8d2ef9827e05fa8313792ae563579073136efd25cb65325f1b
 F test/literal.test a65dca9fef86e51b8e45544268e37abbd4bb94ba35fd65f6fdcab2f288cd8f79
@@ -1895,7 +1895,7 @@ F test/tkt3992.test f3e7d548ac26f763b47bc0f750da3d03c81071da
 F test/tkt3997.test a335fa41ca3985660a139df7b734a26ef53284bd
 F test/tkt4018.test 18dbc6617f7a4b90e938d1bd6d26ad18daafaf08
 F test/tokenize.test ce430a7aed48fc98301611429595883fdfcab5d7
-F test/tpch01.test 4dd988585c85823bb1037215f2689408186fba85579144ac413bcccda218c10a
+F test/tpch01.test c4a0ed2404412b61a99bbe6695761e540b5fbc0b9cc7a0702c2f873a87af6492
 F test/trace.test a659a9862957f4789e37a92b3bf6d2caf5c86b02cdeefc41e850ae53acf6992a
 F test/trace2.test f5cb67ad3bc09e0c58e8cca78dfd0b5639259983
 F test/trace3.test 2deeac66359c9f007f0fc9fb6336994a5d68fc1a65129f322a9e9546fd537d0a
@@ -2063,12 +2063,12 @@ F test/whereJ.test fc05e374cc9f2dc204148d6c06822c380ad388895fe97a6d335b94a26a08a
 F test/whereK.test 0270ab7f04ba5436fb9156d31d642a1c82727f4c4bfe5ba90d435c78cf44684a
 F test/whereL.test cb115604cc9bd61acbc99a1f1df0eb1ea7a7875a77fef25ba9282f01d10283e1
 F test/whereM.test 0dbc9998783458ddcf3cc078ca7c2951d8b2677d472ecf0028f449ed327c0250
-F test/whereN.test 257fd00052b7973a105fd80ed362d4026e24d0027626385c5cd2808c06f2c66b
+F test/whereN.test c611fb6ded3e8f23604045bb11e160e0854d3e71d2f66505e77f63ab50b54139
 F test/wherefault.test 6cf2a9c5712952d463d3f45ebee7f6caf400984df51a195d884cfb7eb0e837a7
 F test/wherelfault.test 9012e4ef5259058b771606616bd007af5d154e64cc25fa9fd4170f6411db44e3
 F test/wherelimit.test afb46397c6d7e964e6e294ba3569864a0c570fe3807afc634236c2b752372f31
 F test/wherelimit2.test b9e4bfe7b4d7c2f85f99cf2bd2c51369378d04b1f3d1b60557423752003bfd90
-F test/wherelimit3.test 207afe1790f28a67b16a8e4e947dd97fef4883ae7c7536860eae739994da2372
+F test/wherelimit3.test d8830bd51149b20922457ada26c13ce2dd9b0d1f5f76369d658bbd52da786b2c
 F test/widetab1.test c296a98e123762de79917350e45fa33fdf88577a2571eb3a64c8bf7e44ef74d1
 F test/win32heap.test 1ec2ce646aee491ec23bfcdfd005b33c79f13bf91467966f374a76ffe7c7e85f
 F test/win32lock.test e56d7a9b6cf9d5f3867c2dd19ff36c5326881e4038c6867610ecb3a9868ea4eb
@@ -2099,7 +2099,7 @@ F test/windowfault.test 15094c1529424e62f798bc679e3fe9dfab6e8ba2f7dfe8c923b6248c
 F test/windowpushd.test c420e2265f0e09a0e798d0513a660d71b51602088d81b3dbd038918ee1339dcc
 F test/with1.test 1ee171d7c306ab8b0771f3511d870f56c735607729836585bbceb1fc2f47e0b1
 F test/with2.test 181674a6cc86a601ca2ac052741cdfad5b529e07e870435d2f6cdb92d589ff17
-F test/with3.test e0e9d2a866a09ac50f995bacb97aa26f6f34100c351de0c18d671f70188d78d0
+F test/with3.test 4fca9df31cff0b09844aa06274a46cc4d4adaa18477ad108e85422fafc5d0e6f
 F test/with4.test 257be66c0c67fee1defbbac0f685c3465e2cad037f21ce65f23f86084f198205
 F test/with5.test 6248213c41fab36290b5b73aa3f937309dfba337004d9d8434c3fabc8c7d4be8
 F test/with6.test 281e4861b5e517f6c3c2f08517a520c1e2ee7c11966545d3901f258a4fe8ef76
@@ -2208,8 +2208,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350
 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
 F tool/warnings.sh 1ad0169b022b280bcaaf94a7fa231591be96b514230ab5c98fbf15cd7df842dd
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P c46feb36b50d6128177caac346d62643a499a5dbd9d228e225fc4be4bf058240
-R bf857c9695965d4977782542a6373cbe
+P 680e278c3e15d3d2c2e7826bdc8fdf0b5e2086cda0a441fffb13acf9103721a0
+R 24a74817a8c1b843c4fd4ba04bbb47d9
 U drh
-Z e773f51d22b7f7744e30e9929763f944
+Z 0bb8670cd6c332b55e89d61444f7bd49
 # Remove this line to create a well-formed Fossil manifest.
index 61924a0095663776d9fe27c96a92391f3215e068..ac3a4bb3e33ac0cd0ecbd0ad183153efe075c418 100644 (file)
@@ -1 +1 @@
-680e278c3e15d3d2c2e7826bdc8fdf0b5e2086cda0a441fffb13acf9103721a0
+40a83da50303fa0dd3fae16f35054ef73e41bd2bb170e8c0558aa6d1143aad8c
index f195074d6b8d33ddee07efca95d30a9ffa1301d3..098ffaad9d7bcdd068e04e10ccf6cb555ec9db67 100644 (file)
@@ -176,7 +176,7 @@ void sqlite3WhereAddExplainText(
         explainIndexRange(&str, pLoop);
       }
       if( (flags & WHERE_FLEX_SEARCH)!=0 && isSearch ){
-        sqlite3_str_appendf(&str, " OR SCAN");
+        sqlite3_str_appendf(&str, ", OR SCAN %S", pItem);
       }
     }else if( (flags & WHERE_IPK)!=0 && (flags & WHERE_CONSTRAINT)!=0 ){
       char cRangeOp;
index 7f53c76655f0b047d7f8a9a67e0d89929467fbb6..1601325e55e1b836ebf299fe5c86a63efe047011 100644 (file)
@@ -85,7 +85,7 @@ do_eqp_test 220 {
   select count(*) from u, v where u.b = v.b and v.e > 34;
 } {
   QUERY PLAN
-  |--SEARCH v USING INDEX ve (e>?) OR SCAN
+  |--SEARCH v USING INDEX ve (e>?), OR SCAN v
   |--BLOOM FILTER ON u (b=?)
   `--SEARCH u USING AUTOMATIC COVERING INDEX (b=?)
 }
@@ -119,10 +119,10 @@ do_eqp_test 310 {
   QUERY PLAN
   |--CO-ROUTINE children
   |  |--SETUP
-  |  |  `--SEARCH t2 USING INDEX x1 (pid=? AND rx=?) OR SCAN
+  |  |  `--SEARCH t2 USING INDEX x1 (pid=? AND rx=?), OR SCAN t2
   |  `--RECURSIVE STEP
   |     |--SCAN children
-  |     `--SEARCH t2 USING INDEX x1 (pid=? AND rx=?) OR SCAN
+  |     `--SEARCH t2 USING INDEX x1 (pid=? AND rx=?), OR SCAN t2
   `--SCAN children
 }  
 
index 070ae6fad52de20163eb88bb3746adb5f8f07293..cc45b8c62fd3aeb4cbe8fc1654474f5072902ea1 100644 (file)
@@ -110,7 +110,7 @@ do_eqp_test 5.3 {
   SELECT * FROM t2 WHERE x BETWEEN ? AND ? ORDER BY rowid;
 } {
   QUERY PLAN
-  |--SEARCH t2 USING INDEX t2i1 (x>? AND x<?) OR SCAN
+  |--SEARCH t2 USING INDEX t2i1 (x>? AND x<?), OR SCAN t2
   `--USE TEMP B-TREE FOR ORDER BY
 }
 
index 07967f839c54f28093f8ddf26acf027c09b471aa..b3d6e5d975381620bb2a96e8411afe7dded84da1 100644 (file)
@@ -252,26 +252,26 @@ do_eqp_test like3-6.210 {
   SELECT * FROM t2 WHERE path LIKE 'a%';
 } {
   QUERY PLAN
-  `--SEARCH t2 USING INDEX t2path (path>? AND path<?) OR SCAN
+  `--SEARCH t2 USING INDEX t2path (path>? AND path<?), OR SCAN t2
 }
 do_eqp_test like3-6.220 {
   SELECT * FROM t2 WHERE path LIKE 'a%' ESCAPE '\';
 } {
   QUERY PLAN
-  `--SEARCH t2 USING INDEX t2path (path>? AND path<?) OR SCAN
+  `--SEARCH t2 USING INDEX t2path (path>? AND path<?), OR SCAN t2
 }
 db eval {PRAGMA case_sensitive_like=ON}
 do_eqp_test like3-6.230 {
   SELECT * FROM t2 WHERE path LIKE 'a%';
 } {
   QUERY PLAN
-  `--SEARCH t2 USING INDEX t2path2 (path>? AND path<?) OR SCAN
+  `--SEARCH t2 USING INDEX t2path2 (path>? AND path<?), OR SCAN t2
 }
 do_eqp_test like3-6.240 {
   SELECT * FROM t2 WHERE path LIKE 'a%' ESCAPE '\';
 } {
   QUERY PLAN
-  `--SEARCH t2 USING INDEX t2path2 (path>? AND path<?) OR SCAN
+  `--SEARCH t2 USING INDEX t2path2 (path>? AND path<?), OR SCAN t2
 }
 }
 
index abbfb316c468500d4657eaf66f94cfac65b54b58..2824a470921e4626cd82cb224555b817e65a3f45 100644 (file)
@@ -189,7 +189,7 @@ order by
     revenue desc;
 } {
   QUERY PLAN
-  |--SEARCH orders USING INDEX odi (O_ORDERDATE>? AND O_ORDERDATE<?) OR SCAN
+  |--SEARCH orders USING INDEX odi (O_ORDERDATE>? AND O_ORDERDATE<?), OR SCAN orders
   |--SEARCH customer USING INDEX cpki (C_CUSTKEY=?)
   |--SEARCH nation USING INDEX npki (N_NATIONKEY=?)
   |--SEARCH lineitem USING INDEX lpki (L_ORDERKEY=?)
index 869222bf40324b3cc644ae9c1afd9edfbb694f95..d3f43cb27e56f0832ec8f9a854734b9f235f3f35 100644 (file)
@@ -93,7 +93,7 @@ do_eqp_test 1.1 {
   |--CO-ROUTINE (subquery-xxxxxx)
   |  |--SEARCH DS USING COVERING INDEX ds1 (name=?)
   |  |--SEARCH R USING COVERING INDEX rule2 (dsid=?)
-  |  |--SEARCH V USING INDEX v1 (rid=?) OR SCAN
+  |  |--SEARCH V USING INDEX v1 (rid=?), OR SCAN V
   |  `--USE TEMP B-TREE FOR ORDER BY
   `--SCAN (subquery-xxxxxx)
 }
index 1e6d0510780fdd94a4ec1391b804e576b00efede..6b94df83d1442876e0170fa4a18393d8eca604ff 100644 (file)
@@ -29,7 +29,7 @@ do_eqp_test 1.1 {
   SELECT * FROM t1 WHERE a>=100 AND a<300 ORDER BY b LIMIT 5;
 } {
   QUERY PLAN
-  |--SEARCH t1 USING INDEX t1a (a>? AND a<?) OR SCAN
+  |--SEARCH t1 USING INDEX t1a (a>? AND a<?), OR SCAN t1
   `--USE TEMP B-TREE FOR ORDER BY
 }
 ifcapable stat4 {
@@ -46,7 +46,7 @@ do_eqp_test 1.3 {
   SELECT * FROM t1 WHERE a>=100 AND a<300 ORDER BY b LIMIT $::N;
 } {
   QUERY PLAN
-  |--SEARCH t1 USING INDEX t1a (a>? AND a<?) OR SCAN
+  |--SEARCH t1 USING INDEX t1a (a>? AND a<?), OR SCAN t1
   `--USE TEMP B-TREE FOR ORDER BY
 }
 
index e323d77b947ac3a50f549e0a00fdd348f25e983e..cf0ffd76e3f13c8600a4a95fdb4a481124fefdd0 100644 (file)
@@ -95,7 +95,7 @@ ifcapable analyze {
     |  `--RECURSIVE STEP
     |     `--SCAN cnt
     |--SCAN cnt
-    `--SEARCH y1 USING INDEX y1a (a=?) OR SCAN
+    `--SEARCH y1 USING INDEX y1a (a=?), OR SCAN y1
   }]
 
   do_eqp_test 3.1.3 {