1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-12 13:01:09 +03:00

Correctly detect correlated subqueries when resolving names in RETURNING

clauses.

FossilOrigin-Name: b43cfa04922a401442b9d1708e3e4a88d3cfa2c591f9a6b253d99ba83f4b280a
This commit is contained in:
drh
2021-02-08 15:56:01 +00:00
parent d510197276
commit 82ab4f6b1a
3 changed files with 10 additions and 15 deletions

View File

@@ -383,7 +383,7 @@ static int lookupName(
}else if( op!=TK_INSERT && zTab && sqlite3StrICmp("old",zTab)==0 ){
pExpr->iTable = 0;
pTab = pParse->pTriggerTab;
}else if( pParse->bReturning ){
}else if( pParse->bReturning && (pNC->ncFlags & NC_UBaseReg)!=0 ){
pExpr->iTable = op!=TK_DELETE;
pTab = pParse->pTriggerTab;
}
@@ -435,14 +435,9 @@ static int lookupName(
{
pExpr->y.pTab = pTab;
if( pParse->bReturning ){
NameContext *pUp = pNC;
while( (pUp->ncFlags & NC_UBaseReg)==0 && ALWAYS(pUp->pNext) ){
pUp = pUp->pNext;
}
assert( pUp->ncFlags & NC_UBaseReg );
eNewExprOp = TK_REGISTER;
pExpr->iTable = pUp->uNC.iBaseReg + (pTab->nCol+1)*pExpr->iTable
+ iCol + 1;
pExpr->iTable = pNC->uNC.iBaseReg + (pTab->nCol+1)*pExpr->iTable
+ iCol + 1;
}else{
pExpr->iColumn = (i16)iCol;
eNewExprOp = TK_TRIGGER;