aboutsummaryrefslogtreecommitdiff
path: root/src/resolve.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2018-04-16 10:47:38 +0000
committerdrh <drh@noemail.net>2018-04-16 10:47:38 +0000
commit1d621f7f0dcb9a12cc5274e503cdb1d7e7bf24f4 (patch)
treedd0831ea1e3e2396fe36c3a86b3b8efe91267710 /src/resolve.c
parente966a36cf4f771b200a5cfbf3714d4a33679c9d4 (diff)
parentf5ced1f3b14994816b476e63bf37213dce33f10d (diff)
downloadsqlite-1d621f7f0dcb9a12cc5274e503cdb1d7e7bf24f4.tar.gz
sqlite-1d621f7f0dcb9a12cc5274e503cdb1d7e7bf24f4.zip
Merge changes from trunk.
FossilOrigin-Name: 54d96772e78b7f57d5b590aebe34a139ade73629aebe16677372650b33513b1d
Diffstat (limited to 'src/resolve.c')
-rw-r--r--src/resolve.c14
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;