diff options
author | drh <> | 2021-01-29 19:32:17 +0000 |
---|---|---|
committer | drh <> | 2021-01-29 19:32:17 +0000 |
commit | b83524795427e9ad8131fe9827e397f973b37932 (patch) | |
tree | b11f546c7b283c9cc68e9408b6645a877e2bd8a6 /src/resolve.c | |
parent | 2c99b84c955e3d19dbb305a6ac60bac654e4952b (diff) | |
download | sqlite-b83524795427e9ad8131fe9827e397f973b37932.tar.gz sqlite-b83524795427e9ad8131fe9827e397f973b37932.zip |
Working prototype.
FossilOrigin-Name: b7ef4dc21f187ff4ff679e823782535188c3814aa6ce720b3a01c6d3ba4ef9f5
Diffstat (limited to 'src/resolve.c')
-rw-r--r-- | src/resolve.c | 11 |
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; |