diff options
author | drh <> | 2024-08-21 17:38:50 +0000 |
---|---|---|
committer | drh <> | 2024-08-21 17:38:50 +0000 |
commit | 9904d824b890b9b30c514c14f2c5fcbc4118f456 (patch) | |
tree | 7948d7a8384a96fa4738cb03fa4da572d01a7c2f /src | |
parent | 5b5625f679aa130d5a16204bc06ce7e99b2f869f (diff) | |
download | sqlite-9904d824b890b9b30c514c14f2c5fcbc4118f456.tar.gz sqlite-9904d824b890b9b30c514c14f2c5fcbc4118f456.zip |
Improved comments on byte-code subroutine calls to materialize subqueries.
Should not affect production builds.
FossilOrigin-Name: 6b024c85ef856e26cddac8ad862e16909b5149c3e3efb4e73ba54c97291f1cc4
Diffstat (limited to 'src')
-rw-r--r-- | src/select.c | 1 | ||||
-rw-r--r-- | src/where.c | 12 |
2 files changed, 8 insertions, 5 deletions
diff --git a/src/select.c b/src/select.c index 0bb033785..9fcf30ff4 100644 --- a/src/select.c +++ b/src/select.c @@ -7863,6 +7863,7 @@ int sqlite3Select( pItem->fg.viaCoroutine = 1; pSubq->regResult = dest.iSdst; sqlite3VdbeEndCoroutine(v, pSubq->regReturn); + VdbeComment((v, "end %!S", pItem)); sqlite3VdbeJumpHere(v, addrTop-1); sqlite3ClearTempRegCache(pParse); }else if( pItem->fg.isCte && pItem->u2.pCteUse->addrM9e>0 ){ diff --git a/src/where.c b/src/where.c index c9f6b97c9..6e494850c 100644 --- a/src/where.c +++ b/src/where.c @@ -7122,15 +7122,17 @@ WhereInfo *sqlite3WhereBegin( pSrc = &pTabList->a[pLevel->iFrom]; if( pSrc->fg.isMaterialized ){ Subquery *pSubq; + int iOnce = 0; assert( pSrc->fg.isSubquery ); pSubq = pSrc->u4.pSubq; - if( pSrc->fg.isCorrelated ){ - sqlite3VdbeAddOp2(v, OP_Gosub, pSubq->regReturn, pSubq->addrFillSub); + if( pSrc->fg.isCorrelated==0 ){ + iOnce = sqlite3VdbeAddOp0(v, OP_Once); VdbeCoverage(v); }else{ - int iOnce = sqlite3VdbeAddOp0(v, OP_Once); VdbeCoverage(v); - sqlite3VdbeAddOp2(v, OP_Gosub, pSubq->regReturn, pSubq->addrFillSub); - sqlite3VdbeJumpHere(v, iOnce); + iOnce = 0; } + sqlite3VdbeAddOp2(v, OP_Gosub, pSubq->regReturn, pSubq->addrFillSub); + VdbeComment((v, "materialize %!S", pSrc)); + if( iOnce ) sqlite3VdbeJumpHere(v, iOnce); } assert( pTabList == pWInfo->pTabList ); if( (wsFlags & (WHERE_AUTO_INDEX|WHERE_BLOOMFILTER))!=0 ){ |