From: drh <> Date: Tue, 14 Apr 2026 12:23:11 +0000 (+0000) Subject: Improved error messages and robustness. X-Git-Url: http://git.ipfire.org/gitweb/?a=commitdiff_plain;h=2eeac123c873724cf9bad7830faf1b93f39a66e6;p=thirdparty%2Fsqlite.git Improved error messages and robustness. FossilOrigin-Name: c09ed9eb914bde96cdc5157e29b6384ce488262a2dadc7321c44941a1d08a187 --- diff --git a/ext/misc/analyze.c b/ext/misc/analyze.c index 844bce2b1a..8ec54fa55e 100644 --- a/ext/misc/analyze.c +++ b/ext/misc/analyze.c @@ -43,6 +43,7 @@ static void analysisFree(Analysis *p){ } sqlite3_str_free(p->pOut); sqlite3_free(p->zSU); + memset(p, 0, sizeof(*p)); } /* @@ -63,13 +64,16 @@ static sqlite3_stmt *analysisVPrep(Analysis *p, const char *zFmt, va_list ap){ zSql = sqlite3_vmprintf(zFmt, ap); if( zSql==0 ){ analysisOom(p); return 0; } rc = sqlite3_prepare_v2(p->db, zSql, -1, &pStmt, 0); - sqlite3_free(zSql); if( rc ){ - sqlite3_result_error(p->context, "SQL error", -1); + char *zErr = sqlite3_mprintf("SQL parse error: %s\nOriginal SQL: %s", + sqlite3_errmsg(p->db), zSql); + sqlite3_result_error(p->context, zErr, -1); + sqlite3_free(zErr); sqlite3_finalize(pStmt); analysisFree(p); - return 0; + pStmt = 0; } + sqlite3_free(zSql); return pStmt; } static sqlite3_stmt *analysisPrepare(Analysis *p, const char *zFormat, ...){ @@ -93,7 +97,17 @@ static int analysisSql(Analysis *p, const char *zFormat, ...){ va_end(ap); if( pStmt==0 ) return 1; while( (rc = sqlite3_step(pStmt))==SQLITE_ROW ){} - return sqlite3_finalize(pStmt); + if( rc==SQLITE_DONE ){ + rc = SQLITE_OK; + }else{ + char *zErr = sqlite3_mprintf("SQL run-time error: %s\nOriginal SQL: %s", + sqlite3_errmsg(p->db), sqlite3_sql(pStmt)); + sqlite3_result_error(p->context, zErr, -1); + sqlite3_free(zErr); + analysisFree(p); + } + sqlite3_finalize(pStmt); + return rc; } /* diff --git a/manifest b/manifest index b197c58f3d..4b6fd2a80c 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Initial\sprototype\simplementation\sof\sa\snew\srun-time\sloadable\sSQL\sfunction\nto\sdo\sapproximately\sthe\ssame\swork\sas\ssqlite3_analyze. -D 2026-04-14T11:25:22.838 +C Improved\serror\smessages\sand\srobustness. +D 2026-04-14T12:23:11.868 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -358,7 +358,7 @@ F ext/jni/src/tests/000-001-ignored.test e17e874c6ab3c437f1293d88093cf06286083b6 F ext/jni/src/tests/900-001-fts.test bf0ce17a8d082773450e91f2388f5bbb2dfa316d0b676c313c637a91198090f0 F ext/misc/README.md 6243cdc4d7eb791c41ef0716f3980b8b5f6aa8c61ff76a3958cbf0031c6ebfa7 F ext/misc/amatch.c 8d237cc014b3736922c26a76a451050d244aa4980c47c531f368f817b1e77b49 -F ext/misc/analyze.c 09c84bae0688265dd58713b215804f8650dcbe4005a0f0ff44619f7ffdfa9885 +F ext/misc/analyze.c 84c04e7e0097bfe6daab27bfffab69ceb45141a5a52925c23f1dea8543abe0bb F ext/misc/anycollseq.c 5ffdfde9829eeac52219136ad6aa7cd9a4edb3b15f4f2532de52f4a22525eddb F ext/misc/appendvfs.c 9642c7a194a2a25dca7ad3e36af24a0a46d7702168c4ad7e59c9f9b0e16a3824 F ext/misc/base64.c 1445761667c16356e827fc6418294c869468be934429aaa8315035e76dd58acf @@ -2199,11 +2199,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c -P aa3432af90b2b9ab0b92f56a8e9c926930b9859e986500bd00d5600c1dd036bf -R 26f98ad980f0da4ded03ad63495bf4ec -T *branch * analyze-sql-func -T *sym-analyze-sql-func * -T -sym-trunk * +P 03934b5a6c88a97117a4743a68ee36d30bcbdcebcf11342d30ac42daf9f10874 +R b4acfe922618f5b816e94830c08ec5c1 U drh -Z 99890306986fdbb1171742fd99ea9c19 +Z 27c7bb76cf0ab3aef2174f80a228eaa8 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 47bd1864de..39b14d8e09 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -03934b5a6c88a97117a4743a68ee36d30bcbdcebcf11342d30ac42daf9f10874 +c09ed9eb914bde96cdc5157e29b6384ce488262a2dadc7321c44941a1d08a187