-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
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
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
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
-3563e9cf9d6b20f09e92deb21fdda93bcd8fb583
\ No newline at end of file
+ef58f163b08d13f8e9b69459bd83e0bf9d5b404b
\ No newline at end of file
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);
** 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"
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) ){
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