]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Ensure that an ALWAYS() in the rename logic really is always true, even
authordrh <drh@noemail.net>
Wed, 4 Dec 2019 15:08:58 +0000 (15:08 +0000)
committerdrh <drh@noemail.net>
Wed, 4 Dec 2019 15:08:58 +0000 (15:08 +0000)
for faulty inputs.

FossilOrigin-Name: 54410f0e7710542d5159d0449898598d2b7f7676bfd993644ca47da1bf1fcdac

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

index ee881de01934dd13d04ef618beadfe99a1afa8fb..4945511d74a9374d56ca13d7d1e7330b47cbcb8d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\san\sassert()\sfailure\sthat\scould\soccur\sin\sALTER\sTABLE\scode\swhen\sthe\sschema\scontains\sa\sview\sthat\suses\sa\sCTE.
-D 2019-12-04T14:26:38.017
+C Ensure\sthat\san\sALWAYS()\sin\sthe\srename\slogic\sreally\sis\salways\strue,\seven\nfor\sfaulty\sinputs.
+D 2019-12-04T15:08:58.371
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -460,7 +460,7 @@ F spec.template 86a4a43b99ebb3e75e6b9a735d5fd293a24e90ca
 F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b
 F sqlite3.1 fc7ad8990fc8409983309bb80de8c811a7506786
 F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a
-F src/alter.c 3101da361810ab2904b39e3c824ffd0770c77262d72bf97a7baba7e8b89cc3fe
+F src/alter.c 8980e4d8c6fcc0ccf671e9d6e66e3ee8e3f6c01db6325d66b603960bb912175b
 F src/analyze.c b3ceec3fc052df8a96ca8a8c858d455dc5029ba681b4be98bb5c5a9162cfa58c
 F src/attach.c b30c44333d55a68c0a12920b5b9d40b254cbd3d4509bda77417209eeed8b3d80
 F src/auth.c a3d5bfdba83d25abed1013a8c7a5f204e2e29b0c25242a56bc02bb0c07bf1e06
@@ -636,7 +636,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 1456b08bd57b5cf978d5c275e08857e00d142cb7d2ba156c1fd360787d5fe06e
+F test/altertab3.test 923db55712318c8942d83840ef7b2fcd328f255257b72f948b94a28aa52049db
 F test/amatch1.test b5ae7065f042b7f4c1c922933f4700add50cdb9f
 F test/analyze.test 547bb700f903107b38611b014ca645d6b5bb819f5210d7bf39c40802aafeb7d7
 F test/analyze3.test 01f0b122e3e54ad2544f14f7cc7dcb4c2cb8753cad5e88c6b8d49615b3fd6a2b
@@ -1851,7 +1851,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 e01fdbf9f700e1bd9dd5283c65547d10d26ce4f4506d3cfef9e1087aecdc2305
-R 28fab4726d1d7a83fe0fc43935cfad37
-U dan
-Z 9893a89ad8b51bef2a7f272ffbfd52e9
+P 75b04a4b0d2e65bfcd02cf4e0b6d8f1954957c590814a9b8f9a9ee2adc2ec022
+R e6faf406d0181523009592ea4b4e2b75
+U drh
+Z e9d70cfc329b6a3765e17c7dd1f5f7a2
index 916a9ff462517353bc26268ee6dea8cf5153ad94..a083c302877a36fb4c8de2bc82bea2e53785645d 100644 (file)
@@ -1 +1 @@
-75b04a4b0d2e65bfcd02cf4e0b6d8f1954957c590814a9b8f9a9ee2adc2ec022
\ No newline at end of file
+54410f0e7710542d5159d0449898598d2b7f7676bfd993644ca47da1bf1fcdac
\ No newline at end of file
index a42030649dcac5771e48fe3b1886bbce2e666ec7..115127e2479a6203148ec1ba23d810fd097331d9 100644 (file)
@@ -757,6 +757,7 @@ static void renameWalkWith(Walker *pWalker, Select *pSelect){
 static int renameUnmapSelectCb(Walker *pWalker, Select *p){
   Parse *pParse = pWalker->pParse;
   int i;
+  if( pParse->nErr ) return WRC_Abort;
   if( ALWAYS(p->pEList) ){
     ExprList *pList = p->pEList;
     for(i=0; i<pList->nExpr; i++){
index 4df2b3c8bbb55ec5a8b99b1eda745bca595a953c..e352abc09a758b534db378981a4ae53e3ddcd226 100644 (file)
@@ -465,5 +465,14 @@ foreach {tn v res} {
   } $res
 }
 
+# Verify that the "if( pParse->nErr ) return WRC_Abort" at the top of the
+# renameUnmapSelectCb() routine in alter.c (2019-12-04) is really required.
+#
+sqlite3 db :memory:
+do_catchsql_test 20.10 {
+  CREATE TABLE s(a, b, c);
+  CREATE INDEX k ON s( (WITH s AS( SELECT * ) VALUES(2) ) IN () );
+  ALTER TABLE s RENAME a TO a2;
+} {1 {error in index k: no tables specified}}
 
 finish_test