diff options
author | drh <> | 2021-03-31 17:42:24 +0000 |
---|---|---|
committer | drh <> | 2021-03-31 17:42:24 +0000 |
commit | d75aeee535254e4b30b80f97ac07d7e3e2378906 (patch) | |
tree | 24cbda94d6813b61b97b35837933be833f6cfa24 /src/resolve.c | |
parent | b3ad4e611854dd5f4ad26378c4cfccf9f0c858dd (diff) | |
download | sqlite-d75aeee535254e4b30b80f97ac07d7e3e2378906.tar.gz sqlite-d75aeee535254e4b30b80f97ac07d7e3e2378906.zip |
When resolving column names in the RETURNING clause, do not ignore an
incorrect table name qualifier. Raise an error instead.
See [forum:forumpost/85aef8bc01|forum post 85aef8bc01] for context.
FossilOrigin-Name: 51d5c50b2fb373e4c7ddb7e26657c26ad39dc9c2fc629bba5c2522b4150d8fac
Diffstat (limited to 'src/resolve.c')
-rw-r--r-- | src/resolve.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/resolve.c b/src/resolve.c index 32914befb..436d3f70c 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -376,15 +376,17 @@ static int lookupName( if( pParse->pTriggerTab!=0 ){ int op = pParse->eTriggerOp; assert( op==TK_DELETE || op==TK_UPDATE || op==TK_INSERT ); - if( op!=TK_DELETE && zTab && sqlite3StrICmp("new",zTab) == 0 ){ + if( pParse->bReturning && (pNC->ncFlags & NC_UBaseReg)!=0 ){ + if( zTab==0 || sqlite3StrICmp(zTab,pParse->pTriggerTab->zName)==0 ){ + pExpr->iTable = op!=TK_DELETE; + pTab = pParse->pTriggerTab; + } + }else if( op!=TK_DELETE && zTab && sqlite3StrICmp("new",zTab) == 0 ){ pExpr->iTable = 1; pTab = pParse->pTriggerTab; }else if( op!=TK_INSERT && zTab && sqlite3StrICmp("old",zTab)==0 ){ pExpr->iTable = 0; pTab = pParse->pTriggerTab; - }else if( pParse->bReturning && (pNC->ncFlags & NC_UBaseReg)!=0 ){ - pExpr->iTable = op!=TK_DELETE; - pTab = pParse->pTriggerTab; } } #endif /* SQLITE_OMIT_TRIGGER */ |