diff --git a/manifest b/manifest index 14bcf53acd..b33f791026 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Use\sthe\sfull\s64-bit\sinteger\svalue\sin\sthe\sargument\sto\srandomblob(). -D 2019-01-18T14:53:15.315 +C Fix\sa\sfairly\sobscure\sproblem\sallowing\san\s"ALTER\sTABLE\sRENAME\scol\sTO\s..."\sstatement\sto\smodify\sthe\sschema\sin\ssuch\sa\sway\sas\sto\sbreak\sa\sreference\swithin\sa\strigger\sprogram. +D 2019-01-18T16:06:18.719 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F Makefile.in 2a9d0331ab57c68173a4c2fe9046fe89c4d916a888e04dd7a2d36958c2bff777 @@ -447,7 +447,7 @@ F spec.template 86a4a43b99ebb3e75e6b9a735d5fd293a24e90ca F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786 F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a -F src/alter.c 8ac946d83b7888faf1707e4fdc9b37e61ec83325bb3d6b1a6d382d3287d0c8d8 +F src/alter.c cb691d6cd330312b7951c9d3bc0bc29804bbe80beac1cdd137d824b119b6f28a F src/analyze.c 58db66344a5c58dcabb57f26696f6f2993956c830446da40b444051d2fdaf644 F src/attach.c 92b51739a885da8bd84bc9a05485f1e48148bce5c15432f059b45af98fff75cd F src/auth.c 0fac71038875693a937e506bceb492c5f136dd7b1249fbd4ae70b4e8da14f9df @@ -621,7 +621,7 @@ F test/alterlegacy.test 82022721ce0de29cedc9a7af63bc9fcc078b0ee000f8283b4b6ea9c3 F test/altermalloc.test 167a47de41b5c638f5f5c6efb59784002b196fff70f98d9b4ed3cd74a3fb80c9 F test/altermalloc2.test fa7b1c1139ea39b8dec407cf1feb032ca8e0076bd429574969b619175ad0174b F test/altertab.test 6e13f13d8c30708f16187908c31dadb1bfff9e3cb2a07a7392a7a5e076f58f4a -F test/altertab2.test b80f1b4c1f8346326b9ba35ad741544c1a9610c82187e49b08f84b869d5f01db +F test/altertab2.test 67dd9806e7dafaea26f3b6fcaa4e909f690d6ac71373545577ece7f96a4ea817 F test/amatch1.test b5ae7065f042b7f4c1c922933f4700add50cdb9f F test/analyze.test 7168c8bffa5d5cbc53c05b7e9c7fcdd24b365a1bc5046ce80c45efa3c02e6b7c F test/analyze3.test ff62d9029e6deb2c914490c6b00caf7fae47cc85cdc046e4a0d0a4d4b87c71d8 @@ -1800,7 +1800,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P f31b3bd2a6a8aa35a6454f37f3a4b4595e2ad74256cd180439019ab4c6c2059e -R 97498d3c71bde004a7d802e0afc968d0 -U drh -Z 04e8cef97e0ba118422a1f7fd8c6430e +P 05df5f7aeaf2132810452e8871132d1e66650a841991cb2a9ce32f2d03e20bf4 +R f8fd80d19fb63224c47a5c696f5a7a57 +U dan +Z 4f2ee8716e9e64841d044a5ee936a34b diff --git a/manifest.uuid b/manifest.uuid index 99709bda97..cfd314bede 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -05df5f7aeaf2132810452e8871132d1e66650a841991cb2a9ce32f2d03e20bf4 \ No newline at end of file +64bec9e6214c6932fab5a3fb8c569ae14cd2d603bd0f8b26104815c3bb9d396a \ No newline at end of file diff --git a/src/alter.c b/src/alter.c index 07fe6e757a..e186338587 100644 --- a/src/alter.c +++ b/src/alter.c @@ -1081,7 +1081,6 @@ static int renameResolveTrigger(Parse *pParse, const char *zDb){ Trigger *pNew = pParse->pNewTrigger; TriggerStep *pStep; NameContext sNC; - SrcList sSrc; int rc = SQLITE_OK; memset(&sNC, 0, sizeof(sNC)); @@ -1112,6 +1111,7 @@ static int renameResolveTrigger(Parse *pParse, const char *zDb){ if( pTarget==0 ){ rc = SQLITE_ERROR; }else if( SQLITE_OK==(rc = sqlite3ViewGetColumnNames(pParse, pTarget)) ){ + SrcList sSrc; memset(&sSrc, 0, sizeof(sSrc)); sSrc.nSrc = 1; sSrc.a[0].zName = pStep->zTarget; @@ -1143,6 +1143,7 @@ static int renameResolveTrigger(Parse *pParse, const char *zDb){ } sNC.ncFlags = 0; } + sNC.pSrcList = 0; } } } diff --git a/test/altertab2.test b/test/altertab2.test index 22995744a4..7a247d90e9 100644 --- a/test/altertab2.test +++ b/test/altertab2.test @@ -305,6 +305,33 @@ do_execsql_test 7.3 { END} } +#------------------------------------------------------------------------- +reset_db +do_execsql_test 8.0 { + CREATE TABLE t1(a, b, c); + CREATE TABLE t2(a, b, c); + CREATE TABLE t3(d, e, f); + CREATE VIEW v1 AS SELECT * FROM t1; + CREATE TRIGGER tr AFTER INSERT ON t3 BEGIN + UPDATE t2 SET a = new.d; + SELECT a, b, c FROM v1; + END; +} + +do_execsql_test 8.1 { + INSERT INTO t3 VALUES(1, 2, 3); +} + +# The following ALTER TABLE fails as if column "t1.a" is renamed the "a" +# in the "SELECT a, b, c FROM v1" within the trigger can no longer be +# resolved. But at one point there was a bug allowing the ALTER TABLE +# succeed. Which meant the subsequent INSERT statement would fail. +do_catchsql_test 8.2 { + ALTER TABLE t1 RENAME a TO aaa; +} {1 {error in trigger tr after rename: no such column: a}} +do_execsql_test 8.3 { + INSERT INTO t3 VALUES(4, 5, 6); +} finish_test