mirror of https://github.com/sqlite/sqlite
Properly record the names of triggers even if the name is quoted.
Ticket #1737. (CVS 3158) FossilOrigin-Name: 4ba280ddd66d5cbf617263d6300b7582f65d47a9
This commit is contained in:
parent
27436af790
commit
e4df0e7497
18
manifest
18
manifest
|
@ -1,5 +1,5 @@
|
|||
C Compile-time\soption\sto\suse\sonly\s32-bit\sintegers.\s(CVS\s3157)
|
||||
D 2006-03-28T23:57:18
|
||||
C Properly\srecord\sthe\snames\sof\striggers\seven\sif\sthe\sname\sis\squoted.\nTicket\s#1737.\s(CVS\s3158)
|
||||
D 2006-03-29T00:24:07
|
||||
F Makefile.in 5d8dff443383918b700e495de42ec65bc1c8865b
|
||||
F Makefile.linux-gcc 74ba0eadf88748a9ce3fd03d2a3ede2e6715baec
|
||||
F README 9c4e2d6706bdcc3efdd773ce752a8cdab4f90028
|
||||
|
@ -84,7 +84,7 @@ F src/test_async.c e3deaedd4d86a56391b81808fde9e44fbd92f1d3
|
|||
F src/test_md5.c 6c42bc0a3c0b54be34623ff77a0eec32b2fa96e3
|
||||
F src/test_server.c a6460daed0b92ecbc2531b6dc73717470e7a648c
|
||||
F src/tokenize.c 382b3bb0ca26eb9153b5d20b246ef512a114a24f
|
||||
F src/trigger.c 825e5b98183a0ad066d0e1dfa6708c2aac089723
|
||||
F src/trigger.c 48bbb94c11954c8e132efcc04478efe8304c4196
|
||||
F src/update.c 34add66fcd3301b33b6e4c4c813f4e408f7ee4a0
|
||||
F src/utf.c 1d51225bce1ea8d1978e8ab28e862a0c12c7a8e8
|
||||
F src/util.c 59389ed717f0fa9d8023b3f482ba09dcf41343a8
|
||||
|
@ -168,7 +168,7 @@ F test/format4.test 9f31d41d4f926cab97b2ebe6be00a6ab12dece87
|
|||
F test/func.test 27d02fd00b7c2a6b5c8c302d02f9f20876ce5cc8
|
||||
F test/hook.test 7e7645fd9a033f79cce8fdff151e32715e7ec50a
|
||||
F test/in.test 40feeebc7e38576255051aad428322be1545e0f1
|
||||
F test/index.test c478459611ded74745fee57f99f424da8a5f5fbd
|
||||
F test/index.test e65df12bed94b2903ee89987115e1578687e9266
|
||||
F test/index2.test ee83c6b5e3173a3d7137140d945d9a5d4fdfb9d6
|
||||
F test/index3.test f66718cd92ce1216819d47e6a156755e4b2c4ca1
|
||||
F test/insert.test b4d43f8e75e203fe51bc06cacf3636081903dcd1
|
||||
|
@ -237,7 +237,7 @@ F test/sort.test 0e4456e729e5a92a625907c63dcdedfbe72c5dc5
|
|||
F test/subquery.test ae324ee928c5fb463a3ce08a8860d6e7f1ca5797
|
||||
F test/subselect.test 2d13fb7f450db3595adcdd24079a0dd1d2d6abc2
|
||||
F test/sync.test d05397b8f89f423dd6dba528692019ab036bc1c3
|
||||
F test/table.test 6dc0dfa44dd429520e0e5a0c5e55025f730e9403
|
||||
F test/table.test 1c1539af8db89c68e467df02ec2607ec61c67bac
|
||||
F test/tableapi.test 6a66d58b37d46dc0f2b3c7d4bd2617d209399bd1
|
||||
F test/tclsqlite.test 93c399414273d829f3fc5fc4a8349b484fe84d5b
|
||||
F test/temptable.test c36f3e5a94507abb64f7ba23deeb4e1a8a8c3821
|
||||
|
@ -261,7 +261,7 @@ F test/tkt1644.test 80b6a2bb17885f3cf1cb886d97cdad13232bb869
|
|||
F test/tkt1667.test c7faac5050b45d81d0b9f6294e4570b588106e19
|
||||
F test/trace.test 75ffc1b992c780d054748a656e3e7fd674f18567
|
||||
F test/trans.test dbadb11882da0fa0ed2a74acecd28e10965b48d0
|
||||
F test/trigger1.test 0c1d44882dba5c92e4efee4dd133cc979f0b1860
|
||||
F test/trigger1.test e8c717e959c2f98c8181cd9466e140fa7aac781f
|
||||
F test/trigger2.test 33bf8ae9b788013be194efe5f66c04a202facbb4
|
||||
F test/trigger3.test 9102fd3933db294dc654b5aee9edfe9e94f2b9e2
|
||||
F test/trigger4.test 4bed3705c9df4aaf7a7b164a2d573410d05ca025
|
||||
|
@ -355,7 +355,7 @@ F www/tclsqlite.tcl bb0d1357328a42b1993d78573e587c6dcbc964b9
|
|||
F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
|
||||
F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
|
||||
F www/whentouse.tcl 97e2b5cd296f7d8057e11f44427dea8a4c2db513
|
||||
P 0039888f9132dc7461af4ae448292a0ce9adf804
|
||||
R 7b0bb8019b375c888b65242e6615f9d7
|
||||
P aedadfc3e47efa28ff81d7789b54fba9fcc128db
|
||||
R cd3eacf83ff32f49c3fe5762f71c525c
|
||||
U drh
|
||||
Z 82fdf51cac010092a92a7602ec803684
|
||||
Z d07dd13e5dad42ca4274dcff96af4d1e
|
||||
|
|
|
@ -1 +1 @@
|
|||
aedadfc3e47efa28ff81d7789b54fba9fcc128db
|
||||
4ba280ddd66d5cbf617263d6300b7582f65d47a9
|
|
@ -110,7 +110,7 @@ void sqlite3BeginTrigger(
|
|||
if( !zName || SQLITE_OK!=sqlite3CheckObjectName(pParse, zName) ){
|
||||
goto trigger_cleanup;
|
||||
}
|
||||
if( sqlite3HashFind(&(db->aDb[iDb].pSchema->trigHash), zName,pName->n+1) ){
|
||||
if( sqlite3HashFind(&(db->aDb[iDb].pSchema->trigHash), zName,strlen(zName)) ){
|
||||
sqlite3ErrorMsg(pParse, "trigger %T already exists", pName);
|
||||
goto trigger_cleanup;
|
||||
}
|
||||
|
@ -257,7 +257,7 @@ void sqlite3FinishTrigger(
|
|||
Table *pTab;
|
||||
Trigger *pDel;
|
||||
pDel = sqlite3HashInsert(&db->aDb[iDb].pSchema->trigHash,
|
||||
pTrig->name, strlen(pTrig->name)+1, pTrig);
|
||||
pTrig->name, strlen(pTrig->name), pTrig);
|
||||
if( pDel ){
|
||||
assert( sqlite3MallocFailed() && pDel==pTrig );
|
||||
goto triggerfinish_cleanup;
|
||||
|
@ -455,7 +455,7 @@ void sqlite3DropTrigger(Parse *pParse, SrcList *pName){
|
|||
for(i=OMIT_TEMPDB; i<db->nDb; i++){
|
||||
int j = (i<2) ? i^1 : i; /* Search TEMP before MAIN */
|
||||
if( zDb && sqlite3StrICmp(db->aDb[j].zName, zDb) ) continue;
|
||||
pTrigger = sqlite3HashFind(&(db->aDb[j].pSchema->trigHash), zName, nName+1);
|
||||
pTrigger = sqlite3HashFind(&(db->aDb[j].pSchema->trigHash), zName, nName);
|
||||
if( pTrigger ) break;
|
||||
}
|
||||
if( !pTrigger ){
|
||||
|
@ -538,7 +538,8 @@ void sqlite3DropTriggerPtr(Parse *pParse, Trigger *pTrigger){
|
|||
void sqlite3UnlinkAndDeleteTrigger(sqlite3 *db, int iDb, const char *zName){
|
||||
Trigger *pTrigger;
|
||||
int nName = strlen(zName);
|
||||
pTrigger = sqlite3HashInsert(&(db->aDb[iDb].pSchema->trigHash), zName, nName+1, 0);
|
||||
pTrigger = sqlite3HashInsert(&(db->aDb[iDb].pSchema->trigHash),
|
||||
zName, nName, 0);
|
||||
if( pTrigger ){
|
||||
Table *pTable = tableOfTrigger(pTrigger);
|
||||
assert( pTable!=0 );
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
# This file implements regression tests for SQLite library. The
|
||||
# focus of this file is testing the CREATE INDEX statement.
|
||||
#
|
||||
# $Id: index.test,v 1.41 2006/01/17 09:35:02 danielk1977 Exp $
|
||||
# $Id: index.test,v 1.42 2006/03/29 00:24:07 drh Exp $
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
|
@ -182,6 +182,9 @@ do_test index-6.1 {
|
|||
set v [catch {execsql {CREATE INDEX index1 ON test2(g1)}} msg]
|
||||
lappend v $msg
|
||||
} {1 {index index1 already exists}}
|
||||
do_test index-6.1.1 {
|
||||
catchsql {CREATE INDEX [index1] ON test2(g1)}
|
||||
} {1 {index index1 already exists}}
|
||||
do_test index-6.1b {
|
||||
execsql {SELECT name FROM sqlite_master WHERE type!='meta' ORDER BY name}
|
||||
} {index1 test1 test2}
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
# This file implements regression tests for SQLite library. The
|
||||
# focus of this file is testing the CREATE TABLE statement.
|
||||
#
|
||||
# $Id: table.test,v 1.44 2006/01/04 21:40:07 drh Exp $
|
||||
# $Id: table.test,v 1.45 2006/03/29 00:24:07 drh Exp $
|
||||
|
||||
set testdir [file dirname $argv0]
|
||||
source $testdir/tester.tcl
|
||||
|
@ -92,6 +92,9 @@ do_test table-2.1 {
|
|||
execsql {CREATE TABLE TEST2(one text)}
|
||||
catchsql {CREATE TABLE test2(two text default 'hi')}
|
||||
} {1 {table test2 already exists}}
|
||||
do_test table-2.1.1 {
|
||||
catchsql {CREATE TABLE "test2" (two)}
|
||||
} {1 {table "test2" already exists}}
|
||||
do_test table-2.1b {
|
||||
set v [catch {execsql {CREATE TABLE sqlite_master(two text)}} msg]
|
||||
lappend v $msg
|
||||
|
|
|
@ -60,13 +60,27 @@ execsql {
|
|||
INSERT INTO t1 values(1);
|
||||
END;
|
||||
}
|
||||
do_test trigger1-1.2 {
|
||||
do_test trigger1-1.2.1 {
|
||||
catchsql {
|
||||
CREATE TRIGGER tr1 DELETE ON t1 BEGIN
|
||||
SELECT * FROM sqlite_master;
|
||||
END
|
||||
}
|
||||
} {1 {trigger tr1 already exists}}
|
||||
do_test trigger1-1.2.2 {
|
||||
catchsql {
|
||||
CREATE TRIGGER "tr1" DELETE ON t1 BEGIN
|
||||
SELECT * FROM sqlite_master;
|
||||
END
|
||||
}
|
||||
} {1 {trigger "tr1" already exists}}
|
||||
do_test trigger1-1.2.3 {
|
||||
catchsql {
|
||||
CREATE TRIGGER [tr1] DELETE ON t1 BEGIN
|
||||
SELECT * FROM sqlite_master;
|
||||
END
|
||||
}
|
||||
} {1 {trigger [tr1] already exists}}
|
||||
|
||||
do_test trigger1-1.3 {
|
||||
catchsql {
|
||||
|
|
Loading…
Reference in New Issue