]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Mark the ICU extension functions as deterministic.
authordrh <drh@noemail.net>
Wed, 23 Nov 2016 20:12:37 +0000 (20:12 +0000)
committerdrh <drh@noemail.net>
Wed, 23 Nov 2016 20:12:37 +0000 (20:12 +0000)
FossilOrigin-Name: 8fd2fccefb8885c7e8bae312c184d78187889d32

ext/icu/icu.c
manifest
manifest.uuid
test/cursorhint2.test

index 0e3338748673da60b81de1dba876b422b94f5c26..d2beaa3353478bd2628accaa3c389bc0db515a94 100644 (file)
@@ -500,20 +500,20 @@ int sqlite3IcuInit(sqlite3 *db){
     void *pContext;                           /* sqlite3_user_data() context */
     void (*xFunc)(sqlite3_context*,int,sqlite3_value**);
   } scalars[] = {
-    {"regexp", 2, SQLITE_ANY,          0, icuRegexpFunc},
+    {"regexp", 2, SQLITE_ANY|SQLITE_DETERMINISTIC,          0, icuRegexpFunc},
 
-    {"lower",  1, SQLITE_UTF16,        0, icuCaseFunc16},
-    {"lower",  2, SQLITE_UTF16,        0, icuCaseFunc16},
-    {"upper",  1, SQLITE_UTF16, (void*)1, icuCaseFunc16},
-    {"upper",  2, SQLITE_UTF16, (void*)1, icuCaseFunc16},
+    {"lower",  1, SQLITE_UTF16|SQLITE_DETERMINISTIC,        0, icuCaseFunc16},
+    {"lower",  2, SQLITE_UTF16|SQLITE_DETERMINISTIC,        0, icuCaseFunc16},
+    {"upper",  1, SQLITE_UTF16|SQLITE_DETERMINISTIC, (void*)1, icuCaseFunc16},
+    {"upper",  2, SQLITE_UTF16|SQLITE_DETERMINISTIC, (void*)1, icuCaseFunc16},
 
-    {"lower",  1, SQLITE_UTF8,         0, icuCaseFunc16},
-    {"lower",  2, SQLITE_UTF8,         0, icuCaseFunc16},
-    {"upper",  1, SQLITE_UTF8,  (void*)1, icuCaseFunc16},
-    {"upper",  2, SQLITE_UTF8,  (void*)1, icuCaseFunc16},
+    {"lower",  1, SQLITE_UTF8|SQLITE_DETERMINISTIC,         0, icuCaseFunc16},
+    {"lower",  2, SQLITE_UTF8|SQLITE_DETERMINISTIC,         0, icuCaseFunc16},
+    {"upper",  1, SQLITE_UTF8|SQLITE_DETERMINISTIC,  (void*)1, icuCaseFunc16},
+    {"upper",  2, SQLITE_UTF8|SQLITE_DETERMINISTIC,  (void*)1, icuCaseFunc16},
 
-    {"like",   2, SQLITE_UTF8,         0, icuLikeFunc},
-    {"like",   3, SQLITE_UTF8,         0, icuLikeFunc},
+    {"like",   2, SQLITE_UTF8|SQLITE_DETERMINISTIC,         0, icuLikeFunc},
+    {"like",   3, SQLITE_UTF8|SQLITE_DETERMINISTIC,         0, icuLikeFunc},
 
     {"icu_load_collation",  2, SQLITE_UTF8, (void*)db, icuLoadCollation},
   };
index 12227ce858e2764431ce5700ca88663e874151a4..f530df5b08800f337d94ed9c532c95ed8efecbb0 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Handle\ssome\sobscure\s"row\svalue\smisused"\scases\sthat\scould\scause\ssegfaults\sor\nassertion\sfailures.
-D 2016-11-23T19:43:48.606
+C Mark\sthe\sICU\sextension\sfunctions\sas\sdeterministic.
+D 2016-11-23T20:12:37.140
 F Makefile.in 6fd48ffcf7c2deea7499062d1f3747f986c19678
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 5151cc64c4c05f3455f4f692ad11410a810d937f
@@ -202,7 +202,7 @@ F ext/fts5/tool/loadfts5.tcl 95b03429ee6b138645703c6ca192c3ac96eaf093
 F ext/fts5/tool/mkfts5c.tcl d1c2a9ab8e0ec690a52316f33dd9b1d379942f45
 F ext/fts5/tool/showfts5.tcl d54da0e067306663e2d5d523965ca487698e722c
 F ext/icu/README.txt d9fbbad0c2f647c3fdf715fc9fd64af53aedfc43
