From: drh Date: Sat, 29 Apr 2017 19:29:49 +0000 (+0000) Subject: Add a single testcase() macro to the subquery processing logic. X-Git-Tag: version-3.19.0~32 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7555581fc1ee5be5133efcbe1f46f834abc3dc5f;p=thirdparty%2Fsqlite.git Add a single testcase() macro to the subquery processing logic. FossilOrigin-Name: 4e1df76e3d85922648e0e1cce73a266c3b1ed4511ace259ec0a01d7693af9e6f --- diff --git a/manifest b/manifest index b61163712f..22a472ed22 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Improvements\sto\sopcode\sdocumentation\sin\sthe\sbytecode\sengine.\nNo\schanges\sto\scode. -D 2017-04-29T18:02:49.909 +C Add\sa\ssingle\stestcase()\smacro\sto\sthe\ssubquery\sprocessing\slogic. +D 2017-04-29T19:29:49.700 F Makefile.in 1cc758ce3374a32425e4d130c2fe7b026b20de5b8843243de75f087c0a2661fb F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc 6a8c838220f7c00820e1fc0ac1bccaaa8e5676067e1dbfa1bafa7a4ffecf8ae6 @@ -402,7 +402,7 @@ F src/printf.c 8757834f1b54dae512fb25eb1acc8e94a0d15dd2290b58f2563f65973265adb2 F src/random.c 80f5d666f23feb3e6665a6ce04c7197212a88384 F src/resolve.c 3e518b962d932a997fae373366880fc028c75706 F src/rowset.c 7b7e7e479212e65b723bf40128c7b36dc5afdfac -F src/select.c bf8ab605e49717c222136380453cfb7eda564f8e500d5ff6a01341ea59fefe80 +F src/select.c 478e95d424bb86d34c7c95d20872cbd78df97af5f83c3fd7de55d5b2413f927d F src/shell.c 21b79c0e1b93f8e35fd7b4087d6ba438326c3d7e285d0dd51dfd741475f858a1 F src/sqlite.h.in 40233103e3e4e10f8a63523498d0259d232e42aba478e2d3fb914799185aced6 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 @@ -1577,7 +1577,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P d7bb79ed3a40419d143fbe35c310e51fe7b384a22f082a61ad788671d2d33ee0 -R 5c1f22cfd852090783654b7cdddcbe29 +P e54c9f8db5b2fa8ea82c6eab7482255431af16901f7992c9667b56a0e50a9f4f +R 6f21ea13ed166571d20351d2145d6640 U drh -Z 979167fc5393ee8033851cc4ccc2f64f +Z 4a7e86f7be3de966a53a14c1a17e31d5 diff --git a/manifest.uuid b/manifest.uuid index 8be70e2935..45bf2ccb33 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e54c9f8db5b2fa8ea82c6eab7482255431af16901f7992c9667b56a0e50a9f4f \ No newline at end of file +4e1df76e3d85922648e0e1cce73a266c3b1ed4511ace259ec0a01d7693af9e6f \ No newline at end of file diff --git a/src/select.c b/src/select.c index 3def13618e..77824c4aaa 100644 --- a/src/select.c +++ b/src/select.c @@ -5035,6 +5035,10 @@ int sqlite3Select( ** to be invoked again. */ if( pItem->addrFillSub ){ if( pItem->fg.viaCoroutine==0 ){ + /* The subroutine that manifests the view might be a one-time routine, + ** or it might need to be rerun on each iteration because it + ** encodes a correlated subquery. */ + testcase( sqlite3VdbeGetOp(v, pItem->addrFillSub)->opcode==OP_Once ); sqlite3VdbeAddOp2(v, OP_Gosub, pItem->regReturn, pItem->addrFillSub); } continue;