]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Case folding in the LIKE operator should look at all bits of the character,
authordrh <drh@noemail.net>
Wed, 20 Jan 2016 14:22:41 +0000 (14:22 +0000)
committerdrh <drh@noemail.net>
Wed, 20 Jan 2016 14:22:41 +0000 (14:22 +0000)
not just the lower 8 bits.  Fix for ticket [80369eddd5c94].  This is a
back-out of check-in [0a99a8c4facf] with a testcase added.

FossilOrigin-Name: 204432ee72fda8e82d244c4aa18de7ec4811b8e1

manifest
manifest.uuid
src/func.c
test/like.test

index 1c1653b60ab86929976430a463328fc6607c3fcd..d21c7850c5f93661353f6733bd664701ab99b0c5 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Improve\sperformance\sof\ssqlite3VtabImportErrmsg().
-D 2016-01-20T08:47:55.546
+C Case\sfolding\sin\sthe\sLIKE\soperator\sshould\slook\sat\sall\sbits\sof\sthe\scharacter,\nnot\sjust\sthe\slower\s8\sbits.\s\sFix\sfor\sticket\s[80369eddd5c94].\s\sThis\sis\sa\nback-out\sof\scheck-in\s[0a99a8c4facf]\swith\sa\stestcase\sadded.
+D 2016-01-20T14:22:41.167
 F Makefile.in a476545d0c8626224d0bacac85c6e2967474af81
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 01e855f958932d0d3ed62ec675fc63e2cef61fcb
@@ -301,7 +301,7 @@ F src/delete.c 00af9f08a15ddc5cba5962d3d3e5bf2d67b2e7da
 F src/expr.c df0d7c3230d59abd679da22ff5ce4cfd0e3a0e63
 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
 F src/fkey.c e18b3dff7d47c7bcac5ac4fc178a89b9fd322b44
-F src/func.c ccaf46fa98f795673afbfab73dff7c18db88f3cd
+F src/func.c ba6c03f9e440f5693086c08ee88e6e60212b3504
 F src/global.c bd5a0af3f30b0c01be6db756c626cd3c33a3d260
 F src/hash.c 4263fbc955f26c2e8cdc0cf214bc42435aa4e4f5
 F src/hash.h c8f3c31722cf3277d03713909761e152a5b81094
@@ -836,7 +836,7 @@ F test/json103.test 923b288a0610ec86c0951778f7db19cbcca36ad1
 F test/keyword1.test 37ef6bba5d2ed5b07ecdd6810571de2956599dff
 F test/lastinsert.test 42e948fd6442f07d60acbd15d33fb86473e0ef63
 F test/laststmtchanges.test ae613f53819206b3222771828d024154d51db200
-F test/like.test edcf6d0a055816fd793eab92454597c1be91f720
+F test/like.test 81632c437a947bf1f7130b19537da6a1a844806a
 F test/like2.test 3b2ee13149ba4a8a60b59756f4e5d345573852da
 F test/like3.test 3608a2042b6f922f900fbfd5d3ce4e7eca57f7c4
 F test/limit.test 0c99a27a87b14c646a9d583c7c89fd06c352663e
@@ -1419,7 +1419,8 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P ff8eadbed5004ab03438f737492387dee6b9750a
-R 9def3e1e6201afa0dc73a868079c61c0
-U dan
-Z 16223910bb7e7f6f85293111cf2f150d
+P 18d61c8e40ed1466b6a3a2f53bf0eeb09687c20e
+Q -0a99a8c4facf65ec67d8d86108c9a3f723f7cbd6
+R a12b99ab1200f8dc9c9bb177fd701c6e
+U drh
+Z 48772c507adcfea733ff1f22cebdbc4d
index eacc6db99072cd0c75395e87db371332f277383a..f32ef30853da6e03ef7869b092c40cc2e8aac458 100644 (file)
@@ -1 +1 @@
-18d61c8e40ed1466b6a3a2f53bf0eeb09687c20e
\ No newline at end of file
+204432ee72fda8e82d244c4aa18de7ec4811b8e1
\ No newline at end of file
index 45bbb35cd8406f08edf86f3f3c9dc33515155d06..b927296782b25bd7d4d6fd62d7ed987f2e47f4a8 100644 (file)
@@ -739,7 +739,7 @@ static int patternCompare(
     }
     c2 = Utf8Read(zString);
     if( c==c2 ) continue;
-    if( noCase && sqlite3Tolower(c)==sqlite3Tolower(c2) ){
+    if( noCase && c<0x80 && c2<0x80 && sqlite3Tolower(c)==sqlite3Tolower(c2) ){
       continue;
     }
     if( c==matchOne && zPattern!=zEscaped && c2!=0 ) continue;
index ceb5f2bfaca67caabc1c24cdb6c28d7bdbc2ebeb..fba89e9037d42d7284ef7dc2ad5e1838fcac3bac 100644 (file)
@@ -964,5 +964,22 @@ do_execsql_test like-12.16 {
   SELECT id FROM t12b WHERE x LIKE 'abc%' COLLATE binary ORDER BY +id;
 } {/SCAN/}
 
+# Ticket [https://www.sqlite.org/src/tktview/80369eddd5c94d49f7fbbcf5]
+# 2016-01-20
+#
+do_execsql_test like-13.1 {
+  SELECT char(0x304d) LIKE char(0x306d);
+} {0}
+do_execsql_test like-13.2 {
+  SELECT char(0x4d) LIKE char(0x306d);
+} {0}
+do_execsql_test like-13.3 {
+  SELECT char(0x304d) LIKE char(0x6d);
+} {0}
+do_execsql_test like-13.4 {
+  SELECT char(0x4d) LIKE char(0x6d);
+} {1}
+
+
 
 finish_test