Further enhancements to make sure the correct returnning trigger is run when

there are nested INSERT RETURNING statements.

FossilOrigin-Name: d83405e870b071540b56e76291bdce1388db80b860afd68a34e4233f6ff2a3ab
This commit is contained in:
drh
2023-10-26 16:59:22 +00:00
parent 94331d406a
commit 113e15fbbe
4 changed files with 23 additions and 13 deletions
+9 -2
View File
@@ -970,10 +970,17 @@ static void codeReturningTrigger(
SrcList sFrom;
assert( v!=0 );
if( !pParse->bReturning ) return;
if( !pParse->bReturning ){
/* This RETURNING trigger must be for a different statement as
** this statement lacks a RETURNING clause. */
return;
}
assert( db->pParse==pParse );
pReturning = pParse->u1.pReturning;
assert( pTrigger == &(pReturning->retTrig) );
if( pTrigger != &(pReturning->retTrig) ){
/* This RETURNING trigger is for a different statement */
return;
}
memset(&sSelect, 0, sizeof(sSelect));
memset(&sFrom, 0, sizeof(sFrom));
sSelect.pEList = sqlite3ExprListDup(db, pReturning->pReturnEL, 0);