diff options
author | drh <drh@noemail.net> | 2015-12-09 16:26:38 +0000 |
---|---|---|
committer | drh <drh@noemail.net> | 2015-12-09 16:26:38 +0000 |
commit | 8c8dddc90411eef6d23bf6b40bcb05eb65d240bf (patch) | |
tree | c2bf3f0f01c3f9ce4ce0d779bc818ae64b1b5d5e /src/trigger.c | |
parent | 72ea29d7ae7395c66869f6848d3af94c20843a72 (diff) | |
download | sqlite-8c8dddc90411eef6d23bf6b40bcb05eb65d240bf.tar.gz sqlite-8c8dddc90411eef6d23bf6b40bcb05eb65d240bf.zip |
Simplification of the DROP TRIGGER logic using sqlite3NestedParse() instead
of hand-coded VDBE code. This is a manual cherry-pick of the key change from
check-in [c80bbf14b365d].
FossilOrigin-Name: 8021b4c8139ba56d6b1e2e26aeec4f9bf77f37c9
Diffstat (limited to 'src/trigger.c')
-rw-r--r-- | src/trigger.c | 27 |
1 files changed, 4 insertions, 23 deletions
diff --git a/src/trigger.c b/src/trigger.c index 2eba0cf92..be490e923 100644 --- a/src/trigger.c +++ b/src/trigger.c @@ -559,31 +559,12 @@ void sqlite3DropTriggerPtr(Parse *pParse, Trigger *pTrigger){ */ assert( pTable!=0 ); if( (v = sqlite3GetVdbe(pParse))!=0 ){ - int base; - static const int iLn = VDBE_OFFSET_LINENO(2); - static const VdbeOpList dropTrigger[] = { - { OP_Rewind, 0, ADDR(9), 0}, - { OP_String8, 0, 1, 0}, /* 1 */ - { OP_Column, 0, 1, 2}, - { OP_Ne, 2, ADDR(8), 1}, - { OP_String8, 0, 1, 0}, /* 4: "trigger" */ - { OP_Column, 0, 0, 2}, - { OP_Ne, 2, ADDR(8), 1}, - { OP_Delete, 0, 0, 0}, - { OP_Next, 0, ADDR(1), 0}, /* 8 */ - }; - - sqlite3BeginWriteOperation(pParse, 0, iDb); - sqlite3OpenMasterTable(pParse, iDb); - base = sqlite3VdbeAddOpList(v, ArraySize(dropTrigger), dropTrigger, iLn); - sqlite3VdbeChangeP4(v, base+1, pTrigger->zName, P4_TRANSIENT); - sqlite3VdbeChangeP4(v, base+4, "trigger", P4_STATIC); + sqlite3NestedParse(pParse, + "DELETE FROM %Q.%s WHERE name=%Q AND type='trigger'", + db->aDb[iDb].zName, SCHEMA_TABLE(iDb), pTrigger->zName + ); sqlite3ChangeCookie(pParse, iDb); - sqlite3VdbeAddOp2(v, OP_Close, 0, 0); sqlite3VdbeAddOp4(v, OP_DropTrigger, iDb, 0, 0, pTrigger->zName, 0); - if( pParse->nMem<3 ){ - pParse->nMem = 3; - } } } |