From 50133dea285803571214c3459f1ce4d79eea25ec Mon Sep 17 00:00:00 2001 From: dan Date: Fri, 27 Jan 2017 17:02:26 +0000 Subject: [PATCH] Fix a problem causing the pre-update hook to be invoked by DROP TABLE statements. FossilOrigin-Name: fbb6bf1b69cfd581b4ffd778c344e3fbd9c9406f --- manifest | 16 ++++++++-------- manifest.uuid | 2 +- src/delete.c | 4 +++- test/hook.test | 10 ++++++---- 4 files changed, 18 insertions(+), 14 deletions(-) diff --git a/manifest b/manifest index 1c84aea007..55464d8c36 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Alternative\sICU\sfix\s(compare\sto\scheck-in\s[50e60cb4])\sthat\savoids\scasting\nintegers\sto\spointers. -D 2017-01-27T13:14:12.467 +C Fix\sa\sproblem\scausing\sthe\spre-update\shook\sto\sbe\sinvoked\sby\sDROP\sTABLE\nstatements. +D 2017-01-27T17:02:26.115 F Makefile.in 5f415e7867296d678fed2e6779aea10c1318b4bc F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434 F Makefile.msc b8ca53350ae545e3562403d5da2a69cec79308da @@ -342,7 +342,7 @@ F src/complete.c a3634ab1e687055cd002e11b8f43eb75c17da23e F src/ctime.c 9f2296a4e5d26ebf0e0d95a0af4628f1ea694e7a F src/date.c dc3f1391d9297f8c748132813aaffcb117090d6e F src/dbstat.c 19ee7a4e89979d4df8e44cfac7a8f905ec89b77d -F src/delete.c 8a444fea8340989d6b1be2e122c55bfc61ce69be +F src/delete.c 0d9d5549d42e79ce4d82ff1db1e6c81e36d2f67c F src/expr.c f06f41e5e5daca10fb090e70a2502dcc0dbc992b F src/fault.c 460f3e55994363812d9d60844b2a6de88826e007 F src/fkey.c 2e9aabe1aee76273aff8a84ee92c464e095400ae @@ -832,7 +832,7 @@ F test/gcfault.test dd28c228a38976d6336a3fc42d7e5f1ad060cb8c F test/genesis.tcl 1e2e2e8e5cc4058549a154ff1892fe5c9de19f98 F test/hexlit.test 4a6a5f46e3c65c4bf1fa06f5dd5a9507a5627751 F test/hidden.test 23c1393a79e846d68fd902d72c85d5e5dcf98711 -F test/hook.test f6a48d33817f0ca1a39a4d6605fe7e9da8077522 +F test/hook.test dbc0b87756e1e20e7497b56889c9e9cd2f8cc2b5 F test/icu.test 73956798bace8982909c00476b216714a6d0559a F test/ieee754.test 806fc0ce7f305f57e3331eaceeddcfec9339e607 F test/imposter1.test c3f1db2d3db2c24611a6596a3fc0ffc14f1466c8 @@ -1547,7 +1547,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 58f02e6eae8fc9e2577fe435b0282fb46af3960d -R 4a4a07080dc840a599a4cd01566373f4 -U drh -Z 816a99767333ba2de388be8cc7b0ed87 +P d9752c8f7c55426fd7d2b877c5cc3784f93b5349 +R 7c4166e1e335b0337f6f8b4996b52965 +U dan +Z 241b65c68385a1329b03731baa61f118 diff --git a/manifest.uuid b/manifest.uuid index 92d5c8ac0b..e1bf32dbf9 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -d9752c8f7c55426fd7d2b877c5cc3784f93b5349 \ No newline at end of file +fbb6bf1b69cfd581b4ffd778c344e3fbd9c9406f \ No newline at end of file diff --git a/src/delete.c b/src/delete.c index 1d31622237..0683f9b9dd 100644 --- a/src/delete.c +++ b/src/delete.c @@ -715,7 +715,9 @@ void sqlite3GenerateRowDelete( u8 p5 = 0; sqlite3GenerateRowIndexDelete(pParse, pTab, iDataCur, iIdxCur,0,iIdxNoSeek); sqlite3VdbeAddOp2(v, OP_Delete, iDataCur, (count?OPFLAG_NCHANGE:0)); - sqlite3VdbeAppendP4(v, (char*)pTab, P4_TABLE); + if( pParse->nested==0 ){ + sqlite3VdbeAppendP4(v, (char*)pTab, P4_TABLE); + } if( eMode!=ONEPASS_OFF ){ sqlite3VdbeChangeP5(v, OPFLAG_AUXDELETE); } diff --git a/test/hook.test b/test/hook.test index 0c24ec7313..9ba220cded 100644 --- a/test/hook.test +++ b/test/hook.test @@ -849,10 +849,12 @@ do_preupdate_test 7.6.4 { } # No preupdate callbacks for modifying sqlite_master. -do_preupdate_test 8.1 { - CREATE TABLE x1(x, y); -} { -} +do_preupdate_test 8.1 { CREATE TABLE x1(x, y); } { } +do_preupdate_test 8.2 { ALTER TABLE x1 ADD COLUMN z } { } +do_preupdate_test 8.3 { ALTER TABLE x1 RENAME TO y1 } { } +do_preupdate_test 8.4 { CREATE INDEX y1x ON y1(x) } { } +do_preupdate_test 8.5 { CREATE VIEW v1 AS SELECT * FROM y1 } { } +do_preupdate_test 8.6 { DROP TABLE y1 } { } #------------------------------------------------------------------------- reset_db -- 2.47.2