Properly record the names of triggers even if the name is quoted.

Ticket #1737. (CVS 3158)

FossilOrigin-Name: 4ba280ddd66d5cbf617263d6300b7582f65d47a9
This commit is contained in:
drh 2006-03-29 00:24:06 +00:00
parent 27436af790
commit e4df0e7497
6 changed files with 38 additions and 17 deletions

View File

@ -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

View File

@ -1 +1 @@
aedadfc3e47efa28ff81d7789b54fba9fcc128db
4ba280ddd66d5cbf617263d6300b7582f65d47a9

View File

@ -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 );

View File

@ -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}

View File

@ -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

View File

@ -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 {