]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix the exprCompareVariable() routine so that it works for non-UTF8 text. partial-index-variables
authordrh <drh@noemail.net>
Thu, 29 Jun 2017 01:23:12 +0000 (01:23 +0000)
committerdrh <drh@noemail.net>
Thu, 29 Jun 2017 01:23:12 +0000 (01:23 +0000)
FossilOrigin-Name: 25acd9658be792d686b3ebfaa8c3692f9830e043538ed0afecf97110a07758a4

manifest
manifest.uuid
src/expr.c

index 9c0d6e0773e7580be372dcc549a0184e478c8136..80e49170d6e91cca078d819605b4b3bc9a1847a5 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Alternative\simplementation\sof\sexprCompareVariable().\s\sNeed\sto\srun\stests\son\nboth\sthis\sbranch\sand\sthe\soriginal\sto\ssee\swhich\sone\sto\sgo\swith.
-D 2017-06-28T21:47:16.657
+C Fix\sthe\sexprCompareVariable()\sroutine\sso\sthat\sit\sworks\sfor\snon-UTF8\stext.
+D 2017-06-29T01:23:12.291
 F Makefile.in 1cc758ce3374a32425e4d130c2fe7b026b20de5b8843243de75f087c0a2661fb
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 8eeb80162074004e906b53d7340a12a14c471a83743aab975947e95ce061efcc
@@ -359,7 +359,7 @@ F src/ctime.c e9a6db1321c2353fe922533f202b85abb3084cdf569450abcabf55e21e104550
 F src/date.c cc42a41c7422389860d40419a5e3bce5eaf6e7835c3ba2677751dc653550a5c7
 F src/dbstat.c 19ee7a4e89979d4df8e44cfac7a8f905ec89b77d
 F src/delete.c 3213547e97b676c6fa79948b7a9ede4801ea04a01a2043241deafedf132ecf5d
-F src/expr.c 8281b9e5b88862176862c614acda20fdeb85c20143c5125cee4efd2893c1a64e
+F src/expr.c cc024ddd19aa37b6672caedab90e2a5ec69a4a1a97da94c2f1a0bd81cf0cd922
 F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007
 F src/fkey.c 5ff2c895fe087756d8085dc1a9bc229b5670e2a65c3929dd87c71e43649af333
 F src/func.c 9d52522cc8ae7f5cdadfe14594262f1618bc1f86083c4cd6da861b4cf5af6174
@@ -1585,10 +1585,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 a934dd14ac55177ac541423f4a077484bb3b461b60c9c2e88d067cca922fa2bc
-R d8af740d34bab1193c95ada6cd028712
-T *branch * partial-index-variables-v2
-T *sym-partial-index-variables-v2 *
-T -sym-partial-index-variables *
+P b959c6297c151150ea2dca24aa1f68f3bd76dd6620eb6c03f8dfa59fdd5c13b2
+R 12b2a850985daf065d11c67446406f71
 U drh
-Z 929717708efb4b9fc1714d496de51de5
+Z c02c38fdab65d893d3a1e810ddd8aa5b
index e1a8d56d9ba57967c419ecc4085914cd60820b05..58b71185bedbfeba06ebc373869243b3cca82eeb 100644 (file)
@@ -1 +1 @@
-b959c6297c151150ea2dca24aa1f68f3bd76dd6620eb6c03f8dfa59fdd5c13b2
\ No newline at end of file
+25acd9658be792d686b3ebfaa8c3692f9830e043538ed0afecf97110a07758a4
\ No newline at end of file
index 0443195640e3aa159a97c3b4c9b814850d1dd20d..fc24ffbe062c87ef129af14eae2b74522ecf95d0 100644 (file)
@@ -4683,8 +4683,11 @@ static int exprCompareVariable(Parse *pParse, Expr *pVar, Expr *pExpr){
     iVar = pVar->iColumn;
     sqlite3VdbeSetVarmask(pParse->pVdbe, iVar);
     pL = sqlite3VdbeGetBoundValue(pParse->pReprepare, iVar, SQLITE_AFF_BLOB);
-    if( pL && 0==sqlite3MemCompare(pL, pR, 0) ){
-      res = 1;
+    if( pL ){
+      if( sqlite3_value_type(pL)==SQLITE_TEXT ){
+        sqlite3_value_text(pL); /* Make sure the encoding is UTF-8 */
+      }
+      res =  0==sqlite3MemCompare(pL, pR, 0);
     }
     sqlite3ValueFree(pR);
     sqlite3ValueFree(pL);