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
This commit is contained in:
drh 2010-07-14 20:23:52 +00:00
parent ef5d9ec166
commit a7d2db175b
4 changed files with 13 additions and 13 deletions

View File

@ -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-----

View File

@ -1 +1 @@
6851c517ac7f80538aa5f3a1994fa1921c0ec3f4
fd130ae56c0e23f2d5b4a82f1a09e89ed7ae1e85

View 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

View 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 ){