From: drh <> Date: Mon, 18 Apr 2022 16:20:59 +0000 (+0000) Subject: Ensure that left-hand side WITHOUT ROWID tables are set to OP_NullRow prior X-Git-Tag: version-3.39.0~206^2~27 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=7348ca4e0b92cccf3d94c89190b3664e3106f738;p=thirdparty%2Fsqlite.git Ensure that left-hand side WITHOUT ROWID tables are set to OP_NullRow prior to running the right-join loop. This fixes a problem introduced by the previous check-in. FossilOrigin-Name: aab7665ce6c004df701a72aef1a5135f2c78f16c6ff728a00076afb66ba9d3a0 --- diff --git a/manifest b/manifest index ee28bfc67b..34c4db93e0 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sproblems\swith\sWHERE\sclauses\sthat\sfollow\smultiple\sFULL\sJOINs.\s\sThis\nintroduces\ssome\snew\sfaults\sin\sthe\stests,\sprobably\sdue\sto\ssomething\nunrelated. -D 2022-04-18T16:10:07.804 +C Ensure\sthat\sleft-hand\sside\sWITHOUT\sROWID\stables\sare\sset\sto\sOP_NullRow\sprior\nto\srunning\sthe\sright-join\sloop.\s\sThis\sfixes\sa\sproblem\sintroduced\sby\sthe\nprevious\scheck-in. +D 2022-04-18T16:20:59.567 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -641,7 +641,7 @@ F src/wal.h c3aa7825bfa2fe0d85bef2db94655f99870a285778baa36307c0a16da32b226a F src/walker.c f890a3298418d7cba3b69b8803594fdc484ea241206a8dfa99db6dd36f8cbb3b F src/where.c 45102d682f6efd450d89c0c5f09b838be6d69c84c6105336730ee38d3b452fad F src/whereInt.h eecce79edc6f7005f91f35be6b18b7053f794e1b50e95bcd06a2d537fc176734 -F src/wherecode.c 1770ab730f14949fe55104b7970e4646087b1ff7f78a906b275cb08ae256f027 +F src/wherecode.c dcf622a9650638c80c86699d3fbd39526016ac36488f6db3878fcf530803f30d F src/whereexpr.c 174d4ad5be165c610c907abb779ef4a97974d22b84e1ce7898d2d9f6947249e5 F src/window.c 42a71595263dbd8ef8248218e4fc7d4b5ddccece52146ad48e079342d93f6f8f F test/8_3_names.test ebbb5cd36741350040fd28b432ceadf495be25b2 @@ -1948,8 +1948,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 1ba3b3ccf145d84fa75afabe2fa925f65e43f815b25b15bd60073a41aa97bf57 -R 7c5e9401c90d81242051e832c8ba8500 +P 95b242d4c2fed7c713299565ac1010f8a7534a5695589e87d5a0204c7bf5f3dc +R 64e006161878d7a0b97de4889394a4bc U drh -Z 6ccb42e7d5486d8748e5216dc5361d97 +Z 861a84ea03f43168120caaccf0f7691d # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 3d64846252..65011899de 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -95b242d4c2fed7c713299565ac1010f8a7534a5695589e87d5a0204c7bf5f3dc \ No newline at end of file +aab7665ce6c004df701a72aef1a5135f2c78f16c6ff728a00076afb66ba9d3a0 \ No newline at end of file diff --git a/src/wherecode.c b/src/wherecode.c index ca02acf45a..9ba987ca6a 100644 --- a/src/wherecode.c +++ b/src/wherecode.c @@ -2819,16 +2819,16 @@ SQLITE_NOINLINE void sqlite3WhereRightJoinLoop( int k; ExplainQueryPlan((pParse, 1, "RIGHT-JOIN %s", pTabItem->pTab->zName)); - if( (pTabItem->fg.jointype & JT_LTORJ)==0 ){ - for(k=0; ka[k].pWLoop->maskSelf; - sqlite3VdbeAddOp1(v, OP_NullRow, pWInfo->a[k].iTabCur); - iIdxCur = pWInfo->a[k].iIdxCur; - if( iIdxCur ){ - sqlite3VdbeAddOp1(v, OP_NullRow, iIdxCur); - } + for(k=0; ka[k].pWLoop->maskSelf; + sqlite3VdbeAddOp1(v, OP_NullRow, pWInfo->a[k].iTabCur); + iIdxCur = pWInfo->a[k].iIdxCur; + if( iIdxCur ){ + sqlite3VdbeAddOp1(v, OP_NullRow, iIdxCur); } + } + if( (pTabItem->fg.jointype & JT_LTORJ)==0 ){ mAll |= pLoop->maskSelf; for(k=0; knTerm; k++){ WhereTerm *pTerm = &pWC->a[k];