]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
The collating sequence of the column must be TEXT if the LIKE or GLOB pattern
authordrh <drh@noemail.net>
Thu, 2 May 2019 01:41:53 +0000 (01:41 +0000)
committerdrh <drh@noemail.net>
Thu, 2 May 2019 01:41:53 +0000 (01:41 +0000)
starts with a "+" sign.  This is another case of ticket
[c94369cae9b561b1f996d005] that was discovered by Manuel Rigger.

FossilOrigin-Name: b043a54c3de54b286c4eae564eab6b99118a410d99bdb63480faba3123d2ca11

manifest
manifest.uuid
src/whereexpr.c
test/like3.test

index 6e3dac55c2801d114300ec838b67fb23f0aef8bb..c5d7ac5c435f16c8d4a92eec0c496a906aff6b9c 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\san\sissue\s(discovered\sby\sOSSFuzz)\sin\sthe\senhanced\sOP_Concat\soperator\nfrom\scheck-in\s[713caa382cf7dd]\searlier\stoday.
-D 2019-05-02T00:52:50.915
+C The\scollating\ssequence\sof\sthe\scolumn\smust\sbe\sTEXT\sif\sthe\sLIKE\sor\sGLOB\spattern\nstarts\swith\sa\s"+"\ssign.\s\sThis\sis\sanother\scase\sof\sticket\n[c94369cae9b561b1f996d005]\sthat\swas\sdiscovered\sby\sManuel\sRigger.
+D 2019-05-02T01:41:53.006
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -608,7 +608,7 @@ F src/walker.c 7607f1a68130c028255d8d56094ea602fc402c79e1e35a46e6282849d90d5fe4
 F src/where.c 99c7b718ef846ac952016083aaf4e22ede2290beceaf4730a2df55c023251369
 F src/whereInt.h 5f14db426ca46a83eabab1ae9aa6d4b8f27504ad35b64c290916289b1ddb2e88
 F src/wherecode.c 0e76672930bea322eb3606d891a4744be55c09bcd3a995bfd501af62a46e0625
-F src/whereexpr.c 90859652920f153d2c03f075488744be2926625ebd36911bcbcb17d0d29c891c
+F src/whereexpr.c 7fedf990999722dafda5ab8040feac93937a6f95f4671d8d629f2baf014b4b80
 F src/window.c 038c248267e74ff70a2bb9b1884d40fd145c5183b017823ecb6cbb14bc781478
 F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
 F test/affinity2.test a6d901b436328bd67a79b41bb0ac2663918fe3bd
@@ -1088,7 +1088,7 @@ F test/laststmtchanges.test ae613f53819206b3222771828d024154d51db200
 F test/lemon-test01.y 58b764610fd934e189ffbb0bbfa33d171b9cb06019b55bdc04d090d6767e11d7
 F test/like.test 11cfd7d4ef8625389df9efc46735ff0b0b41d5e62047ef0f3bc24c380d28a7a6
 F test/like2.test 3b2ee13149ba4a8a60b59756f4e5d345573852da
-F test/like3.test d3684b5c60dd2d1f9574f9f296b31c995187c8c10c6ca573f9918c96af9ba642
+F test/like3.test b065d1ca38c03dd76caae1d4cc84ed3d6eb3f64b3ff6b0dfad6413a7b406cca4
 F test/limit.test 0c99a27a87b14c646a9d583c7c89fd06c352663e
 F test/limit2.test 9409b033284642a859fafc95f29a5a6a557bd57c1f0d7c3f554bd64ed69df77e
 F test/loadext.test faa4f6eed07a5aac35d57fdd7bc07f8fc82464cfd327567c10cf0ba3c86cde04
@@ -1822,7 +1822,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 ece481695fc3c959c3eba0fb485cdda43a10b06d17259b0121e15bfc5e8e8b9f
-R e11be1adfb0c3f0eaf3587a8d84226ea
+P 3e897702f8f789fe5119b9042fb93eca3fbfcc44564fbfa66c65628725b1157d
+R 9786e5fb7c74febd927aa84f3b72acbe
 U drh
-Z 373f392215a854f1484c07e1e5f7b6f0
+Z a4cc8a25e8e445f4572d088b41336647
index 27e888c142429031623cd421fe37ed14ce4cd010..bbae2efd09fb9acc94d3ee47f347d0cfb4125b27 100644 (file)
@@ -1 +1 @@
-3e897702f8f789fe5119b9042fb93eca3fbfcc44564fbfa66c65628725b1157d
\ No newline at end of file
+b043a54c3de54b286c4eae564eab6b99118a410d99bdb63480faba3123d2ca11
\ No newline at end of file
index 961495c5840ee8c915ec1d431afe39e4b613e4c6..90e1b5be65aa3897177ebdcd5d97c2cbbe0741c9 100644 (file)
@@ -263,11 +263,11 @@ static int isLikeOrGlob(
         }
         zNew[iTo] = 0;
 
-        /* If the RHS begins with a digit or a minus sign, then the LHS must be
+        /* If the RHS begins with a digit or a +/- sign, then the LHS must be
         ** an ordinary column (not a virtual table column) with TEXT affinity.
         ** Otherwise the LHS might be numeric and "lhs >= rhs" would be false
         ** even though "lhs LIKE rhs" is true.  But if the RHS does not start
-        ** with a digit or '-', then "lhs LIKE rhs" will always be false if
+        ** with a digit or +/-, then "lhs LIKE rhs" will always be false if
         ** the LHS is numeric and so the optimization still works.
         **
         ** 2018-09-10 ticket c94369cae9b561b1f996d0054bfab11389f9d033
@@ -277,6 +277,7 @@ static int isLikeOrGlob(
         */
         if( sqlite3Isdigit(zNew[0])
          || zNew[0]=='-'
+         || zNew[0]=='+'
          || (zNew[0]+1=='0' && iTo==1)
         ){
           if( pLeft->op!=TK_COLUMN 
index 89c9efa792f0ad576ba20bf0b2415a4d6376dbdc..f9120e738430b458903bfcd3198e5ae127f13255 100644 (file)
@@ -178,6 +178,16 @@ do_eqp_test like3-5.211 {
   `--SEARCH TABLE t5b USING COVERING INDEX sqlite_autoindex_t5b_1 (x>? AND x<?)
 }
 
+# 2019-05-01
+# another case of the above reported on the mailing list by Manual Rigger.
+#
+do_execsql_test like3-5.300 {
+  CREATE TABLE t5c (c0 REAL);
+  CREATE INDEX t5c_0 ON t5c(c0 COLLATE NOCASE);
+  INSERT INTO t5c(rowid, c0) VALUES (99,'+/');
+  SELECT * FROM t5c WHERE (c0 LIKE '+/');
+} {+/}
+
 # 2019-02-27
 # Verify that the LIKE optimization works with an ESCAPE clause when
 # using PRAGMA case_sensitive_like=ON.