]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Ensure that left-hand side WITHOUT ROWID tables are set to OP_NullRow prior
authordrh <>
Mon, 18 Apr 2022 16:20:59 +0000 (16:20 +0000)
committerdrh <>
Mon, 18 Apr 2022 16:20:59 +0000 (16:20 +0000)
to running the right-join loop.  This fixes a problem introduced by the
previous check-in.

FossilOrigin-Name: aab7665ce6c004df701a72aef1a5135f2c78f16c6ff728a00076afb66ba9d3a0

manifest
manifest.uuid
src/wherecode.c

index ee28bfc67b35ff4c6659a2266f8078d2b9cfb9a1..34c4db93e069dbefa9b62b905f02e7e54a2cf1e1 100644 (file)
--- 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.
index 3d64846252b7f22c83b8c5d616ea69e497b129b4..65011899de89095cfe0018d8f17e8bbeec2ebacd 100644 (file)
@@ -1 +1 @@
-95b242d4c2fed7c713299565ac1010f8a7534a5695589e87d5a0204c7bf5f3dc
\ No newline at end of file
+aab7665ce6c004df701a72aef1a5135f2c78f16c6ff728a00076afb66ba9d3a0
\ No newline at end of file
index ca02acf45ac3503ba06b429983cf264c269438b0..9ba987ca6aede5ae1736962713248550bb6edb92 100644 (file)
@@ -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; k<iLevel; k++){
-      int iIdxCur;
-      mAll |= pWInfo->a[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; k<iLevel; k++){
+    int iIdxCur;
+    mAll |= pWInfo->a[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; k<pWC->nTerm; k++){
       WhereTerm *pTerm = &pWC->a[k];