]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Simplification of the DROP TRIGGER logic using sqlite3NestedParse() instead
authordrh <drh@noemail.net>
Wed, 9 Dec 2015 16:26:38 +0000 (16:26 +0000)
committerdrh <drh@noemail.net>
Wed, 9 Dec 2015 16:26:38 +0000 (16:26 +0000)
of hand-coded VDBE code.  This is a manual cherry-pick of the key change from
check-in [c80bbf14b365d].

FossilOrigin-Name: 8021b4c8139ba56d6b1e2e26aeec4f9bf77f37c9

manifest
manifest.uuid
src/trigger.c

index 4be65dcffd2428ff09f003b3cb6a6a8fc157a062..677d1f72d0a15eeece0ff1cb920227d8fbe800b1 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Changes\sto\savoid\sundefined\sbehavior\sin\smemset()\sand\smemcpy()\sand\sin\sthe\ncomparisons\sof\spointers\sfrom\sdifferent\sallocations.\s\sAll\sproblems\sare\sfound\nby\sanalysis\stools\s-\snone\shave\sbeen\sseen\sin\sthe\swild.
-D 2015-12-08T16:58:45.426
+C Simplification\sof\sthe\sDROP\sTRIGGER\slogic\susing\ssqlite3NestedParse()\sinstead\nof\shand-coded\sVDBE\scode.\s\sThis\sis\sa\smanual\scherry-pick\sof\sthe\skey\schange\sfrom\ncheck-in\s[c80bbf14b365d].
+D 2015-12-09T16:26:38.759
 F Makefile.in 28bcd6149e050dff35d4dcfd97e890cd387a499d
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc e8fdca1cb89a1b58b5f4d3a130ea9a3d28cb314d
@@ -399,7 +399,7 @@ F src/test_wsd.c 41cadfd9d97fe8e3e4e44f61a4a8ccd6f7ca8fe9
 F src/threads.c bbfb74450643cb5372a43ad4f6cffd7e9dfcecb0
 F src/tokenize.c 5606871a377f390af7040ec3c12e0d183512d785
 F src/treeview.c 78842e90c1f71269e7a73a1d4221b6fe360bab66
-F src/trigger.c 322f23aad694e8f31d384dcfa386d52a48d3c52f
+F src/trigger.c de3ed31ad3218a20d7d7e18bf1b3b734e78bda66
 F src/update.c 17332f9fe818cbc0444c36a811800af8498af4c3
 F src/utf.c fc6b889ba0779b7722634cdeaa25f1930d93820c
 F src/util.c e802e8e311a0d6c48cd1b3e89db164f6f0248d70
@@ -1408,7 +1408,7 @@ F tool/vdbe_profile.tcl 246d0da094856d72d2c12efec03250d71639d19f
 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
 F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P f20396adb2cff12a17a3fc90b36241ae3fdfd62a
-R 70bc46af51bec4fcd5f5ac34f7fbc9eb
+P 901d0b8f3b72e96ffa8e9436993a12980f5ebd51
+R e560f751f53c5733305e8b0ee0bd6c81
 U drh
-Z 9b6f69f2c38f1825e156d39e6c72b0a2
+Z 957e158965f07497a4d00489add5865f
index a26e28b825efdbc826775457b8ef38137069cf0d..dc29bbac6d89bc587eb637873c6912b0bc691fb3 100644 (file)
@@ -1 +1 @@
-901d0b8f3b72e96ffa8e9436993a12980f5ebd51
\ No newline at end of file
+8021b4c8139ba56d6b1e2e26aeec4f9bf77f37c9
\ No newline at end of file
index 2eba0cf92cdcacba41089330fcd2140bb0edbfd3..be490e923a323c8ffaba7b4eb8b01ea4c9e31feb 100644 (file)
@@ -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;
-    }
   }
 }