diff options
author | drh <> | 2023-12-23 11:31:47 +0000 |
---|---|---|
committer | drh <> | 2023-12-23 11:31:47 +0000 |
commit | 4ed0b117f3ddfe97434dbd4ff47b9c782076cd0d (patch) | |
tree | bf48bf002c6909476caeb60612b84654801430d8 /src | |
parent | 8a630c2aa38092645092a81c36e715e43d64a151 (diff) | |
download | sqlite-4ed0b117f3ddfe97434dbd4ff47b9c782076cd0d.tar.gz sqlite-4ed0b117f3ddfe97434dbd4ff47b9c782076cd0d.zip |
Add debugging output routines sqlite3ShowWhereLoop(X) and
sqlite3ShowWhereLoopList(X) that can be invoked from a debugger to show
a summary of the content of a single WhereLoop object or a list of WhereLoop
objects. No change in release builds.
FossilOrigin-Name: 5db30bcc338aac1cf081de2deec7e60749ae012e2b6f95ccf745623adb4a31dc
Diffstat (limited to 'src')
-rw-r--r-- | src/where.c | 32 |
1 files changed, 23 insertions, 9 deletions
diff --git a/src/where.c b/src/where.c index 80314a5b0..cae3dd074 100644 --- a/src/where.c +++ b/src/where.c @@ -2259,15 +2259,20 @@ void sqlite3WhereClausePrint(WhereClause *pWC){ ** 1.002.001 t2.t2xy 2 f 010241 N 2 cost 0,56,31 */ void sqlite3WhereLoopPrint(const WhereLoop *p, const WhereClause *pWC){ - WhereInfo *pWInfo = pWC->pWInfo; - int nb = 1+(pWInfo->pTabList->nSrc+3)/4; - SrcItem *pItem = pWInfo->pTabList->a + p->iTab; - Table *pTab = pItem->pTab; - Bitmask mAll = (((Bitmask)1)<<(nb*4)) - 1; - sqlite3DebugPrintf("%c%2d.%0*llx.%0*llx", p->cId, - p->iTab, nb, p->maskSelf, nb, p->prereq & mAll); - sqlite3DebugPrintf(" %12s", - pItem->zAlias ? pItem->zAlias : pTab->zName); + if( pWC ){ + WhereInfo *pWInfo = pWC->pWInfo; + int nb = 1+(pWInfo->pTabList->nSrc+3)/4; + SrcItem *pItem = pWInfo->pTabList->a + p->iTab; + Table *pTab = pItem->pTab; + Bitmask mAll = (((Bitmask)1)<<(nb*4)) - 1; + sqlite3DebugPrintf("%c%2d.%0*llx.%0*llx", p->cId, + p->iTab, nb, p->maskSelf, nb, p->prereq & mAll); + sqlite3DebugPrintf(" %12s", + pItem->zAlias ? pItem->zAlias : pTab->zName); + }else{ + sqlite3DebugPrintf("%c%2d.%03llx.%03llx %c%d", + p->cId, p->iTab, p->maskSelf, p->prereq & 0xfff, p->cId, p->iTab); + } if( (p->wsFlags & WHERE_VIRTUALTABLE)==0 ){ const char *zName; if( p->u.btree.pIndex && (zName = p->u.btree.pIndex->zName)!=0 ){ @@ -2304,6 +2309,15 @@ void sqlite3WhereLoopPrint(const WhereLoop *p, const WhereClause *pWC){ } } } +void sqlite3ShowWhereLoop(const WhereLoop *p){ + sqlite3WhereLoopPrint(p, 0); +} +void sqlite3ShowWhereLoopList(const WhereLoop *p){ + while( p ){ + sqlite3WhereLoopPrint(p, 0); + p = p->pNextLoop; + } +} #endif /* |