mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-05 15:55:57 +03:00
Do not allow triggers on the SQLITE_MASTER table. (CVS 579)
FossilOrigin-Name: 275ba356f351abcf9a079ac16b765c9443750f0e
This commit is contained in:
20
manifest
20
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Fix\sfor\sticket\s#46:\sReport\san\serror\sif\sa\sCREATE\sTABLE\scontains\stwo\sor\smore\ncolumns\swith\sthe\ssame\sname.\s(CVS\s578)
|
C Do\snot\sallow\striggers\son\sthe\sSQLITE_MASTER\stable.\s(CVS\s579)
|
||||||
D 2002-05-22T21:27:03
|
D 2002-05-23T00:30:31
|
||||||
F Makefile.in 6291a33b87d2a395aafd7646ee1ed562c6f2c28c
|
F Makefile.in 6291a33b87d2a395aafd7646ee1ed562c6f2c28c
|
||||||
F Makefile.template 4e11752e0b5c7a043ca50af4296ec562857ba495
|
F Makefile.template 4e11752e0b5c7a043ca50af4296ec562857ba495
|
||||||
F README a4c0ba11354ef6ba0776b400d057c59da47a4cc0
|
F README a4c0ba11354ef6ba0776b400d057c59da47a4cc0
|
||||||
@@ -34,7 +34,7 @@ F src/os.c 5ab8b6b4590d0c1ab8e96c67996c170e4462e0fc
|
|||||||
F src/os.h 4a361fccfbc4e7609b3e1557f604f94c1e96ad10
|
F src/os.h 4a361fccfbc4e7609b3e1557f604f94c1e96ad10
|
||||||
F src/pager.c ba5740104cc27b342cd43eebfdc44d60f64a3ded
|
F src/pager.c ba5740104cc27b342cd43eebfdc44d60f64a3ded
|
||||||
F src/pager.h 6fddfddd3b73aa8abc081b973886320e3c614f0e
|
F src/pager.h 6fddfddd3b73aa8abc081b973886320e3c614f0e
|
||||||
F src/parse.y 964a7cc954e3b84e9de54692648fb70bee1c0ba8
|
F src/parse.y 3f2f7334aa1460bf5b208f51b9e1f53747e552ff
|
||||||
F src/printf.c d8032ee18b860c812eeff596c9bebfdacb7930fd
|
F src/printf.c d8032ee18b860c812eeff596c9bebfdacb7930fd
|
||||||
F src/random.c 19e8e00fe0df32a742f115773f57651be327cabe
|
F src/random.c 19e8e00fe0df32a742f115773f57651be327cabe
|
||||||
F src/select.c 1b623a7d826ec7c245bc542b665d61724da2a62d
|
F src/select.c 1b623a7d826ec7c245bc542b665d61724da2a62d
|
||||||
@@ -48,8 +48,8 @@ F src/test1.c 09d95048b66ce6dcd2bae90f443589043d7d631e
|
|||||||
F src/test2.c 669cc22781c6461a273416ec1a7414d25c081730
|
F src/test2.c 669cc22781c6461a273416ec1a7414d25c081730
|
||||||
F src/test3.c 4e52fff8b01f08bd202f7633feda5639b7ba2b5e
|
F src/test3.c 4e52fff8b01f08bd202f7633feda5639b7ba2b5e
|
||||||
F src/threadtest.c 81f0598e0f031c1bd506af337fdc1b7e8dff263f
|
F src/threadtest.c 81f0598e0f031c1bd506af337fdc1b7e8dff263f
|
||||||
F src/tokenize.c f12f78c58b2a79ea4eee880efad63a328e103c62
|
F src/tokenize.c 5892a8eb8f0063718f5bec1a1b24f4c6029eba9b
|
||||||
F src/trigger.c d40853730bf392ec7c3b25fc65550af40b9094f6
|
F src/trigger.c 0b86599dd395307e330e6dce143d9d04bd051580
|
||||||
F src/update.c 46c4b3e86c066cd8a0dcf0b75e4580bcf113aeb0
|
F src/update.c 46c4b3e86c066cd8a0dcf0b75e4580bcf113aeb0
|
||||||
F src/util.c 707c30f8c13cddace7c08556ac450c0b786660b3
|
F src/util.c 707c30f8c13cddace7c08556ac450c0b786660b3
|
||||||
F src/vdbe.c 5fd717e6a42e98e4f244a2149267004f71f23679
|
F src/vdbe.c 5fd717e6a42e98e4f244a2149267004f71f23679
|
||||||
@@ -99,8 +99,8 @@ F test/tclsqlite.test 79deeffd7cd637ca0f06c5dbbf2f44d272079533
|
|||||||
F test/temptable.test daa83489eea2e9aaeeece09675c28be84c72cb67
|
F test/temptable.test daa83489eea2e9aaeeece09675c28be84c72cb67
|
||||||
F test/tester.tcl dc1b56bd628b487e4d75bfd1e7480b5ed8810ac6
|
F test/tester.tcl dc1b56bd628b487e4d75bfd1e7480b5ed8810ac6
|
||||||
F test/trans.test ae0b9a82d5d34122c3a3108781eb8d078091ccee
|
F test/trans.test ae0b9a82d5d34122c3a3108781eb8d078091ccee
|
||||||
F test/trigger1.test 06dd47935cf38ce5de0b232e7b61aad57685bae1
|
F test/trigger1.test 75f31403db0f4ae98391cff3ae396b6346a68913
|
||||||
F test/trigger2.test 662818d5cc3313c14819df1c9084c119057a0bde
|
F test/trigger2.test 2d23ad8a7e74c64018b6c7dff79bbf2574ffd776
|
||||||
F test/unique.test 07776624b82221a80c8b4138ce0dd8b0853bb3ea
|
F test/unique.test 07776624b82221a80c8b4138ce0dd8b0853bb3ea
|
||||||
F test/update.test a0aa0bf83e6fad8407d0e4ad25ebb09b513f5bf4
|
F test/update.test a0aa0bf83e6fad8407d0e4ad25ebb09b513f5bf4
|
||||||
F test/vacuum.test 059871b312eb910bbe49dafde1d01490cc2c6bbe
|
F test/vacuum.test 059871b312eb910bbe49dafde1d01490cc2c6bbe
|
||||||
@@ -134,7 +134,7 @@ F www/speed.tcl da8afcc1d3ccc5696cfb388a68982bc3d9f7f00f
|
|||||||
F www/sqlite.tcl 8b5884354cb615049aed83039f8dfe1552a44279
|
F www/sqlite.tcl 8b5884354cb615049aed83039f8dfe1552a44279
|
||||||
F www/tclsqlite.tcl 1db15abeb446aad0caf0b95b8b9579720e4ea331
|
F www/tclsqlite.tcl 1db15abeb446aad0caf0b95b8b9579720e4ea331
|
||||||
F www/vdbe.tcl 2013852c27a02a091d39a766bc87cff329f21218
|
F www/vdbe.tcl 2013852c27a02a091d39a766bc87cff329f21218
|
||||||
P 0c903461533fabca7815e8cccbd3b712bcd22ddc
|
P ba1953abd04671232cf9e93ab3f962fedbbdc508
|
||||||
R eaf5d8758292d7cdb287f773e215d706
|
R a952285f133ca5b16c99838ac55a7dcb
|
||||||
U drh
|
U drh
|
||||||
Z f48c858d25b915a9feadbebd4ae9d048
|
Z 8f9363819a6fa7621778a9a4ae7a975a
|
||||||
|
@@ -1 +1 @@
|
|||||||
ba1953abd04671232cf9e93ab3f962fedbbdc508
|
275ba356f351abcf9a079ac16b765c9443750f0e
|
@@ -14,7 +14,7 @@
|
|||||||
** the parser. Lemon will also generate a header file containing
|
** the parser. Lemon will also generate a header file containing
|
||||||
** numeric codes for all of the tokens.
|
** numeric codes for all of the tokens.
|
||||||
**
|
**
|
||||||
** @(#) $Id: parse.y,v 1.66 2002/05/21 11:38:12 drh Exp $
|
** @(#) $Id: parse.y,v 1.67 2002/05/23 00:30:31 drh Exp $
|
||||||
*/
|
*/
|
||||||
%token_prefix TK_
|
%token_prefix TK_
|
||||||
%token_type {Token}
|
%token_type {Token}
|
||||||
@@ -124,6 +124,7 @@ id(A) ::= OFFSET(X). {A = X;}
|
|||||||
id(A) ::= PRAGMA(X). {A = X;}
|
id(A) ::= PRAGMA(X). {A = X;}
|
||||||
id(A) ::= REPLACE(X). {A = X;}
|
id(A) ::= REPLACE(X). {A = X;}
|
||||||
id(A) ::= ROW(X). {A = X;}
|
id(A) ::= ROW(X). {A = X;}
|
||||||
|
id(A) ::= STATEMENT(X). {A = X;}
|
||||||
id(A) ::= TEMP(X). {A = X;}
|
id(A) ::= TEMP(X). {A = X;}
|
||||||
id(A) ::= TRIGGER(X). {A = X;}
|
id(A) ::= TRIGGER(X). {A = X;}
|
||||||
id(A) ::= VACUUM(X). {A = X;}
|
id(A) ::= VACUUM(X). {A = X;}
|
||||||
|
@@ -15,7 +15,7 @@
|
|||||||
** individual tokens and sends those tokens one-by-one over to the
|
** individual tokens and sends those tokens one-by-one over to the
|
||||||
** parser for analysis.
|
** parser for analysis.
|
||||||
**
|
**
|
||||||
** $Id: tokenize.c,v 1.41 2002/05/15 08:30:14 danielk1977 Exp $
|
** $Id: tokenize.c,v 1.42 2002/05/23 00:30:31 drh Exp $
|
||||||
*/
|
*/
|
||||||
#include "sqliteInt.h"
|
#include "sqliteInt.h"
|
||||||
#include "os.h"
|
#include "os.h"
|
||||||
@@ -100,6 +100,7 @@ static Keyword aKeywordTable[] = {
|
|||||||
{ "ROW", 0, TK_ROW, 0 },
|
{ "ROW", 0, TK_ROW, 0 },
|
||||||
{ "SELECT", 0, TK_SELECT, 0 },
|
{ "SELECT", 0, TK_SELECT, 0 },
|
||||||
{ "SET", 0, TK_SET, 0 },
|
{ "SET", 0, TK_SET, 0 },
|
||||||
|
{ "STATEMENT", 0, TK_STATEMENT, 0 },
|
||||||
{ "TABLE", 0, TK_TABLE, 0 },
|
{ "TABLE", 0, TK_TABLE, 0 },
|
||||||
{ "TEMP", 0, TK_TEMP, 0 },
|
{ "TEMP", 0, TK_TEMP, 0 },
|
||||||
{ "TEMPORARY", 0, TK_TEMP, 0 },
|
{ "TEMPORARY", 0, TK_TEMP, 0 },
|
||||||
|
@@ -60,6 +60,12 @@ void sqliteCreateTrigger(
|
|||||||
pParse->nErr++;
|
pParse->nErr++;
|
||||||
goto trigger_cleanup;
|
goto trigger_cleanup;
|
||||||
}
|
}
|
||||||
|
if( sqliteStrICmp(tab->zName, MASTER_NAME)==0 ){
|
||||||
|
sqliteSetString(&pParse->zErrMsg, "cannot create trigger on system "
|
||||||
|
"table: " MASTER_NAME, 0);
|
||||||
|
pParse->nErr++;
|
||||||
|
goto trigger_cleanup;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Build the Trigger object */
|
/* Build the Trigger object */
|
||||||
|
@@ -102,6 +102,14 @@ do_test trig_cd-1.8 {
|
|||||||
}
|
}
|
||||||
} {0}
|
} {0}
|
||||||
|
|
||||||
|
do_test trig_cd-1.9 {
|
||||||
|
catchsql {
|
||||||
|
CREATE TRIGGER tr1 AFTER UPDATE ON sqlite_master BEGIN
|
||||||
|
SELECT * FROM sqlite_master;
|
||||||
|
END;
|
||||||
|
}
|
||||||
|
} {1 {cannot create trigger on system table: sqlite_master}}
|
||||||
|
|
||||||
catchsql {
|
catchsql {
|
||||||
DROP TABLE temp_table;
|
DROP TABLE temp_table;
|
||||||
}
|
}
|
||||||
@@ -110,4 +118,3 @@ catchsql {
|
|||||||
}
|
}
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
|
||||||
|
@@ -541,7 +541,8 @@ execsql {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# 7. Triggers on views
|
# 7. Triggers on views
|
||||||
execsql {
|
do_test trig-7.1 {
|
||||||
|
execsql {
|
||||||
CREATE TABLE ab(a, b);
|
CREATE TABLE ab(a, b);
|
||||||
CREATE TABLE cd(c, d);
|
CREATE TABLE cd(c, d);
|
||||||
INSERT INTO ab VALUES (1, 2);
|
INSERT INTO ab VALUES (1, 2);
|
||||||
@@ -579,9 +580,10 @@ execsql {
|
|||||||
INSERT INTO tlog VALUES(NULL,
|
INSERT INTO tlog VALUES(NULL,
|
||||||
0, 0, 0, 0, new.a, new.b, new.c, new.d);
|
0, 0, 0, 0, new.a, new.b, new.c, new.d);
|
||||||
END;
|
END;
|
||||||
}
|
}
|
||||||
|
} {}
|
||||||
|
|
||||||
do_test trig-7 {
|
do_test trig-7.2 {
|
||||||
execsql {
|
execsql {
|
||||||
UPDATE abcd SET a = 100, b = 5*5 WHERE a = 1;
|
UPDATE abcd SET a = 100, b = 5*5 WHERE a = 1;
|
||||||
DELETE FROM abcd WHERE a = 1;
|
DELETE FROM abcd WHERE a = 1;
|
||||||
@@ -594,4 +596,3 @@ do_test trig-7 {
|
|||||||
5 0 0 0 0 10 20 30 40 6 0 0 0 0 10 20 30 40 ]
|
5 0 0 0 0 10 20 30 40 6 0 0 0 0 10 20 30 40 ]
|
||||||
|
|
||||||
finish_test
|
finish_test
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user