diff options
author | drh <drh@noemail.net> | 2018-04-16 10:47:38 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2018-04-16 10:47:38 +0000 |
commit | 1d621f7f0dcb9a12cc5274e503cdb1d7e7bf24f4 (patch) | |
tree | dd0831ea1e3e2396fe36c3a86b3b8efe91267710 /src/resolve.c | |
parent | e966a36cf4f771b200a5cfbf3714d4a33679c9d4 (diff) | |
parent | f5ced1f3b14994816b476e63bf37213dce33f10d (diff) | |
download | sqlite-1d621f7f0dcb9a12cc5274e503cdb1d7e7bf24f4.tar.gz sqlite-1d621f7f0dcb9a12cc5274e503cdb1d7e7bf24f4.zip |
Merge changes from trunk.
FossilOrigin-Name: 54d96772e78b7f57d5b590aebe34a139ade73629aebe16677372650b33513b1d
Diffstat (limited to 'src/resolve.c')
-rw-r--r-- | src/resolve.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/resolve.c b/src/resolve.c index 1edc80292..aa60b0478 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -383,10 +383,12 @@ static int lookupName( ** is supported for backwards compatibility only. Hence, we issue a warning ** on sqlite3_log() whenever the capability is used. */ - if( (pEList = pNC->pEList)!=0 - && zTab==0 + if( (pNC->ncFlags & NC_UEList)!=0 && cnt==0 + && zTab==0 ){ + pEList = pNC->uNC.pEList; + assert( pEList!=0 ); for(j=0; j<pEList->nExpr; j++){ char *zAs = pEList->a[j].zName; if( zAs!=0 && sqlite3StrICmp(zAs, zCol)==0 ){ @@ -915,8 +917,8 @@ static int resolveOrderByTermToExprList( memset(&nc, 0, sizeof(nc)); nc.pParse = pParse; nc.pSrcList = pSelect->pSrc; - nc.pEList = pEList; - nc.ncFlags = NC_AllowAgg; + nc.uNC.pEList = pEList; + nc.ncFlags = NC_AllowAgg|NC_UEList; nc.nErr = 0; db = pParse->db; savedSuppErr = db->suppressErr; @@ -1299,7 +1301,9 @@ static int resolveSelectStep(Walker *pWalker, Select *p){ ** Minor point: If this is the case, then the expression will be ** re-evaluated for each reference to it. */ - sNC.pEList = p->pEList; + assert( (sNC.ncFlags & (NC_UAggInfo))==0 ); + sNC.uNC.pEList = p->pEList; + sNC.ncFlags |= NC_UEList; if( sqlite3ResolveExprNames(&sNC, p->pHaving) ) return WRC_Abort; if( sqlite3ResolveExprNames(&sNC, p->pWhere) ) return WRC_Abort; |