aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/resolve.c1
-rw-r--r--src/select.c12
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);
}