aboutsummaryrefslogtreecommitdiff
path: root/src/resolve.c
diff options
context:
space:
mode:
authordrh <>2021-01-29 19:32:17 +0000
committerdrh <>2021-01-29 19:32:17 +0000
commitb83524795427e9ad8131fe9827e397f973b37932 (patch)
treeb11f546c7b283c9cc68e9408b6645a877e2bd8a6 /src/resolve.c
parent2c99b84c955e3d19dbb305a6ac60bac654e4952b (diff)
downloadsqlite-b83524795427e9ad8131fe9827e397f973b37932.tar.gz
sqlite-b83524795427e9ad8131fe9827e397f973b37932.zip
Working prototype.
FossilOrigin-Name: b7ef4dc21f187ff4ff679e823782535188c3814aa6ce720b3a01c6d3ba4ef9f5
Diffstat (limited to 'src/resolve.c')
-rw-r--r--src/resolve.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/src/resolve.c b/src/resolve.c
index b55bdc418..fa46954da 100644
--- a/src/resolve.c
+++ b/src/resolve.c
@@ -371,23 +371,26 @@ static int lookupName(
** it is a new.* or old.* trigger argument reference. Or
** maybe it is an excluded.* from an upsert.
*/
- if( zDb==0 && zTab!=0 && cntTab==0 ){
+ if( zDb==0 && cntTab==0 ){
pTab = 0;
#ifndef SQLITE_OMIT_TRIGGER
if( pParse->pTriggerTab!=0 ){
int op = pParse->eTriggerOp;
assert( op==TK_DELETE || op==TK_UPDATE || op==TK_INSERT );
- if( op!=TK_DELETE && sqlite3StrICmp("new",zTab) == 0 ){
+ if( op!=TK_DELETE && zTab && sqlite3StrICmp("new",zTab) == 0 ){
pExpr->iTable = 1;
pTab = pParse->pTriggerTab;
- }else if( op!=TK_INSERT && sqlite3StrICmp("old",zTab)==0 ){
+ }else if( op!=TK_INSERT && zTab && sqlite3StrICmp("old",zTab)==0 ){
pExpr->iTable = 0;
pTab = pParse->pTriggerTab;
+ }else if( pParse->bReturning ){
+ pExpr->iTable = op!=TK_DELETE;
+ pTab = pParse->pTriggerTab;
}
}
#endif /* SQLITE_OMIT_TRIGGER */
#ifndef SQLITE_OMIT_UPSERT
- if( (pNC->ncFlags & NC_UUpsert)!=0 ){
+ if( (pNC->ncFlags & NC_UUpsert)!=0 && zTab ){
Upsert *pUpsert = pNC->uNC.pUpsert;
if( pUpsert && sqlite3StrICmp("excluded",zTab)==0 ){
pTab = pUpsert->pUpsertSrc->a[0].pTab;