]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
In the expression-tree comparison routine, do not compiler Expr.iColumn
authordrh <drh@noemail.net>
Fri, 17 Apr 2015 19:41:37 +0000 (19:41 +0000)
committerdrh <drh@noemail.net>
Fri, 17 Apr 2015 19:41:37 +0000 (19:41 +0000)
and Expr.iTable for TK_STRING expressions.

FossilOrigin-Name: b67bb16c72c3e015ea82665ada9b5d3289ef6fb2

manifest
manifest.uuid
src/expr.c
src/resolve.c
test/expr.test

index b91d23703eecf9690734d6c7ffcc712fcabd3f01..ce4a75dce10fd9b7b4388f92fe091851444d16df 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Always\sresolve\ssymbols\sin\sall\sORDER\sBY\sclauses\sof\sa\scompound-SELECT,\seven\nillegal\sORDER\sBY\sclauses.
-D 2015-04-17T18:52:37.624
+C In\sthe\sexpression-tree\scomparison\sroutine,\sdo\snot\scompiler\sExpr.iColumn\nand\sExpr.iTable\sfor\sTK_STRING\sexpressions.
+D 2015-04-17T19:41:37.324
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in faaf75b89840659d74501bea269c7e33414761c1
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -182,7 +182,7 @@ F src/complete.c a5cf5b4b56390cfb7b8636e8f7ddef90258dd575
 F src/ctime.c 98f89724adc891a1a4c655bee04e33e716e05887
 F src/date.c e4d50b3283696836ec1036b695ead9a19e37a5ac
 F src/delete.c 37964e6c1d73ff49cbea9ff690c9605fb15f600e
-F src/expr.c f37d5eb44a1fad4ca4faa6b0c4f1230f233e3835
+F src/expr.c 55e7ce8f7e6c98402365e253b277377fe567772a
 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
 F src/fkey.c 3343d551a8d810782257244fb33f2ce191493c39
 F src/func.c 1414c24c873c48796ad45942257a179a423ba42f
@@ -228,7 +228,7 @@ F src/pragma.h 09c89bca58e9a44de2116cc8272b8d454657129f
 F src/prepare.c 1fffbdcd6f8a0173a8f70d71f22528f4c0e1e3d3
 F src/printf.c 08fa675c200aac29e561c6153f91f909ed17612f
 F src/random.c ba2679f80ec82c4190062d756f22d0c358180696
-F src/resolve.c 1ab0bd187f5590d10d51838b64976d6fb7da1ac1
+F src/resolve.c 53486a98c17b7ae09b8c2b398013e973ce4c1aae
 F src/rowset.c eccf6af6d620aaa4579bd3b72c1b6395d9e9fa1e
 F src/select.c 361dfc32244656bbe3f0e53d8ed791b3ec0c4be8
 F src/shell.c 28b3e1174a7fc00155d7d00880a33589a88508c9
@@ -499,7 +499,7 @@ F test/exclusive.test c7ebbc756eacf544c108b15eed64d7d4e5f86b75
 F test/exclusive2.test 32798111aae78a5deec980eee383213f189df308
 F test/exec.test e949714dc127eaa5ecc7d723efec1ec27118fdd7
 F test/exists.test 8f7b27b61c2fbe5822f0a1f899c715d14e416e30
-F test/expr.test c4b9bf0cc60b26862475e19999fbd2609ca8259c
+F test/expr.test 79c3e7502d9e571553b85f0ecc8ff2ac7d0e4931
 F test/extension01.test 00d13cec817f331a687a243e0e5a2d87b0e358c9
 F test/fallocate.test 3e979af17dfa7e5e9dda5eba1a696c04fa9d47f7
 F test/filectrl.test 14fa712e42c4cb791e09dfd58a6a03efb47ef13a
@@ -1251,7 +1251,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 3f3b0f683af2fbee83811536f6bef770ff919385
-R 2ffa33d8e1ee81a06afa86726c2d9478
+P 6c39ef73d5899eabdb46db50c2b00c2d8381a41a
+R 040960ee1fc741cd8f8eec5fca5d25c5
 U drh
-Z 2bc4a70be377f4bd80ade4dfaae10be0
+Z 6cc887a5a4d09f0ddeeb5f3fd5032470
index dc86d8653fd0032e90e6f8ebc5e9947e37d86a9d..82a61e13be36a8af727ad8276e0d7807c9fd67ef 100644 (file)
@@ -1 +1 @@
-6c39ef73d5899eabdb46db50c2b00c2d8381a41a
\ No newline at end of file
+b67bb16c72c3e015ea82665ada9b5d3289ef6fb2
\ No newline at end of file
index 418881ffd941031ed86b3fc3dce43b6dfe00fa8c..6a5ecfe4f200165ca03be1083ff19c0160ffebc1 100644 (file)
@@ -4017,7 +4017,7 @@ int sqlite3ExprCompare(Expr *pA, Expr *pB, int iTab){
     if( sqlite3ExprCompare(pA->pLeft, pB->pLeft, iTab) ) return 2;
     if( sqlite3ExprCompare(pA->pRight, pB->pRight, iTab) ) return 2;
     if( sqlite3ExprListCompare(pA->x.pList, pB->x.pList, iTab) ) return 2;
-    if( ALWAYS((combinedFlags & EP_Reduced)==0) ){
+    if( ALWAYS((combinedFlags & EP_Reduced)==0) && pA->op!=TK_STRING ){
       if( pA->iColumn!=pB->iColumn ) return 2;
       if( pA->iTable!=pB->iTable 
        && (pA->iTable!=iTab || NEVER(pB->iTable>=0)) ) return 2;
index f7e68ff4f0395ce8186a23d442d10c7544d58a88..32e0a98fd7d6f3cc78d1f37c453cce348b93d4d4 100644 (file)
@@ -460,7 +460,6 @@ static int lookupName(
   if( cnt==0 && zTab==0 && ExprHasProperty(pExpr,EP_DblQuoted) ){
     pExpr->op = TK_STRING;
     pExpr->pTab = 0;
-    pExpr->iTable = -1;
     return WRC_Prune;
   }
 
index 8d913d2a1a727d0bf00d83313e49222cacbd26d6..7d7b8ce5a7bb48658dfdc591e9210e3745c53796 100644 (file)
@@ -943,5 +943,13 @@ do_realnum_test expr-13.7 {
   }
 } {9.22337203685478e+18}
 
+do_execsql_test expr-13.8 {
+  SELECT "" <= '';
+} {1}
+do_execsql_test expr-13.9 {
+  SELECT '' <= "";
+} {1}
+
+
 
 finish_test