aboutsummaryrefslogtreecommitdiff
path: root/src/resolve.c
diff options
context:
space:
mode:
authordrh <>2023-11-03 11:35:33 +0000
committerdrh <>2023-11-03 11:35:33 +0000
commit24f7f5923d9f630339a17afba82060f946d3bbae (patch)
tree6418865e330d1b51b69dae96f35057c6910b6a1f /src/resolve.c
parent215886458556aec979dd7228ab0095bf901a2d38 (diff)
parentd706adba48766b93197e5dea7ba64c0ce7776e3d (diff)
downloadsqlite-24f7f5923d9f630339a17afba82060f946d3bbae.tar.gz
sqlite-24f7f5923d9f630339a17afba82060f946d3bbae.zip
Merge all the latest trunk fixes and enhancements into the jsonb branch.
FossilOrigin-Name: b089bf46374b374d02d7654c65eb3e75d1777638b398061e47644af0dab48c9b
Diffstat (limited to 'src/resolve.c')
-rw-r--r--src/resolve.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/resolve.c b/src/resolve.c
index 0072f6b6a..5f675c1d2 100644
--- a/src/resolve.c
+++ b/src/resolve.c
@@ -1249,11 +1249,12 @@ static int resolveExprStep(Walker *pWalker, Expr *pExpr){
while( pNC2
&& sqlite3ReferencesSrcList(pParse, pExpr, pNC2->pSrcList)==0
){
- pExpr->op2++;
+ pExpr->op2 += (1 + pNC2->nNestedSelect);
pNC2 = pNC2->pNext;
}
assert( pDef!=0 || IN_RENAME_OBJECT );
if( pNC2 && pDef ){
+ pExpr->op2 += pNC2->nNestedSelect;
assert( SQLITE_FUNC_MINMAX==NC_MinMaxAgg );
assert( SQLITE_FUNC_ANYORDER==NC_OrderAgg );
testcase( (pDef->funcFlags & SQLITE_FUNC_MINMAX)!=0 );
@@ -1812,6 +1813,7 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
/* Recursively resolve names in all subqueries in the FROM clause
*/
+ if( pOuterNC ) pOuterNC->nNestedSelect++;
for(i=0; i<p->pSrc->nSrc; i++){
SrcItem *pItem = &p->pSrc->a[i];
if( pItem->pSelect && (pItem->pSelect->selFlags & SF_Resolved)==0 ){
@@ -1836,6 +1838,9 @@ static int resolveSelectStep(Walker *pWalker, Select *p){
}
}
}
+ if( pOuterNC && ALWAYS(pOuterNC->nNestedSelect>0) ){
+ pOuterNC->nNestedSelect--;
+ }
/* Set up the local name-context to pass to sqlite3ResolveExprNames() to
** resolve the result-set expression list.