]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a potential problem with ALTER TABLE commands on schemas that contains a triggers...
authordan <dan@noemail.net>
Fri, 20 Dec 2019 14:18:29 +0000 (14:18 +0000)
committerdan <dan@noemail.net>
Fri, 20 Dec 2019 14:18:29 +0000 (14:18 +0000)
FossilOrigin-Name: 365dd8b663d5a28af33556b2b3820c6b5482114ef741a1d82b55c6e154f3043a

manifest
manifest.uuid
src/alter.c
test/altertab3.test

index 0b4cac813e2c006f61e7e7fb22f881f56b64be0b..75c61e1170402b32757799326816b5833da82a35 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sharmless\scompiler\swarnings.
-D 2019-12-20T14:08:34.492
+C Fix\sa\spotential\sproblem\swith\sALTER\sTABLE\scommands\son\sschemas\sthat\scontains\sa\striggers\sor\sview\sfeaturing\sa\ssub-query\sthat\suses\san\sON\sclause\swith\sa\sjoin\sthat\sis\snot\sa\sLEFT\sJOIN.
+D 2019-12-20T14:18:29.607
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -461,7 +461,7 @@ F spec.template 86a4a43b99ebb3e75e6b9a735d5fd293a24e90ca
 F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
 F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
 F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
-F src/alter.c ed16ff55ca0dfe4c1157c0e19557015c48cfa00acfb65de90aea049df8ee2e5e
+F src/alter.c bc3e4089d5a708be4f1a8018737f64c2d11cc7ef0abf2e7b5a7f160e566e9d2f
 F src/analyze.c b3ceec3fc052df8a96ca8a8c858d455dc5029ba681b4be98bb5c5a9162cfa58c
 F src/attach.c b30c44333d55a68c0a12920b5b9d40b254cbd3d4509bda77417209eeed8b3d80
 F src/auth.c a3d5bfdba83d25abed1013a8c7a5f204e2e29b0c25242a56bc02bb0c07bf1e06
@@ -637,7 +637,7 @@ F test/altermalloc.test 167a47de41b5c638f5f5c6efb59784002b196fff70f98d9b4ed3cd74
 F test/altermalloc2.test fa7b1c1139ea39b8dec407cf1feb032ca8e0076bd429574969b619175ad0174b
 F test/altertab.test 4d8b79b0b88b62b90b710390df14fe99e0a3578345526886eaa550e28e3065dc
 F test/altertab2.test 8883693952f6d7fb5f754dbf1d694ed780aa883027bef04cb1fb99a3b88c9272
-F test/altertab3.test 231881a8e9c4905a84213476c64c174a119e1ab75ce17d986dcbbacc07b2b544
+F test/altertab3.test 10c32d6251344bdc114d2df27e62cb72b5afc676f20709224d362d0cff0aa3e3
 F test/amatch1.test b5ae7065f042b7f4c1c922933f4700add50cdb9f
 F test/analyze.test 547bb700f903107b38611b014ca645d6b5bb819f5210d7bf39c40802aafeb7d7
 F test/analyze3.test 01f0b122e3e54ad2544f14f7cc7dcb4c2cb8753cad5e88c6b8d49615b3fd6a2b
@@ -1852,7 +1852,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 c16305eba0eb14368f2631b9a82b7eb4483c93f3b31257ee7c33f9b00c344379
-R 72d5aa86f1f7f18348aeb1b944e4ef0b
-U drh
-Z fe665bddd0655063a4499d0272db49cc
+P 2bbd014c900e0d71fd30ec647739b82c5dc3aa237a0203f5a1db50593dae199e
+R 0edb1929000466763280bc6535083f04
+U dan
+Z 68ed7a96bea311c719c5f16d32c1fd41
index 08955f99632b16ef8181cb1c4985cc4b0957c4a8..0703472ec4a4bfe544f7309767a0c9c76d175468 100644 (file)
@@ -1 +1 @@
-2bbd014c900e0d71fd30ec647739b82c5dc3aa237a0203f5a1db50593dae199e
\ No newline at end of file
+365dd8b663d5a28af33556b2b3820c6b5482114ef741a1d82b55c6e154f3043a
\ No newline at end of file
index a9647a195ba366ae62642597b9d5fb7c7d473881..1b0d9e28e1b900156f6ce9f1abd2edd9692dbef7 100644 (file)
@@ -775,6 +775,7 @@ static int renameUnmapSelectCb(Walker *pWalker, Select *p){
     SrcList *pSrc = p->pSrc;
     for(i=0; i<pSrc->nSrc; i++){
       sqlite3RenameTokenRemap(pParse, 0, (void*)pSrc->a[i].zName);
+      if( sqlite3WalkExpr(pWalker, pSrc->a[i].pOn) ) return WRC_Abort;
     }
   }
 
index 88d882fcb4db689ac5c120f5cc9282b2e818cfd9..27bca291fc2b79d5a84190d638b5660d4667f520 100644 (file)
@@ -517,5 +517,18 @@ do_catchsql_test 22.6 {
   ALTER TABLE t1 RENAME TO t4;
 } {0 {}}
 
+#------------------------------------------------------------------------
+#
+reset_db
+do_execsql_test 23.1 {
+  CREATE TABLE t1(x);
+  CREATE TRIGGER r1 AFTER INSERT ON t1 BEGIN
+    UPDATE t1 SET (c,d)=((SELECT 1 FROM t1 JOIN t2 ON b=x),1);
+  END;
+}
+
+do_catchsql_test 23.2 {
+  ALTER TABLE t1 RENAME TO t1x;
+} {1 {error in trigger r1: no such table: main.t2}}
 
 finish_test