]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
The expression list on the RHS of an IN operator can no longer be empty
authordrh <drh@noemail.net>
Wed, 14 Jul 2010 20:23:52 +0000 (20:23 +0000)
committerdrh <drh@noemail.net>
Wed, 14 Jul 2010 20:23:52 +0000 (20:23 +0000)
because an empty expression list is now optimized out by changes in
check-in [c288ac644d0bf].  Therefore add ALWAYS() macros around tests
for the expression list being non-empty.

FossilOrigin-Name: fd130ae56c0e23f2d5b4a82f1a09e89ed7ae1e85

manifest
manifest.uuid
src/expr.c
src/where.c

index 840f8c94f0908ca8fa041be913c4c4091e81194c..ead6c999665cd73540f1105cc5f478c69bc2fe9d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,8 +1,8 @@
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA1
 
-C Additional\stest\scases\sand\sevidence\smarks\sfor\sthe\sempty\sRHS\sbug\son\sthe\sIN\noperator\s-\sticket\s[80e031a00f45dca877]
-D 2010-07-14T19:31:08
+C The\sexpression\slist\son\sthe\sRHS\sof\san\sIN\soperator\scan\sno\slonger\sbe\sempty\nbecause\san\sempty\sexpression\slist\sis\snow\soptimized\sout\sby\schanges\sin\ncheck-in\s[c288ac644d0bf].\s\sTherefore\sadd\sALWAYS()\smacros\saround\stests\nfor\sthe\sexpression\slist\sbeing\snon-empty.
+D 2010-07-14T20:23:52
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in ec08dc838fd8110fe24c92e5130bcd91cbb1ff2e
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -125,7 +125,7 @@ F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
 F src/ctime.c 4f3aadad62c6c9f0d4e5a96718516ac4e3c598df
 F src/date.c 5dd8448a0bfea8d31fb14cff487d0c06ff8c8b20
 F src/delete.c 41cb4f78557810eecc167b7e2317de7e12d20929
-F src/expr.c 92ff9389ab774922e988c1488087f84a9f2dc09d
+F src/expr.c b2b053429575bf964c64bdf5459c5cbbe5bf93b8
 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
 F src/fkey.c e2116672a6bd610dc888e27df292ebc7999c9bb0
 F src/func.c 0c28599430856631216b6c0131c51c89bf516026
@@ -233,7 +233,7 @@ F src/vtab.c a0f8a40274e4261696ef57aa806de2776ab72cda
 F src/wal.c 656d50bb0b64f79353110a0b50790edfc0da08e9
 F src/wal.h 906c85760598b18584921fe08008435aa4eeeeb2
 F src/walker.c 3112bb3afe1d85dc52317cb1d752055e9a781f8f
-F src/where.c 926c83c6394e132a1c62b6b12ceeba7d55a34c19
+F src/where.c 903a7828a0a7de03b5d0f1b5eff222d8d5b138f1
 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
 F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87
 F test/all.test 6745008c144bd2956d58864d21f7b304689c1cce
@@ -838,14 +838,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P c288ac644d0bfda2b9bc204dc86df8e74d4f6843
-R 246cf40fb78a0338ef63702fffd8c58e
+P 6851c517ac7f80538aa5f3a1994fa1921c0ec3f4
+R eb80ad6bc168af8850aa72f4b25fe674
 U drh
-Z 51a384c4e53cd04b3d869080ee1702db
+Z aa17e908564fca2c36d1e57fa4d41f03
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.6 (GNU/Linux)
 
-iD8DBQFMPhB/oxKgR168RlERAtNLAJwLm5FOsQcYhJ1tRbE7d8y+YL/I2ACfZMY5
-C5vZM2MptiZQyr+vM+YLgwE=
-=RSAs
+iD8DBQFMPhzboxKgR168RlERAmQ7AJ9+2dhU717+AUWkF0vzL6qDVstVOwCfSTZZ
+2jqc+a7lH2MMOe7TbKwwRQk=
+=yFsM
 -----END PGP SIGNATURE-----
index 32ceff945541941bf1434b37d52448d690fc23fe..38b72ac4a1e6be12bd0c68fc9ef73fb9a6f39724 100644 (file)
@@ -1 +1 @@
-6851c517ac7f80538aa5f3a1994fa1921c0ec3f4
\ No newline at end of file
+fd130ae56c0e23f2d5b4a82f1a09e89ed7ae1e85
\ No newline at end of file
index 8ddf473b2346bebea1dc5b8d1b04605d8f2cd7e0..2046433165059fc672d721037032870b83c90a01 100644 (file)
@@ -1635,7 +1635,7 @@ int sqlite3CodeSubselect(
           keyInfo.aColl[0] = sqlite3BinaryCompareCollSeq(pParse, pExpr->pLeft,
               pEList->a[0].pExpr);
         }
-      }else if( pExpr->x.pList!=0 ){
+      }else if( ALWAYS(pExpr->x.pList!=0) ){
         /* Case 2:     expr IN (exprlist)
         **
         ** For each expression, build an index key from the evaluation and
index c53a232a1bdca54d3356a79bc43a2a42e3d9599f..b2f75eacda2ab69a93aa972045fb9d49bdc40105 100644 (file)
@@ -2622,7 +2622,7 @@ static void bestBtreeIndex(
         if( ExprHasProperty(pExpr, EP_xIsSelect) ){
           nInMul *= 25;
           bInEst = 1;
-        }else if( pExpr->x.pList ){
+        }else if( ALWAYS(pExpr->x.pList) ){
           nInMul *= pExpr->x.pList->nExpr + 1;
         }
       }else if( pTerm->eOperator & WO_ISNULL ){