]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Cherrypick ALTER TABLE fixes from trunk so that ALTER TABLE no longer
authordrh <>
Sat, 10 Aug 2024 13:45:25 +0000 (13:45 +0000)
committerdrh <>
Sat, 10 Aug 2024 13:45:25 +0000 (13:45 +0000)
returns SQLITE_INTERNAL instead of SQLITE_ERROR after malformed input.

FossilOrigin-Name: 6decf00f7c56746fac31469ccc098a5be1344b2cafa8011bfcfbc7923e3cd97b

manifest
manifest.uuid
src/alter.c
src/resolve.c

index 548a8f155e57b9683893adcda0b105ea86ba04d9..fd8a3b324ec5cc9e24da42d47d0353c90fe61c0d 100644 (file)
--- 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.
index 581b9c84e3aa0a0da9f3cb2cefefea6f4a915519..1d5e7b27dae712dd1eb8a5bd066bd0bb0bc2311b 100644 (file)
@@ -1 +1 @@
-6047b18ee3c4d8f2661386ef68c717f5892651c3d6f7e29a98a6b2795b3382d3
+6decf00f7c56746fac31469ccc098a5be1344b2cafa8011bfcfbc7923e3cd97b
index c1e0a295a4a88cd4caf2c24d466ece1b270c406d..a8556d115e8bba34498caa8a493359e284adf85e 100644 (file)
@@ -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 */
index 40044a220438f2ec5a101a4276a277496e9296c3..590f8ae5e0632d94395aa5e50c5bea044edd0f15 100644 (file)
@@ -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;
 }
 
 /*