diff options
author | drh <drh@noemail.net> | 2020-03-21 00:05:53 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2020-03-21 00:05:53 +0000 |
commit | 2aee514b4cab86856051aafaff767eeb1131eae0 (patch) | |
tree | c39d4a70c29950e07e93021f971a281c698e6f08 /src/walker.c | |
parent | ec8e689a205c429511b58be15161bf6b250bfa55 (diff) | |
download | sqlite-2aee514b4cab86856051aafaff767eeb1131eae0.tar.gz sqlite-2aee514b4cab86856051aafaff767eeb1131eae0.zip |
Recompute the set of columns used for each table when the table is
involved in query flattening.
FossilOrigin-Name: a9bb71ba708ba72255ba8d18c9856e38ddf53eae2d61c8435149354fb2b2459e
Diffstat (limited to 'src/walker.c')
-rw-r--r-- | src/walker.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/walker.c b/src/walker.c index 5733210c4..48d7ddbf3 100644 --- a/src/walker.c +++ b/src/walker.c @@ -156,15 +156,16 @@ int sqlite3WalkSelectFrom(Walker *pWalker, Select *p){ struct SrcList_item *pItem; pSrc = p->pSrc; - assert( pSrc!=0 ); - for(i=pSrc->nSrc, pItem=pSrc->a; i>0; i--, pItem++){ - if( pItem->pSelect && sqlite3WalkSelect(pWalker, pItem->pSelect) ){ - return WRC_Abort; - } - if( pItem->fg.isTabFunc - && sqlite3WalkExprList(pWalker, pItem->u1.pFuncArg) - ){ - return WRC_Abort; + if( pSrc ){ + for(i=pSrc->nSrc, pItem=pSrc->a; i>0; i--, pItem++){ + if( pItem->pSelect && sqlite3WalkSelect(pWalker, pItem->pSelect) ){ + return WRC_Abort; + } + if( pItem->fg.isTabFunc + && sqlite3WalkExprList(pWalker, pItem->u1.pFuncArg) + ){ + return WRC_Abort; + } } } return WRC_Continue; |