aboutsummaryrefslogtreecommitdiff
path: root/src/resolve.c
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2012-12-18 16:07:08 +0000
committerdrh <drh@noemail.net>2012-12-18 16:07:08 +0000
commit92689d28698dca60d04e62a5080afac923dfd4de (patch)
tree7cb1eeb886ee59832811e8fa9ab9186f1f400245 /src/resolve.c
parente924041846ac140c7940e23aaa3d026bed2a2dcf (diff)
downloadsqlite-92689d28698dca60d04e62a5080afac923dfd4de.tar.gz
sqlite-92689d28698dca60d04e62a5080afac923dfd4de.zip
Resolve names in FROM-clause subqueries prior to resolving names in the
result set expressions of a SELECT statement. FossilOrigin-Name: 9b67c633d932f3e566f521ee6a9cf3be193436fa
Diffstat (limited to 'src/resolve.c')
-rw-r--r--src/resolve.c34
1 files changed, 17 insertions, 17 deletions
diff --git a/src/resolve.c b/src/resolve.c
index 51aab7792..eb594d159 100644
--- a/src/resolve.c
+++ b/src/resolve.c
@@ -1033,23 +1033,6 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
return WRC_Abort;
}
- /* Set up the local name-context to pass to sqlite3ResolveExprNames() to
- ** resolve the result-set expression list.
- */
- sNC.ncFlags = NC_AllowAgg;
- sNC.pSrcList = p->pSrc;
- sNC.pNext = pOuterNC;
-
- /* Resolve names in the result set. */
- pEList = p->pEList;
- assert( pEList!=0 );
- for(i=0; i<pEList->nExpr; i++){
- Expr *pX = pEList->a[i].pExpr;
- if( sqlite3ResolveExprNames(&sNC, pX) ){
- return WRC_Abort;
- }
- }
-
/* Recursively resolve names in all subqueries
*/
for(i=0; i<p->pSrc->nSrc; i++){
@@ -1077,6 +1060,23 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
}
}
+ /* Set up the local name-context to pass to sqlite3ResolveExprNames() to
+ ** resolve the result-set expression list.
+ */
+ sNC.ncFlags = NC_AllowAgg;
+ sNC.pSrcList = p->pSrc;
+ sNC.pNext = pOuterNC;
+
+ /* Resolve names in the result set. */
+ pEList = p->pEList;
+ assert( pEList!=0 );
+ for(i=0; i<pEList->nExpr; i++){
+ Expr *pX = pEList->a[i].pExpr;
+ if( sqlite3ResolveExprNames(&sNC, pX) ){
+ return WRC_Abort;
+ }
+ }
+
/* If there are no aggregate functions in the result-set, and no GROUP BY
** expression, do not allow aggregates in any of the other expressions.
*/