aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2010-07-14 20:23:52 +0000
committerdrh <drh@noemail.net>2010-07-14 20:23:52 +0000
commita7d2db175b05eacc623f8240d1c29335adcf92a9 (patch)
treeca7edc1121d06bb81023dccdf1ce3994c7a1a054
parentef5d9ec166ed7cb60c3de909e91889525db8cc34 (diff)
downloadsqlite-a7d2db175b05eacc623f8240d1c29335adcf92a9.tar.gz
sqlite-a7d2db175b05eacc623f8240d1c29335adcf92a9.zip
The expression list on the RHS of an IN operator can no longer be empty
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
-rw-r--r--manifest20
-rw-r--r--manifest.uuid2
-rw-r--r--src/expr.c2
-rw-r--r--src/where.c2
4 files changed, 13 insertions, 13 deletions
diff --git a/manifest b/manifest
index 840f8c94f..ead6c9996 100644
--- 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-----
diff --git a/manifest.uuid b/manifest.uuid
index 32ceff945..38b72ac4a 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-6851c517ac7f80538aa5f3a1994fa1921c0ec3f4 \ No newline at end of file
+fd130ae56c0e23f2d5b4a82f1a09e89ed7ae1e85 \ No newline at end of file
diff --git a/src/expr.c b/src/expr.c
index 8ddf473b2..204643316 100644
--- a/src/expr.c
+++ b/src/expr.c
@@ -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
diff --git a/src/where.c b/src/where.c
index c53a232a1..b2f75eacd 100644
--- a/src/where.c
+++ b/src/where.c
@@ -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 ){