]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Have fts3 ignore empty sets of parenthesis if built with
authordan <dan@noemail.net>
Mon, 14 Jan 2019 11:56:13 +0000 (11:56 +0000)
committerdan <dan@noemail.net>
Mon, 14 Jan 2019 11:56:13 +0000 (11:56 +0000)
SQLITE_ENABLE_FTS3_PARENTHESIS.

FossilOrigin-Name: c93c6b45a317c40eb5c0abb6620d21f5821a601632c791e11e5ce62e039eccda

ext/fts3/fts3_expr.c
manifest
manifest.uuid
test/fts3expr5.test

index a8462020e11d3d16cc971dd3fe03ffe7f845ec2c..5775fbca3c013bad7cb96f0f4a1718f65d81cbb8 100644 (file)
@@ -497,7 +497,6 @@ static int getNextNode(
       int nConsumed = 0;
       pParse->nNest++;
       rc = fts3ExprParse(pParse, zInput+1, nInput-1, ppExpr, &nConsumed);
-      if( rc==SQLITE_OK && !*ppExpr ){ rc = SQLITE_DONE; }
       *pnConsumed = (int)(zInput - z) + 1 + nConsumed;
       return rc;
     }else if( *zInput==')' ){
index 12937cedc56b3bca0cb12cc1ec25f20fb0156c3d..6ad24704e2d81bb4179b0b8e7b72f4351305e622 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Avoid\sreading\soff\sthe\sfront\sof\sa\spage\sbuffer\swhen\sbalancing\sa\scorrupt\nbtree\spage.
-D 2019-01-14T05:48:10.140
+C Have\sfts3\signore\sempty\ssets\sof\sparenthesis\sif\sbuilt\swith\nSQLITE_ENABLE_FTS3_PARENTHESIS.
+D 2019-01-14T11:56:13.183
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in 45a3fef4d325ac0220c2172aeec4e4321da351f073f3b8e8ddea655f49ef6f2b
@@ -84,7 +84,7 @@ F ext/fts3/fts3.c 51313386427f23d5aa3e09688272f4e6bcf2fb28700687ee2676af37f0a7af
 F ext/fts3/fts3.h 3a10a0af180d502cecc50df77b1b22df142817fe
 F ext/fts3/fts3Int.h 3378157f383540857a466420b8279626204434c3eb0dc948ad9bcd3991fc41f5
 F ext/fts3/fts3_aux.c 32e3ecada9014ff577022f9b44c9c5654d59405b39dc57ba8977298157e8c89b
-F ext/fts3/fts3_expr.c 677055b511a8bee2ae818b32f3f7fc8601411522acd5c6a734489049ec9fe529
+F ext/fts3/fts3_expr.c b132af223e90e35b9f9efa9fe63d6ae737d34153a3b6066736086df8abc78a1f
 F ext/fts3/fts3_hash.c 8b6e31bfb0844c27dc6092c2620bdb1fca17ed613072db057d96952c6bdb48b7
 F ext/fts3/fts3_hash.h 39cf6874dc239d6b4e30479b1975fe5b22a3caaf
 F ext/fts3/fts3_icu.c 305ce7fb6036484085b5556a9c8e62acdc7763f0f4cdf5fd538212a9f3720116
@@ -927,7 +927,7 @@ F test/fts3expr.test ebae205a7a89446c32583bcd492dcb817b9f6b31819bb4dde2583bb99c7
 F test/fts3expr2.test 18da930352e5693eaa163a3eacf96233b7290d1a
 F test/fts3expr3.test c4d4a7d6327418428c96e0a3a1137c251b8dfbf8
 F test/fts3expr4.test cac5dd815fe6b5921741abdccdde3b7f50b86394de91e13308ee7986859c4a9f
-F test/fts3expr5.test f9abfffbf5e53d48a33e12a1e8f8ba2c551c9b49
+F test/fts3expr5.test 1368738e3298a7ce0dee3a44d6ebb8f468b2a76f3d1dd18d4ea6d8bc2eeccc1b
 F test/fts3fault.test 9fb7d6266a38806de841f7244bac1b0fe3a1477184bbb10b172d19d2ca6ad692
 F test/fts3fault2.test 6a17a11d8034b1c4eca9f3091649273d56c49ff049e2173df8060f94341e9da0
 F test/fts3first.test dbdedd20914c8d539aa3206c9b34a23775644641
@@ -1798,7 +1798,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 824f93246988ffa213bbd41a7de08886999b1a8ae00fdf6b9767acb6e3ec6a1f
-R 2f2adf3a3a2ba32a22ec63d497830a09
-U drh
-Z 39dac29da4f114d88e1d1d0c8c22da61
+P cb50509020d952fa9efed8df7fa08b07b71ae9bdbdefea216b6e660863291039
+R 513c5d5d05a7bf68768d7506be1c538c
+U dan
+Z 3cd69cc1dca89ff927ba89ca9d578a1e
index ee5a202d5eff1ca89750bd8ac9f7555cafcc95ef..fab212f009a4d819de74cfa41f13037d05b01e34 100644 (file)
@@ -1 +1 @@
-cb50509020d952fa9efed8df7fa08b07b71ae9bdbdefea216b6e660863291039
\ No newline at end of file
+c93c6b45a317c40eb5c0abb6620d21f5821a601632c791e11e5ce62e039eccda
\ No newline at end of file
index 1e0985108e9687b0e746b625cc1dba70ccb26e9d..8673abb73b18c5128d52bfef640652df54545439 100644 (file)
@@ -22,6 +22,10 @@ ifcapable !fts3 {
   return
 }
 
+proc test_fts3expr {expr} {
+  db one {SELECT fts3_exprtest('simple', $expr, 'a', 'b', 'c')}
+}
+
 #-------------------------------------------------------------------------
 # Various forms of empty phrase expressions.
 #
@@ -45,4 +49,19 @@ do_execsql_test 1.5 {
   SELECT rowid FROM t0 WHERE x MATCH '""""';
 } {}
 
+#-------------------------------------------------------------------------
+# Various forms of empty phrase expressions.
+#
+set sqlite_fts3_enable_parentheses 1
+do_test 2.0 {
+  test_fts3expr {(a:123)(b:234)()(c:456)}
+} {AND {AND {PHRASE 0 0 123} {PHRASE 1 0 234}} {PHRASE 2 0 456}}
+do_test 2.1 {
+  test_fts3expr {(a:123)(b:234)(c:456)}
+} {AND {AND {PHRASE 0 0 123} {PHRASE 1 0 234}} {PHRASE 2 0 456}}
+do_test 2.2 {
+  list [catch { test_fts3expr {"123" AND ( )} } msg] $msg
+} {1 {Error parsing expression}}
+
 finish_test
+