-F ext/icu/icu.c 7d371146fff9c21d4f7a806866c578f61b566511
+F ext/icu/icu.c 03ff6f90f3004a7e5a86205b581b2b7035ebf6e1
 F ext/icu/sqliteicu.h 728867a802baa5a96de7495e9689a8e01715ef37
 F ext/misc/amatch.c 211108e201105e4bb0c076527b8cfd34330fc234
 F ext/misc/carray.c 40c27641010a4dc67e3690bdb7c9d36ca58b3c2d
@@ -624,7 +624,7 @@ F test/cse.test 277350a26264495e86b1785f34d2d0c8600e021c
 F test/csv01.test e0ba3caaa57e4c667a0b45977689fb8082f14348
 F test/ctime.test 0b995accd44a52914bd4744d5c1b6e1a56c7897c
 F test/cursorhint.test 7bc346788390475e77a345da2b92270d04d35856
-F test/cursorhint2.test 2b45341d32d1aae9991a00ef31ebca339b274255
+F test/cursorhint2.test fa41f0d997e67db921d08c31e73111b32811201a
 F test/date.test 984ac1e3e5e031386866f034006148d3972b4a65
 F test/dbstatus.test 73149851b3aff14fc6db478e58f9083a66422cf5
 F test/dbstatus2.test e93ab03bfae6d62d4d935f20de928c19ca0ed0ab
@@ -1526,8 +1526,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P f8cf7ff1560dbd0dde5e6d4c9c22cd8ff43cce09
-Q +fba5fddb1c40af75634b01c1f06d2610df697e01
-R cc14965c773e4ee95acd7e84c4e8fcdc
+P 794763fd6c04cabb16300421ade169131b7d308d
+Q +afbbb6c66a85ff3f4c8dce677e0892a2a51d2b8e
+R 33f3ac41ee3c3d90a8c94fdad486afd8
 U drh
-Z 30076a151f3c94f95238356bd6d8d16d
+Z 2ed9a3d689a240e363cf630c50009bbb
index 3ee9cb21f1d988efb83db322368b661cf4265275..45cafe571fdb2a741b889126f6c8e6a6171a297f 100644 (file)
@@ -1 +1 @@
-794763fd6c04cabb16300421ade169131b7d308d
\ No newline at end of file
+8fd2fccefb8885c7e8bae312c184d78187889d32
\ No newline at end of file
index 3444fdf441bea756b54504b7fb413ca54a599697..bc447d0f2242eb816e71455e68981a03169fd8ea 100644 (file)
@@ -164,17 +164,19 @@ do_extract_hints_test 2.10 {
   x2 {AND(EQ(c1,ADD(32,32)),EQ(c0,r[2]))}
 }
 
-do_extract_hints_test 2.11 {
-  SELECT * FROM x1 LEFT JOIN x2 ON (a=x) WHERE x2.b LIKE 'abc%'
-} {
-  x2 {AND(expr,EQ(c0,r[2]))}
+ifcapable !icu {
+  # This test only works using the built-in LIKE, not the ICU LIKE extension.
+  do_extract_hints_test 2.11 {
+    SELECT * FROM x1 LEFT JOIN x2 ON (a=x) WHERE x2.b LIKE 'abc%'
+  } {
+    x2 {AND(expr,EQ(c0,r[2]))}
+  }
 }
 
-do_extract_hints_test 2.11 {
+do_extract_hints_test 2.12 {
   SELECT * FROM x1 LEFT JOIN x2 ON (a=x) WHERE coalesce(x2.b, 1)
 } {
   x2 {EQ(c0,r[2])}
 }
 
 finish_test
-