From: drh Date: Wed, 29 Mar 2006 00:24:06 +0000 (+0000) Subject: Properly record the names of triggers even if the name is quoted. X-Git-Tag: version-3.6.10~3009 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e4df0e7497570d25af9c16ec9e8e90560eb0debc;p=thirdparty%2Fsqlite.git Properly record the names of triggers even if the name is quoted. Ticket #1737. (CVS 3158) FossilOrigin-Name: 4ba280ddd66d5cbf617263d6300b7582f65d47a9 --- diff --git a/manifest b/manifest index cc5c572924..135f117909 100644 --- a/manifest +++ b/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 diff --git a/manifest.uuid b/manifest.uuid index dacd93d86a..ceb760bb04 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -aedadfc3e47efa28ff81d7789b54fba9fcc128db \ No newline at end of file +4ba280ddd66d5cbf617263d6300b7582f65d47a9 \ No newline at end of file diff --git a/src/trigger.c b/src/trigger.c index 72f7a72042..d670e527cf 100644 --- a/src/trigger.c +++ b/src/trigger.c @@ -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; inDb; 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 ); diff --git a/test/index.test b/test/index.test index 113bbf06e5..69427e8301 100644 --- a/test/index.test +++ b/test/index.test @@ -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} diff --git a/test/table.test b/test/table.test index a4e9858fe2..18cb806c77 100644 --- a/test/table.test +++ b/test/table.test @@ -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 diff --git a/test/trigger1.test b/test/trigger1.test index a8f9d6698a..3147927f8c 100644 --- a/test/trigger1.test +++ b/test/trigger1.test @@ -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 {