aboutsummaryrefslogtreecommitdiff
path: root/src/resolve.c
diff options
context:
space:
mode:
authordrh <>2021-03-31 17:42:24 +0000
committerdrh <>2021-03-31 17:42:24 +0000
commitd75aeee535254e4b30b80f97ac07d7e3e2378906 (patch)
tree24cbda94d6813b61b97b35837933be833f6cfa24 /src/resolve.c
parentb3ad4e611854dd5f4ad26378c4cfccf9f0c858dd (diff)
downloadsqlite-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.c10
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 */