diff options
Diffstat (limited to 'ext/pdo_sqlite/sqlite/src/trigger.c')
| -rw-r--r-- | ext/pdo_sqlite/sqlite/src/trigger.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/ext/pdo_sqlite/sqlite/src/trigger.c b/ext/pdo_sqlite/sqlite/src/trigger.c index a6eabbf62a..4a929adde0 100644 --- a/ext/pdo_sqlite/sqlite/src/trigger.c +++ b/ext/pdo_sqlite/sqlite/src/trigger.c @@ -47,7 +47,6 @@ void sqlite3BeginTrigger( int op, /* One of TK_INSERT, TK_UPDATE, TK_DELETE */ IdList *pColumns, /* column list if this is an UPDATE OF trigger */ SrcList *pTableName,/* The name of the table/view the trigger applies to */ - int foreach, /* One of TK_ROW or TK_STATEMENT */ Expr *pWhen, /* WHEN clause */ int isTemp, /* True if the TEMPORARY keyword is present */ int noErr /* Suppress errors if the trigger already exists */ @@ -180,7 +179,6 @@ void sqlite3BeginTrigger( pTrigger->tr_tm = tr_tm==TK_BEFORE ? TRIGGER_BEFORE : TRIGGER_AFTER; pTrigger->pWhen = sqlite3ExprDup(pWhen); pTrigger->pColumns = sqlite3IdListDup(pColumns); - pTrigger->foreach = foreach; sqlite3TokenCopy(&pTrigger->nameToken,pName); assert( pParse->pNewTrigger==0 ); pParse->pNewTrigger = pTrigger; @@ -390,7 +388,11 @@ TriggerStep *sqlite3TriggerUpdateStep( int orconf /* The conflict algorithm. (OE_Abort, OE_Ignore, etc) */ ){ TriggerStep *pTriggerStep = sqliteMalloc(sizeof(TriggerStep)); - if( pTriggerStep==0 ) return 0; + if( pTriggerStep==0 ){ + sqlite3ExprListDelete(pEList); + sqlite3ExprDelete(pWhere); + return 0; + } pTriggerStep->op = TK_UPDATE; pTriggerStep->target = *pTableName; @@ -409,7 +411,10 @@ TriggerStep *sqlite3TriggerUpdateStep( */ TriggerStep *sqlite3TriggerDeleteStep(Token *pTableName, Expr *pWhere){ TriggerStep *pTriggerStep = sqliteMalloc(sizeof(TriggerStep)); - if( pTriggerStep==0 ) return 0; + if( pTriggerStep==0 ){ + sqlite3ExprDelete(pWhere); + return 0; + } pTriggerStep->op = TK_DELETE; pTriggerStep->target = *pTableName; |
