From: drh Date: Fri, 29 Aug 2014 12:29:39 +0000 (+0000) Subject: Avoid an unnecessary OP_Move operation for expression subqueries. X-Git-Tag: version-3.8.7~137^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=53932ce8fa8d095cd61b44aa1244af78a955ccf3;p=thirdparty%2Fsqlite.git Avoid an unnecessary OP_Move operation for expression subqueries. FossilOrigin-Name: 462f42af52f146fd328ddcbbe78c8444ef7bd2c3 --- diff --git a/manifest b/manifest index dbe5333a45..c4e73d59dd 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Improved\sWHERETRACE\smessages\sfor\sthe\sestimated\soutput\srow\sreductions\sfrom\nrange\sscans. -D 2014-08-28T19:38:22.884 +C Avoid\san\sunnecessary\sOP_Move\soperation\sfor\sexpression\ssubqueries. +D 2014-08-29T12:29:39.634 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 5eb79e334a5de69c87740edd56af6527dd219308 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -177,7 +177,7 @@ F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac F src/ctime.c 0231df905e2c4abba4483ee18ffc05adc321df2a F src/date.c 593c744b2623971e45affd0bde347631bdfa4625 F src/delete.c 5adcd322c6b08fc25d215d780ca62cebce66304d -F src/expr.c 358634f4ddeeb4e69643cb6db5819104a7834c60 +F src/expr.c e1691ab0fe6be7247ef073b0038fb8ecd9944fad F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb F src/fkey.c 8d81a780ad78d16ec9082585758a8f1d6bf02ca3 F src/func.c bbb724b74ed96ca42675a7274646a71dd52bcda7 @@ -223,7 +223,7 @@ F src/printf.c 00986c86ddfffefc2fd3c73667ff51b3b9709c74 F src/random.c d10c1f85b6709ca97278428fd5db5bbb9c74eece F src/resolve.c 0ea356d32a5e884add23d1b9b4e8736681dd5697 F src/rowset.c a9c9aae3234b44a6d7c6f5a3cadf90dce1e627be -F src/select.c ea48e891406ccdf748f3eb02893e056d134a0fea +F src/select.c 1c4667571f2c9e339b5a5c5b152a9ea7b0bc4163 F src/shell.c 728d2226594d356bf4fbdbdfd08538fd78fd06f3 F src/sqlite.h.in ed9d35990c61f0388ca6405706455c4095310553 F src/sqlite3.rc 992c9f5fb8285ae285d6be28240a7e8d3a7f2bad @@ -1188,7 +1188,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 a9daf3ac444b896013f4054051937d49a597624a -R 9b7fb0a8b772f987f88c09068dd60142 +P fdd478bb11eb9e244a7a1fb628ac27c53830fb24 +R ee023126020f0faa82dce1872da63eb6 U drh -Z 8017c3a896f88a1957938bddddebc44a +Z 1a15b0689431fa59072b2264b67b8606 diff --git a/manifest.uuid b/manifest.uuid index 9b52e2f1ba..380c902508 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -fdd478bb11eb9e244a7a1fb628ac27c53830fb24 \ No newline at end of file +462f42af52f146fd328ddcbbe78c8444ef7bd2c3 \ No newline at end of file diff --git a/src/expr.c b/src/expr.c index fabdae2fcf..1a2465f7ef 100644 --- a/src/expr.c +++ b/src/expr.c @@ -1912,6 +1912,7 @@ int sqlite3CodeSubselect( sqlite3SelectDestInit(&dest, 0, ++pParse->nMem); if( pExpr->op==TK_SELECT ){ dest.eDest = SRT_Mem; + dest.iSdst = dest.iSDParm; sqlite3VdbeAddOp2(v, OP_Null, 0, dest.iSDParm); VdbeComment((v, "Init subquery result")); }else{ diff --git a/src/select.c b/src/select.c index 932874d8fe..44b9cd034c 100644 --- a/src/select.c +++ b/src/select.c @@ -829,7 +829,7 @@ static void selectInnerLoop( if( pSort ){ pushOntoSorter(pParse, pSort, p, regResult); }else{ - sqlite3ExprCodeMove(pParse, regResult, iParm, 1); + assert( regResult==iParm ); /* The LIMIT clause will jump out of the loop for us */ } break;