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)
|
C Do\snot\sdelete\stables\swith\sthe\ssame\sname\swhen\sdropping\striggers.\nTicket\s#430.\s(CVS\s1074)
|
||||||
D 2003-08-15T13:24:52
|
D 2003-08-16T12:37:52
|
||||||
F Makefile.in 9ad23ed4ca97f9670c4496432e3fbd4b3760ebde
|
F Makefile.in 9ad23ed4ca97f9670c4496432e3fbd4b3760ebde
|
||||||
F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
|
F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
|
||||||
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
|
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
|
||||||
@@ -55,11 +55,11 @@ F src/test2.c 5014337d8576b731cce5b5a14bec4f0daf432700
|
|||||||
F src/test3.c 30985ebdfaf3ee1462a9b0652d3efbdc8d9798f5
|
F src/test3.c 30985ebdfaf3ee1462a9b0652d3efbdc8d9798f5
|
||||||
F src/threadtest.c d641a5219e718e18a1a80a50eb9bb549f451f42e
|
F src/threadtest.c d641a5219e718e18a1a80a50eb9bb549f451f42e
|
||||||
F src/tokenize.c 2ba93fe10d5f57f0cc20b07417c3244a30c324b3
|
F src/tokenize.c 2ba93fe10d5f57f0cc20b07417c3244a30c324b3
|
||||||
F src/trigger.c 6ff205aaac4869e402d9902e528e1d22a85de14c
|
F src/trigger.c 474581eaab388233df01bb019e558af2965decbf
|
||||||
F src/update.c 24260b4fda00c9726d27699a0561d53c0dccc397
|
F src/update.c 24260b4fda00c9726d27699a0561d53c0dccc397
|
||||||
F src/util.c 9ab0f573d31ad8c3cf1fcb6bef7a6299e09463fa
|
F src/util.c 9ab0f573d31ad8c3cf1fcb6bef7a6299e09463fa
|
||||||
F src/vacuum.c e4724eade07e4cf8897060a8cf632dbd92408eeb
|
F src/vacuum.c e4724eade07e4cf8897060a8cf632dbd92408eeb
|
||||||
F src/vdbe.c 779fa3b15148161282a71241ff9733a54a8b0648
|
F src/vdbe.c fb7f2fc00cd3400ca7e7b10b2b6cc692dfa8c59b
|
||||||
F src/vdbe.h d853ed6cc4727fa9e8ace6187c55afcf817041dd
|
F src/vdbe.h d853ed6cc4727fa9e8ace6187c55afcf817041dd
|
||||||
F src/where.c 83b2a2d26d5c3bea33457a83e541bb1dcf7b1248
|
F src/where.c 83b2a2d26d5c3bea33457a83e541bb1dcf7b1248
|
||||||
F test/all.test 569a92a8ee88f5300c057cc4a8f50fbbc69a3242
|
F test/all.test 569a92a8ee88f5300c057cc4a8f50fbbc69a3242
|
||||||
@@ -121,7 +121,7 @@ F test/tclsqlite.test d9bdfc0afca9ee605c50ecb39e94ae4dea8c222b
|
|||||||
F test/temptable.test c82bd6f800f10e8cf96921af6315e5f1c21e2692
|
F test/temptable.test c82bd6f800f10e8cf96921af6315e5f1c21e2692
|
||||||
F test/tester.tcl 2671536d3650c29e7c105219f277568b0884cb58
|
F test/tester.tcl 2671536d3650c29e7c105219f277568b0884cb58
|
||||||
F test/trans.test 75e7a171b5d2d94ee56766459113e2ad0e5f809d
|
F test/trans.test 75e7a171b5d2d94ee56766459113e2ad0e5f809d
|
||||||
F test/trigger1.test 6efd402da3b74e2d9e6a42b8a97413575fbf48f6
|
F test/trigger1.test 9f82134e5afad3158b0892c088fa5a8d79d56236
|
||||||
F test/trigger2.test 22aa0519ae18cf83568c7fba7b8cee893dd6b824
|
F test/trigger2.test 22aa0519ae18cf83568c7fba7b8cee893dd6b824
|
||||||
F test/trigger3.test a95ccace88291449f5eae7139ec438a42f90654d
|
F test/trigger3.test a95ccace88291449f5eae7139ec438a42f90654d
|
||||||
F test/trigger4.test 542afce45774e8f8e1130b96b8675f414d6e4bd8
|
F test/trigger4.test 542afce45774e8f8e1130b96b8675f414d6e4bd8
|
||||||
@@ -168,7 +168,7 @@ F www/speed.tcl 2f6b1155b99d39adb185f900456d1d592c4832b3
|
|||||||
F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604
|
F www/sqlite.tcl 3c83b08cf9f18aa2d69453ff441a36c40e431604
|
||||||
F www/tclsqlite.tcl 1db15abeb446aad0caf0b95b8b9579720e4ea331
|
F www/tclsqlite.tcl 1db15abeb446aad0caf0b95b8b9579720e4ea331
|
||||||
F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1
|
F www/vdbe.tcl 9b9095d4495f37697fd1935d10e14c6015e80aa1
|
||||||
P 17bdfeb284880d82cd546e6c191c3a37121ec861
|
P 3563e9cf9d6b20f09e92deb21fdda93bcd8fb583
|
||||||
R 99126044d381fca63089f0ab608b861d
|
R 2e87b58b5a40574a4f4655a00aae49e0
|
||||||
U drh
|
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 ){
|
if( pTable!=0 && !nested && (v = sqliteGetVdbe(pParse))!=0 ){
|
||||||
int base;
|
int base;
|
||||||
static VdbeOp dropTrigger[] = {
|
static VdbeOp dropTrigger[] = {
|
||||||
{ OP_Rewind, 0, ADDR(8), 0},
|
{ OP_Rewind, 0, ADDR(9), 0},
|
||||||
{ OP_String, 0, 0, 0}, /* 1 */
|
{ OP_String, 0, 0, 0}, /* 1 */
|
||||||
{ OP_MemStore, 1, 1, 0},
|
|
||||||
{ OP_MemLoad, 1, 0, 0}, /* 3 */
|
|
||||||
{ OP_Column, 0, 1, 0},
|
{ 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_Delete, 0, 0, 0},
|
||||||
{ OP_Next, 0, ADDR(3), 0}, /* 7 */
|
{ OP_Next, 0, ADDR(1), 0}, /* 8 */
|
||||||
};
|
};
|
||||||
|
|
||||||
sqliteBeginWriteOperation(pParse, 0, 0);
|
sqliteBeginWriteOperation(pParse, 0, 0);
|
||||||
|
@@ -36,7 +36,7 @@
|
|||||||
** in this file for details. If in doubt, do not deviate from existing
|
** in this file for details. If in doubt, do not deviate from existing
|
||||||
** commenting and indentation practices when changing or adding code.
|
** 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 "sqliteInt.h"
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
@@ -1845,7 +1845,7 @@ case OP_Pull: {
|
|||||||
tz = zStack[from];
|
tz = zStack[from];
|
||||||
Deephemeralize(p, to);
|
Deephemeralize(p, to);
|
||||||
for(i=from; i<to; i++){
|
for(i=from; i<to; i++){
|
||||||
Deephemeralize(p, i);
|
Deephemeralize(p, i+1);
|
||||||
aStack[i] = aStack[i+1];
|
aStack[i] = aStack[i+1];
|
||||||
assert( (aStack[i].flags & STK_Ephem)==0 );
|
assert( (aStack[i].flags & STK_Ephem)==0 );
|
||||||
if( aStack[i].flags & (STK_Dyn|STK_Static) ){
|
if( aStack[i].flags & (STK_Dyn|STK_Static) ){
|
||||||
|
@@ -309,4 +309,47 @@ do_test trigger-4.4 {
|
|||||||
|
|
||||||
integrity_check trigger-5.1
|
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
|
finish_test
|
||||||
|
Reference in New Issue
Block a user