]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add the IS DISTINCT FROM and IS NOT DISTINCT FROM operators.
authordrh <drh@noemail.net>
Sat, 13 Jun 2015 11:48:52 +0000 (11:48 +0000)
committerdrh <drh@noemail.net>
Sat, 13 Jun 2015 11:48:52 +0000 (11:48 +0000)
FossilOrigin-Name: 0be4478209fc3544152874fde2750ce86b410221

manifest
manifest.uuid
src/parse.y

index 4988aa84897908a47412fc24b9bb63cc9069b762..a67f6ab4f328e3ab4a615e848cc912766e47ad51 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Omit\smutex\scalls\sin\spcache1\swhen\sthe\smutex\sis\sNULL,\sfor\sa\ssignificant\nperformance\simprovement.
-D 2015-06-13T11:19:47.811
+C Add\sthe\sIS\sDISTINCT\sFROM\sand\sIS\sNOT\sDISTINCT\sFROM\soperators.
+D 2015-06-13T11:48:52.517
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 1063c58075b7400d93326b0eb332b48a54f53025
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -239,7 +239,7 @@ F src/os_win.c 27cc135e2d0b8b1e2e4944db1e2669a6a18fa0f8
 F src/os_win.h eb7a47aa17b26b77eb97e4823f20a00b8bda12ca
 F src/pager.c 9bc918a009285f96ec6dac62dd764c7063552455
 F src/pager.h c3476e7c89cdf1c6914e50a11f3714e30b4e0a77
-F src/parse.y 6d60dda8f8d418b6dc034f1fbccd816c459983a8
+F src/parse.y d3388f709c7c03d45d375dd5fb89e54256406143
 F src/pcache.c 10539fb959849ad6efff80050541cab3d25089d4
 F src/pcache.h b44658c9c932d203510279439d891a2a83e12ba8
 F src/pcache1.c 7ca0caf7ec16c365aff3ddb4a7e00734a0e1fe97
@@ -1286,8 +1286,10 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 2e8ad2ead9d146e312c693d9b967bbd5b92429d9 dcf4fb8d764611de60afea27cda0a8548ba7ca82
-R caec30587447e9722ed3cdf5357476d2
-T +closed dcf4fb8d764611de60afea27cda0a8548ba7ca82
+P caf8f574e5c64da461c6dfba8a06cf3fb18aaa42
+R 82263371860b048ad46608f49acbed93
+T *branch * is-distinct-from
+T *sym-is-distinct-from *
+T -sym-trunk *
 U drh
-Z d83dc113d9069d701eaef24905e6fe62
+Z b6ee23a624f1d839afa2fd36813a2640
index aa300ff2654fca95b7114f58ba3576c83342bd81..ecd92a094be92ea098006287d168a0e7610a65cf 100644 (file)
@@ -1 +1 @@
-caf8f574e5c64da461c6dfba8a06cf3fb18aaa42
\ No newline at end of file
+0be4478209fc3544152874fde2750ce86b410221
\ No newline at end of file
index d7aa763683348caaa943b078da04ed5aa0600d8e..1ca1161c47c1305fa8753c8b06363d973eecbfec 100644 (file)
@@ -991,6 +991,8 @@ expr(A) ::= expr(X) NOT NULL(E). {spanUnaryPostfix(&A,pParse,TK_NOTNULL,&X,&E);}
 
 //    expr1 IS expr2
 //    expr1 IS NOT expr2
+//    expr1 IS DISTINCT FROM expr2
+//    expr1 IS NOT DISTINCT FROM expr2
 //
 // If expr2 is NULL then code as TK_ISNULL or TK_NOTNULL.  If expr2
 // is any other expression, code as TK_IS or TK_ISNOT.
@@ -1003,6 +1005,14 @@ expr(A) ::= expr(X) IS NOT expr(Y). {
   spanBinaryExpr(&A,pParse,TK_ISNOT,&X,&Y);
   binaryToUnaryIfNull(pParse, Y.pExpr, A.pExpr, TK_NOTNULL);
 }
+expr(A) ::= expr(X) IS DISTINCT FROM expr(Y).     {
+  spanBinaryExpr(&A,pParse,TK_ISNOT,&X,&Y);
+  binaryToUnaryIfNull(pParse, Y.pExpr, A.pExpr, TK_NOTNULL);
+}
+expr(A) ::= expr(X) IS NOT DISTINCT FROM expr(Y). {
+  spanBinaryExpr(&A,pParse,TK_IS,&X,&Y);
+  binaryToUnaryIfNull(pParse, Y.pExpr, A.pExpr, TK_ISNULL);
+}
 
 %include {
   /* Construct an expression node for a unary prefix operator