From: drh <> Date: Sat, 10 Aug 2024 13:45:25 +0000 (+0000) Subject: Cherrypick ALTER TABLE fixes from trunk so that ALTER TABLE no longer X-Git-Tag: version-3.46.1~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=016214ddf777e7ce9b104787ab48cf8f69c4939f;p=thirdparty%2Fsqlite.git Cherrypick ALTER TABLE fixes from trunk so that ALTER TABLE no longer returns SQLITE_INTERNAL instead of SQLITE_ERROR after malformed input. FossilOrigin-Name: 6decf00f7c56746fac31469ccc098a5be1344b2cafa8011bfcfbc7923e3cd97b --- diff --git a/manifest b/manifest index 548a8f155e..fd8a3b324e 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Cherrypick\svarious\sminor\sfixes\sfrom\strunk\sinto\sbranch-3.46. -D 2024-08-10T11:02:23.976 +C Cherrypick\sALTER\sTABLE\sfixes\sfrom\strunk\sso\sthat\sALTER\sTABLE\sno\slonger\nreturns\sSQLITE_INTERNAL\sinstead\sof\sSQLITE_ERROR\safter\smalformed\sinput. +D 2024-08-10T13:45:25.769 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -686,7 +686,7 @@ F sqlite.pc.in 42b7bf0d02e08b9e77734a47798d1a55a9e0716b F sqlite3.1 acdff36db796e2d00225b911d3047d580cd136547298435426ce9d40347973cc F sqlite3.pc.in 48fed132e7cb71ab676105d2a4dc77127d8c1f3a F sqlite_cfg.h.in baf2e409c63d4e7a765e17769b6ff17c5a82bbd9cbf1e284fd2e4cefaff3fcf2 -F src/alter.c e1b6782b85dd758f89e5c588e4e3eb82638c2dafc0c857b79a43bb8ec1746fca +F src/alter.c bb663fddf1fe0e2e6d8758b2b7fb6374e7c057a6ca3955f37a48986806029765 F src/analyze.c a3df28274e2565ba5656577d7e3fd262169a213e6eb0bd47890e0f0729a4031c F src/attach.c cc9d00d30da916ff656038211410ccf04ed784b7564639b9b61d1839ed69fd39 F src/auth.c 19b7ccacae3dfba23fc6f1d0af68134fa216e9040e53b0681b4715445ea030b4 @@ -752,7 +752,7 @@ F src/pragma.h e690a356c18e98414d2e870ea791c1be1545a714ba623719deb63f7f226d8bb7 F src/prepare.c d99931f45416652895e502328ca49fe782cfc4e1ebdcda13b3736d991ebf42ce F src/printf.c 8b250972305e14b365561be5117ed0fd364e4fd58968776df1ce64c6280b90f9 F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c -F src/resolve.c ae341d04d39de308e024649d6777dd015b6a94ddbfbe74d7fca2ee122fb1aea9 +F src/resolve.c 4f4c99b8714fa04844a0f1f96ee69eefc8928e300af9247a46cfe80f78f8997c F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97 F src/select.c 1a841c38974d45cf15a7611398479182b61ad4c187423c380741d8b1688fe607 F src/shell.c.in ebb698028ec031e0b1595865500097d2005f977be0efd14bd8b0ddf634d5ed8d @@ -2191,15 +2191,10 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 4afe3201f005bfd1aa66bbeebac659323d8a35dbee04d50fbf77ba96a94db91e -Q +061d7b69e6a43474cd7123a69f4ee65b5649a0b5e51474343defef5ae5262657 -Q +08cc5488404d068e59378b82988460793710df43ec21b4a83a794b497abd035f -Q +273504b74cb9c3cfa2497a1339e706a1f2d2c3ce81b23a16beb47da9292535e0 -Q +a096eb7554952f8137c6e9330c328164719fb27e958787fbd503bcd1364e6ae4 -Q +a35c50eca907d0cf373b7962c359aebfce8ac7c34ce81edeb99122d4fb5804f7 -Q +c7aaa28f786567e29ebee3848283b5c740dd3b8144dc14372e56260ae1b76922 -Q +e78b7783040ef1ad34d4287af8a7a5998d360d50076e0de42a116d9a96fe74b4 -R 9db66ace3e0949b1bbff4f1693881c2f +P 6047b18ee3c4d8f2661386ef68c717f5892651c3d6f7e29a98a6b2795b3382d3 +Q +9052187efd1f78abd9b285ac94269a3ba4d65b6aa74c9fa34002ee0628c83919 +Q +b416756320dfb46ad72b843a7fbf18807d3fd1966251c320de626280b5238a5c +R c3625207947b56085ff84e7a4b1c0404 U drh -Z 1aa2ed1f9203f8c31686df6bb8cab665 +Z 3b74f2bdac4bf6c3eef7ca7236fcd520 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 581b9c84e3..1d5e7b27da 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -6047b18ee3c4d8f2661386ef68c717f5892651c3d6f7e29a98a6b2795b3382d3 +6decf00f7c56746fac31469ccc098a5be1344b2cafa8011bfcfbc7923e3cd97b diff --git a/src/alter.c b/src/alter.c index c1e0a295a4..a8556d115e 100644 --- a/src/alter.c +++ b/src/alter.c @@ -1320,7 +1320,7 @@ static int renameResolveTrigger(Parse *pParse){ /* ALWAYS() because if the table of the trigger does not exist, the ** error would have been hit before this point */ if( ALWAYS(pParse->pTriggerTab) ){ - rc = sqlite3ViewGetColumnNames(pParse, pParse->pTriggerTab); + rc = sqlite3ViewGetColumnNames(pParse, pParse->pTriggerTab)!=0; } /* Resolve symbols in WHEN clause */ diff --git a/src/resolve.c b/src/resolve.c index 40044a2204..590f8ae5e0 100644 --- a/src/resolve.c +++ b/src/resolve.c @@ -2154,6 +2154,9 @@ int sqlite3ResolveExprNames( ** Resolve all names for all expression in an expression list. This is ** just like sqlite3ResolveExprNames() except that it works for an expression ** list rather than a single expression. +** +** The return value is SQLITE_OK (0) for success or SQLITE_ERROR (1) for a +** failure. */ int sqlite3ResolveExprListNames( NameContext *pNC, /* Namespace to resolve expressions in. */ @@ -2162,7 +2165,7 @@ int sqlite3ResolveExprListNames( int i; int savedHasAgg = 0; Walker w; - if( pList==0 ) return WRC_Continue; + if( pList==0 ) return SQLITE_OK; w.pParse = pNC->pParse; w.xExprCallback = resolveExprStep; w.xSelectCallback = resolveSelectStep; @@ -2176,7 +2179,7 @@ int sqlite3ResolveExprListNames( #if SQLITE_MAX_EXPR_DEPTH>0 w.pParse->nHeight += pExpr->nHeight; if( sqlite3ExprCheckHeight(w.pParse, w.pParse->nHeight) ){ - return WRC_Abort; + return SQLITE_ERROR; } #endif sqlite3WalkExprNN(&w, pExpr); @@ -2193,10 +2196,10 @@ int sqlite3ResolveExprListNames( (NC_HasAgg|NC_MinMaxAgg|NC_HasWin|NC_OrderAgg); pNC->ncFlags &= ~(NC_HasAgg|NC_MinMaxAgg|NC_HasWin|NC_OrderAgg); } - if( w.pParse->nErr>0 ) return WRC_Abort; + if( w.pParse->nErr>0 ) return SQLITE_ERROR; } pNC->ncFlags |= savedHasAgg; - return WRC_Continue; + return SQLITE_OK; } /*