]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Use an ALWAY() on conditionals in the transitive constraint logic that are transitive-constraints
authordrh <drh@noemail.net>
Mon, 18 May 2015 12:18:37 +0000 (12:18 +0000)
committerdrh <drh@noemail.net>
Mon, 18 May 2015 12:18:37 +0000 (12:18 +0000)
always true as far as we know.

FossilOrigin-Name: 204e567f68e4b3e069f04ca0643c6e5db781d39f

manifest
manifest.uuid
src/where.c

index 04d8531caf9358a3f924ceef6d000b2b9ab5da07..613107e7c06f424dbb07727c7174741d23216136 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Refinements\sto\sthe\sdetermination\sof\swhen\san\sA==B\sterm\sis\san\sequivalence.\nAdd\stest\scases.
-D 2015-05-18T11:34:52.372
+C Use\san\sALWAY()\son\sconditionals\sin\sthe\stransitive\sconstraint\slogic\sthat\sare\nalways\strue\sas\sfar\sas\swe\sknow.
+D 2015-05-18T12:18:37.067
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in edfc69769e613a6359c42c06ea1d42c3bece1736
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -307,7 +307,7 @@ F src/vxworks.h c18586c8edc1bddbc15c004fa16aeb1e1342b4fb
 F src/wal.c ce2cb2d06faab54d1bce3e739bec79e063dd9113
 F src/wal.h df01efe09c5cb8c8e391ff1715cca294f89668a4
 F src/walker.c c253b95b4ee44b21c406e2a1052636c31ea27804
-F src/where.c 68369923d549b475c991f2518002ea899a86e2cc
+F src/where.c e71eae3b1383249c3b5d136d6b71ca8d28fb8d61
 F src/whereInt.h a6f5a762bc1b4b1c76e1cea79976b437ac35a435
 F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2
 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
@@ -1258,7 +1258,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P 8c886c43ff0bd5953d289534791d2c6b9dc25445
-R 40be7b14d15113b252df872d4e1eef76
+P 6bfaf525cac2e0c0a4a3bd3a1fc7bf5bd3234303
+R 6e68677be01e9eb58bd600864e0bd14f
 U drh
-Z 672ea121cac3835cdbb00fa056bd1b67
+Z db7553e06fec928a1e05d39be9821e62
index ee2ba8454c9b4e50e20d91a06bf29df429af4b9c..a2436cc2df08c12121d276abf5913d475cdae2cc 100644 (file)
@@ -1 +1 @@
-6bfaf525cac2e0c0a4a3bd3a1fc7bf5bd3234303
\ No newline at end of file
+204e567f68e4b3e069f04ca0643c6e5db781d39f
\ No newline at end of file
index 2566689cc4caa3f7cb96c4cedf6a0d4871c28706..d0dfb78d2db7b16b11df2d6d371e6fd70937ad4a 100644 (file)
@@ -1214,9 +1214,11 @@ static int termIsEquivalence(Parse *pParse, Expr *pExpr){
   pColl = sqlite3BinaryCompareCollSeq(pParse, pExpr->pLeft, pExpr->pRight);
   if( pColl==0 || sqlite3StrICmp(pColl->zName, "BINARY")==0 ) return 1;
   pColl = sqlite3ExprCollSeq(pParse, pExpr->pLeft);
-  zColl1 = pColl ? pColl->zName : "BINARY";
+  /* Since pLeft and pRight are both a column references, their collating
+  ** sequence should always be defined. */
+  zColl1 = ALWAYS(pColl) ? pColl->zName : 0;
   pColl = sqlite3ExprCollSeq(pParse, pExpr->pRight);
-  zColl2 = pColl ? pColl->zName : "BINARY";
+  zColl2 = ALWAYS(pColl) ? pColl->zName : 0;
   return sqlite3StrICmp(zColl1, zColl2)==0;
 }