]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Special handling of the NULL keyword. Sometimes it is a literal, and sometimes
authordrh <drh@noemail.net>
Mon, 8 Jan 2018 19:29:28 +0000 (19:29 +0000)
committerdrh <drh@noemail.net>
Mon, 8 Jan 2018 19:29:28 +0000 (19:29 +0000)
it is a keyword.

FossilOrigin-Name: db5d138e97f22ad4d4d11dbef96df93696ba0e557809066bc263ca3c3898f349

ext/misc/normalize.c
manifest
manifest.uuid

index fe5fb01b4deaae938b1879933e31a8aded6b79af..a3c00210f65a4da32403b8c5b4a87a35b9e9ecd5 100644 (file)
@@ -573,6 +573,17 @@ char *sqlite3_normalize(const char *zSql){
       }
       case TK_PUNCT:
       case TK_NAME: {
+        if( n==4 && sqlite3_strnicmp(zSql+i,"NULL",4)==0 ){
+          if( (j>=3 && strncmp(z+j-2,"is",2)==0 && !IdChar(z[j-3]))
+           || (j>=4 && strncmp(z+j-3,"not",3)==0 && !IdChar(z[j-4]))
+          ){
+            /* NULL is a keyword in this case, not a literal value */
+          }else{
+            /* Here the NULL is a literal value */
+            z[j++] = '?';
+            break;
+          }
+        }
         if( j>0 && IdChar(z[j-1]) && IdChar(zSql[i]) ) z[j++] = ' ';
         for(k=0; k<n; k++){
           z[j++] = sqlite3Tolower(zSql[i+k]);
index 4cc5e208a8caf8524756e7f8a2ed85d7ec995055..2c752a40dbe48b3609ef4b9baf153647dc40d311 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\sIN-operator\snormalizating\sand\sthe\sSQLITE_NORMALIZE_CLI\scompile-time\noption\sfor\sgenerating\sa\sstand-alone\sprogram.
-D 2018-01-08T19:18:27.144
+C Special\shandling\sof\sthe\sNULL\skeyword.\s\sSometimes\sit\sis\sa\sliteral,\sand\ssometimes\nit\sis\sa\skeyword.
+D 2018-01-08T19:29:28.438
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F Makefile.in 12b6daa4bdb03fa87da27cbc205ff88ace645475b5be79414a3038b68ade14cb
@@ -284,7 +284,7 @@ F ext/misc/json1.c dbe086615b9546c156bf32b9378fc09383b58bd17513b866cfd24c1e15281
 F ext/misc/memvfs.c ab36f49e02ebcdf85a1e08dc4d8599ea8f343e073ac9e0bca18a98b7e1ec9567
 F ext/misc/mmapwarm.c 70b618f2d0bde43fae288ad0b7498a629f2b6f61b50a27e06fae3cd23c83af29
 F ext/misc/nextchar.c 35c8b8baacb96d92abbb34a83a997b797075b342
-F ext/misc/normalize.c c5f9b3968bf0bfac6ca1c1f802a30ca08e96a9ac7ab3297190b2745046d7d838
+F ext/misc/normalize.c f26e69c7539f74dbc0a00468df117bb9085f229ecb64d65c10ebf59a010511bb
 F ext/misc/percentile.c 92699c8cd7d517ff610e6037e56506f8904dae2e
 F ext/misc/regexp.c a68d25c659bd2d893cd1215667bbf75ecb9dc7d4
 F ext/misc/remember.c add730f0f7e7436cd15ea3fd6a90fd83c3f706ab44169f7f048438b7d6baa69c
@@ -1698,7 +1698,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 84814aac81e54f03430f180926156ab0fc01e22bbce2bb228b698ea0d4a588ea
-R 52aee785605536a5becd57b22eca4f38
+P d77dbb398afa80c1b3373c55f278491e83d5c80ddc22dbc303876bdcbc127df9
+R 52c05b49206cf2984d560c493371a137
 U drh
-Z be9e0b00c5811d466485564c364b04ac
+Z 26ab19c5b91f60ca62a12106abc7db8e
index 6aaff97c39d2b9a02d5c53dfa1033c6f0f1e452e..c338d86fc572d4b10b0d666d10d1abc9992f520e 100644 (file)
@@ -1 +1 @@
-d77dbb398afa80c1b3373c55f278491e83d5c80ddc22dbc303876bdcbc127df9
\ No newline at end of file
+db5d138e97f22ad4d4d11dbef96df93696ba0e557809066bc263ca3c3898f349
\ No newline at end of file