]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Mark the ICU extension functions as deterministic.
authordrh <drh@noemail.net>
Fri, 4 Nov 2016 12:03:26 +0000 (12:03 +0000)
committerdrh <drh@noemail.net>
Fri, 4 Nov 2016 12:03:26 +0000 (12:03 +0000)
FossilOrigin-Name: afbbb6c66a85ff3f4c8dce677e0892a2a51d2b8e

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 989b6d5ae6aebedf534ecfe85832a4868afb2519..835eb740f6586e52be53c947af6a20d32e1395e9 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\san\sassert()\sto\ssilence\sa\scoverity\sfalse-positive.
-D 2016-11-04T11:23:30.899
+C Mark\sthe\sICU\sextension\sfunctions\sas\sdeterministic.
+D 2016-11-04T12:03:26.544
 F Makefile.in 6fd48ffcf7c2deea7499062d1f3747f986c19678
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc e0217f2d35a0448abbe4b066132ae20136e8b408
@@ -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 ff6c38e822459d6ca743c34901caf57740b08b54
 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
@@ -1529,7 +1529,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 81c86401463df6be4ac21987b3b1703e38ab933b
-R 1ea1eb2b071ef3b9ddfdbffca7d5e856
+P 97354093bceff28714a605068851cfa026c8272a
+R e3306eee283049a63433ee2c85b74690
 U drh
-Z 2ff0a32c09088faef645f25d6f42c670
+Z 8e57808346e33a5bd8a5f1ed64de48bd
index 0e0c819e43c183f3b4b03d845a66a04d5a124324..a8a561ff4e8907c0e50e1a49273675c1928e331b 100644 (file)
@@ -1 +1 @@
-97354093bceff28714a605068851cfa026c8272a
\ No newline at end of file
+afbbb6c66a85ff3f4c8dce677e0892a2a51d2b8e
\ 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
-