From: dan Date: Mon, 14 Jan 2019 11:56:13 +0000 (+0000) Subject: Have fts3 ignore empty sets of parenthesis if built with X-Git-Tag: version-3.27.0~158 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=68c1f9ce9a33d745205d21261cb44124dde057bc;p=thirdparty%2Fsqlite.git Have fts3 ignore empty sets of parenthesis if built with SQLITE_ENABLE_FTS3_PARENTHESIS. FossilOrigin-Name: c93c6b45a317c40eb5c0abb6620d21f5821a601632c791e11e5ce62e039eccda --- diff --git a/ext/fts3/fts3_expr.c b/ext/fts3/fts3_expr.c index a8462020e1..5775fbca3c 100644 --- a/ext/fts3/fts3_expr.c +++ b/ext/fts3/fts3_expr.c @@ -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==')' ){ diff --git a/manifest b/manifest index 12937cedc5..6ad24704e2 100644 --- 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 diff --git a/manifest.uuid b/manifest.uuid index ee5a202d5e..fab212f009 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -cb50509020d952fa9efed8df7fa08b07b71ae9bdbdefea216b6e660863291039 \ No newline at end of file +c93c6b45a317c40eb5c0abb6620d21f5821a601632c791e11e5ce62e039eccda \ No newline at end of file diff --git a/test/fts3expr5.test b/test/fts3expr5.test index 1e0985108e..8673abb73b 100644 --- a/test/fts3expr5.test +++ b/test/fts3expr5.test @@ -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 +