aboutsummaryrefslogtreecommitdiff
path: root/src/walker.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2020-03-21 00:05:53 +0000
committerdrh <drh@noemail.net>2020-03-21 00:05:53 +0000
commit2aee514b4cab86856051aafaff767eeb1131eae0 (patch)
treec39d4a70c29950e07e93021f971a281c698e6f08 /src/walker.c
parentec8e689a205c429511b58be15161bf6b250bfa55 (diff)
downloadsqlite-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.c19
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;