mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-05 15:55:57 +03:00
Do not delete tables with the same name when dropping triggers.
Ticket #430. (CVS 1074) FossilOrigin-Name: ef58f163b08d13f8e9b69459bd83e0bf9d5b404b
This commit is contained in:
16
manifest
16
manifest
@@ -1,5 +1,5 @@
|
||||
C Fix\sa\ssegfault\sthat\soccurs\sin\sthe\sVACUUM\scommand\sif\srun\son\san\sempty\sdatabase\nwith\sthe\sEMPTY_RESULT_CALLBACKS\spragma\senabled.\s\sTicket\s#427.\s(CVS\s1073)
|
||||
D 2003-08-15T13:24:52
|
||||
C Do\snot\sdelete\stables\swith\sthe\ssame\sname\swhen\sdropping\striggers.\nTicket\s#430.\s(CVS\s1074)
|
||||
D 2003-08-16T12:37:52
|
||||
F Makefile.in 9ad23ed4ca97f9670c4496432e3fbd4b3760ebde
|
||||
F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
|
||||
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
|
||||
@@ -55,11 +55,11 @@ F src/test2.c 5014337d8576b731cce5b5a14bec4f0daf432700
|
||||
F src/test3.c 30985ebdfaf3ee1462a9b0652d3efbdc8d9798f5
|
||||
F src/threadtest.c d641a5219e718e18a1a80a50eb9bb549f451f42e
|
||||
F src/tokenize.c 2ba93fe10d5f57f0cc20b07417c3244a30c324b3
|
||||
F src/trigger.c 6ff205aaac4869e402d9902e528e1d22a85de14c
|
||||
F src/trigger.c 474581eaab388233df01bb019e558af2965decbf
|
||||
F src/update.c 24260b4fda00c9726d27699a0561d53c0dccc397
|
||||
F src/util.c 9ab0f573d31ad8c3cf1fcb6bef7a6299e09463fa
|
||||
F src/vacuum.c e4724eade07e4cf8897060a8cf632dbd92408eeb
|
||||
F src/vdbe.c 779fa3b15148161282a71241ff9733a54a8b0648
|
||||
F src/vdbe.c fb7f2fc00cd3400ca7e7b10b2b6cc692dfa8c59b
|
||||
F src/vdbe.h d853ed6cc4727fa9e8ace6187c55afcf817041dd
|
||||
F src/where.c 83b2a2d26d5c3bea33457a83e541bb1dcf7b1248
|
||||
F test/all.test 569a92a8ee88f5300c057cc4a8f50fbbc69a3242
|
||||
@@ -121,7 +121,7 @@ F test/tclsqlite.test d9bdfc0afca9ee605c50ecb39e94ae4dea8c222b
|
||||
F test/temptable.test c82bd6f800f10e8cf96921af6315e5f1c21e2692
|
||||
F test/tester.tcl 2671536d3650c29e7c105219f277568b0884cb58
|
||||
F test/trans.test 75e7a171b5d2d94ee56766459113e2ad0e5f809d
|
||||
F test/trigger1.test 6efd402da3b74e2d9e6a42b8a97413575fbf48f6
|
||||
F test/trigger1.test 9f82134e5afad3158b0892c088fa5a8d79d56236
|
||||
F test/trigger2.test 22aa0519ae18cf83568c7fba7b8cee893dd6b824
|
||||
F test/trigger3.test a95ccace88291449f5eae7139ec438a42f90654d
|
||||
F test/trigger4.test 542afce45774e8f8e1130b96b8675f414d6e4bd8
|
||||
@@ -168,7 +168,7 @@ F www/speed.tcl 2f6b1155b99d39adb185f900456d1d592c4832b3
|
||||
F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604
|
||||
F www/tclsqlite.tcl 1db15abeb446aad0caf0b95b8b9579720e4ea331
|
||||
F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1
|
||||
P 17bdfeb284880d82cd546e6c191c3a37121ec861
|
||||
R 99126044d381fca63089f0ab608b861d
|
||||
P 3563e9cf9d6b20f09e92deb21fdda93bcd8fb583
|
||||
R 2e87b58b5a40574a4f4655a00aae49e0
|
||||
U drh
|
||||
Z ffa6c41bb25f99b70e59810bf367fde2
|
||||
Z a19c702b91baa7a5eaffe7897fd8fbab
|
||||
|
@@ -1 +1 @@
|
||||
3563e9cf9d6b20f09e92deb21fdda93bcd8fb583
|
||||
ef58f163b08d13f8e9b69459bd83e0bf9d5b404b
|
@@ -450,14 +450,15 @@ void sqliteDropTriggerPtr(Parse *pParse, Trigger *pTrigger, int nested){
|
||||
if( pTable!=0 && !nested && (v = sqliteGetVdbe(pParse))!=0 ){
|
||||
int base;
|
||||
static VdbeOp dropTrigger[] = {
|
||||
{ OP_Rewind, 0, ADDR(8), 0},
|
||||
{ OP_Rewind, 0, ADDR(9), 0},
|
||||
{ OP_String, 0, 0, 0}, /* 1 */
|
||||
{ OP_MemStore, 1, 1, 0},
|
||||
{ OP_MemLoad, 1, 0, 0}, /* 3 */
|
||||
{ OP_Column, 0, 1, 0},
|
||||
{ OP_Ne, 0, ADDR(7), 0},
|
||||
{ OP_Ne, 0, ADDR(8), 0},
|
||||
{ OP_String, 0, 0, "trigger"},
|
||||
{ OP_Column, 0, 0, 0},
|
||||
{ OP_Ne, 0, ADDR(8), 0},
|
||||
{ OP_Delete, 0, 0, 0},
|
||||
{ OP_Next, 0, ADDR(3), 0}, /* 7 */
|
||||
{ OP_Next, 0, ADDR(1), 0}, /* 8 */
|
||||
};
|
||||
|
||||
sqliteBeginWriteOperation(pParse, 0, 0);
|
||||
|
@@ -36,7 +36,7 @@
|
||||
** in this file for details. If in doubt, do not deviate from existing
|
||||
** commenting and indentation practices when changing or adding code.
|
||||
**
|
||||
** $Id: vdbe.c,v 1.235 2003/07/27 17:16:07 drh Exp $
|
||||
** $Id: vdbe.c,v 1.236 2003/08/16 12:37:52 drh Exp $
|
||||
*/
|
||||
#include "sqliteInt.h"
|
||||
#include "os.h"
|
||||
@@ -1845,7 +1845,7 @@ case OP_Pull: {
|
||||
tz = zStack[from];
|
||||
Deephemeralize(p, to);
|
||||
for(i=from; i<to; i++){
|
||||
Deephemeralize(p, i);
|
||||
Deephemeralize(p, i+1);
|
||||
aStack[i] = aStack[i+1];
|
||||
assert( (aStack[i].flags & STK_Ephem)==0 );
|
||||
if( aStack[i].flags & (STK_Dyn|STK_Static) ){
|
||||
|
@@ -309,4 +309,47 @@ do_test trigger-4.4 {
|
||||
|
||||
integrity_check trigger-5.1
|
||||
|
||||
# Create a trigger with the same name as a table. Make sure the
|
||||
# trigger works. Then drop the trigger. Make sure the table is
|
||||
# still there.
|
||||
#
|
||||
do_test trigger-6.1 {
|
||||
execsql {SELECT type, name FROM sqlite_master}
|
||||
} {view v1 table t2}
|
||||
do_test trigger-6.2 {
|
||||
execsql {
|
||||
CREATE TRIGGER t2 BEFORE DELETE ON t2 BEGIN
|
||||
SELECT RAISE(ABORT,'deletes are not allows');
|
||||
END;
|
||||
SELECT type, name FROM sqlite_master;
|
||||
}
|
||||
} {view v1 table t2 trigger t2}
|
||||
do_test trigger-6.3 {
|
||||
catchsql {DELETE FROM t2}
|
||||
} {1 {deletes are not allows}}
|
||||
do_test trigger-6.4 {
|
||||
execsql {SELECT * FROM t2}
|
||||
} {3 4 7 8}
|
||||
do_test trigger-6.5 {
|
||||
db close
|
||||
sqlite db test.db
|
||||
execsql {SELECT type, name FROM sqlite_master}
|
||||
} {view v1 table t2 trigger t2}
|
||||
do_test trigger-6.6 {
|
||||
execsql {
|
||||
DROP TRIGGER t2;
|
||||
SELECT type, name FROM sqlite_master;
|
||||
}
|
||||
} {view v1 table t2}
|
||||
do_test trigger-6.7 {
|
||||
execsql {SELECT * FROM t2}
|
||||
} {3 4 7 8}
|
||||
do_test trigger-6.8 {
|
||||
db close
|
||||
sqlite db test.db
|
||||
execsql {SELECT * FROM t2}
|
||||
} {3 4 7 8}
|
||||
|
||||
integrity_check trigger-7.1
|
||||
|
||||
finish_test
|
||||
|
Reference in New Issue
Block a user