diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/resolve.c | 1 | ||||
-rw-r--r-- | src/select.c | 12 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/resolve.c b/src/resolve.c index b9f5123ef..944fb5cad 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -271,6 +271,7 @@ static int lookupName( cntTab = 2; pMatch = pItem; pExpr->iColumn = j; + hit = 1; } } if( hit || zTab==0 ) continue; diff --git a/src/select.c b/src/select.c index a0a4c10da..316889480 100644 --- a/src/select.c +++ b/src/select.c @@ -3394,8 +3394,14 @@ static int selectExpander(Walker *pWalker, Select *p){ ExprList *pNew = 0; int flags = pParse->db->flags; int longNames = (flags & SQLITE_FullColNames)!=0 - && (flags & SQLITE_ShortColNames)==0 - && (p->selFlags & SF_NestedFrom)==0; + && (flags & SQLITE_ShortColNames)==0; + + /* When processing FROM-clause subqueries, it is always the case + ** that full_column_names=OFF and short_column_names=ON. The + ** sqlite3ResultSetOfSelect() routine makes it so. */ + assert( (p->selFlags & SF_NestedFrom)==0 + || ((flags & SQLITE_FullColNames)==0 && + (flags & SQLITE_ShortColNames)!=0) ); for(k=0; k<pEList->nExpr; k++){ pE = a[k].pExpr; @@ -3484,7 +3490,7 @@ static int selectExpander(Walker *pWalker, Select *p){ Expr *pLeft; pLeft = sqlite3Expr(db, TK_ID, zTabName); pExpr = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight, 0); - if( zSchemaName && iDb>0 ){ + if( zSchemaName ){ pLeft = sqlite3Expr(db, TK_ID, zSchemaName); pExpr = sqlite3PExpr(pParse, TK_DOT, pLeft, pExpr, 0); } |