SQLite 3.53.3发布:修复漏洞、新增特性,多方面提升数据库引擎性能 SQLite 3.53.3 发布修复漏洞、新增特性与功能多方面改进数据库引擎SQLite 是一个 C 语言库实现了一个小型、快速、独立、高可靠性、全功能的 SQL 数据库引擎也是世界上使用最多的数据库引擎。其源代码属于公共领域每个人都可以免费使用用于任何目的。3.53.0 版本以来的更新1.修复漏洞修复 [WAL 重置数据库损坏漏洞](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fwal.html%23walresetbug)。2.添加库及相关功能添加[查询结果格式化程序 (QRF)](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fsrc%2Ffile%2Fext%2Fqrf) 库以便在等距字体屏幕上格式化 SQL 查询结果使其易于阅读。- 向 [TCL 接口](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Ftclsqlite.html)添加 [format 方法](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Ftclsqlite.html%23format)以便可以从 TCL 访问 QRF。- QRF 用于 [CLI](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fcli.html) 中的结果格式化从而提高显示功能。3.SQL 语言新增特性- 增强 [ALTER TABLE 语句](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Flang_altertable.html)允许添加和删除 NOT NULL 和 CHECK 约束。- [REINDEX EXPRESSIONS](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Flang_reindex.html) 语句用于重建表达式索引可用于修复[过期的表达式索引](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fstaleexpridx.html)。- [TEMP](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Flang_createtrigger.html%23temptrig) [triggers](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Flang_createtrigger.html%23temptrig)主体现在可以修改和 / 或查询主模式中的表。- 增强 [VACUUM INTO](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Flang_vacuum.html%23vacuuminto)以便如果使用 URI 文件名作为目标并且该文件名具有 reserveN 查询参数N 介于 0 和 255 之间则生成的数据库副本的保留量设置为 N。4.新增 SQL 函数- [json_array_insert()](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fjson1.html%23jarrayins)- [jsonb_array_insert()](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fjson1.html%23jarrayins)5.CLI 的改进- [对 .mode 命令](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fclimode.html)进行了重大改进。- 由于新增了 QRF 扩展结果格式得到了改进。例如在表格输出模式下数值现在默认右对齐。- 交互式 CLI 会话的默认输出模式现在使用 QRF 格式以 Unicode 方框字符构成的方框形式显示查询结果从而提高可读性。批量 CLI 会话为了兼容性仍使用旧版输出格式。- [dot-commands](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fcli.html%23dotcmd) 末尾的裸分号未加引号会被忽略可能存在不兼容问题- 修复 .testcase 和 .check 命令使其能够正常工作并在源代码树中包含的标准 SQLite 测试套件的脚本中使用这些命令。- 命令行参数中与 *.sql 或 *.txt 匹配且为非空文件名的参数将被读取并解释为 SQL 语句和 / 或[dot-commands](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fcli.html%23dotcmd) 的脚本。- 现在 .timer 命令的参数可以是 once即仅在下一个 SQL 语句上运行计时器。-.progressdot-command 新增的 --timeout S 选项会使 SQL 语句在 S 秒后中断。-.indexes 命令已更改现在 PATTERN 参数匹配索引名称而不是被索引表的名称从而使 PATTERN 参数真正发挥作用。此外.indexes 命令还添加了几个新选项。6.新的 C - language interfaces- [sqlite3_str_truncate()](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fc3ref%2Fstr_append.html)- [sqlite3_str_free()](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fc3ref%2Fstr_finish.html)- [sqlite3_carray_bind_v2()](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fc3ref%2Fcarray_bind.html)- 向 [sqlite3_prepare_v3()](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fc3ref%2Fprepare.html) 添加 [SQLITE_PREPARE_FROM_DDL](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fc3ref%2Fc_prepare_dont_log.html%23sqlitepreparefromddl) 选项允许[虚拟表](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fvtab.html)实现安全地准备从数据库模式派生的 SQL 语句。- 添加了[SQLITE_UTF8_ZT](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fc3ref%2Fc_any.html%23sqliteutf8zt) 常量可将其用作[sqlite3_result_text64()](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fc3ref%2Fresult_blob.html) 或 [sqlite3_bind_text64()](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fc3ref%2Fbind_blob.html) 的编码参数 以指示该值为 UTF - 8 编码并以零结尾。- [SQLITE_LIMIT_PARSER_DEPTH](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fc3ref%2Fc_limit_attached.html%23sqlitelimitparserdepth) 选项已添加到 [sqlite3_limit()](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fc3ref%2Flimit.html) 中。- [SQLITE_DBCONFIG_FP_DIGITS](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fc3ref%2Fc_dbconfig_defensive.html%23sqlitedbconfigfpdigits) 选项已添加到 [sqlite3_db_config() ](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fc3ref%2Fdb_config.html)中。7.Query planner 改进- 对于 EXCEPT、INTERSECT 和 UNION始终使用排序合并算法因为这几乎总是比使用哈希表更快。- 改进 star schema 下大型多路连接的连接顺序选择。- 增强 EXISTS - to - JOIN 优化使得插入的 JOIN 项不必位于最内层循环中只要 EXISTS - to - JOIN 循环的所有依赖项都在外层循环中即可。- 增强 omit - noop - join 优化使其能够省略不影响输出的连接链。- 允许使用 GROUP BY e1 ORDER BY e2 的查询其中 e1 和 e2 除了 ASC/DESC 排序顺序不同之外完全相同可以使用单个索引进行优化。- 允许虚拟表在查询结果集与 ORDER BY 子句不完全匹配的情况下优化 DISTINCT 语句。8.向会话扩展添加新接口允许应用程序将更改逐个添加到 sqlite3_changegroup 对象中。- [sqlite3changegroup_change_begin()](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fsession%2Fsqlite3changegroup_change_begin.html)- [sqlite3changegroup_change_blob()](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fsession%2Fsqlite3changegroup_change_blob.html)- [sqlite3changegroup_change_double()](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fsession%2Fsqlite3changegroup_change_double.html)- [sqlite3changegroup_change_int64()](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fsession%2Fsqlite3changegroup_change_int64.html)- [sqlite3changegroup_change_null()](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fsession%2Fsqlite3changegroup_change_null.html)- [sqlite3changegroup_change_text()](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fsession%2Fsqlite3changegroup_change_text.html)- [sqlite3changegroup_change_finish()](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fsession%2Fsqlite3changegroup_change_finish.html)- [sqlite3changegroup_config()](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fsession%2Fsqlite3changegroup_config.html)9.改进浮点数↔文本转换- 重新实现以提高性能。- 现在默认四舍五入[到 17 位有效数字](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Ffloatingpoint.html%23*fpdigits)而不是像之前所有版本那样保留 15 位。如果需要可以使用 [sqlite3_db_config](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fc3ref%2Fdb_config.html) ( [SQLITE_DBCONFIG_FP_DIGITS](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fc3ref%2Fc_dbconfig_defensive.html%23sqlitedbconfigfpdigits) ) API上文第 6g 项更改此设置。10.添加自修复功能添加了 [self - healing](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fstaleexpridx.html%23selfheal) 功能以解决[过期表达式索引](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Fstaleexpridx.html)问题。11.添加选项向[ sqlite3_rsync](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fsqlite.org%2Frsync.html) 添加 -p|--port 选项。12.停止支持停止对 [Windows RT ](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fen.wikipedia.org%2Fwiki%2FWindows_RT)的支持。13.JavaScript/WASM新增 opfs - wl VFS其功能与 opfs VFS 相同但使用 Web Locks 进行锁定因此比 opfs 自定义协议能提供更公平的 lock sharing。opfs - wl 需要使用 Atomics.waitAsync()因此比 opfs 要求更高的浏览器版本。3.53.3 版本特定更新1.修复问题修复了 3.53.0以及 3.53.1 和 3.53.2版本中主要由 AI 引起的问题。 详情可 [check - in timeline](https://sqlite.org/src/timeline?fromversion-3.53.0toversion-3.53.3to2branch-3.53yci)。哈希信息- SQLITE_SOURCE_ID: 2026 - 06 - 26 20:14:12 d4c0e51e4aeb96955b99185ab9cde75c339e2c29c3f3f12428d364a10d782c62- SHA3 - 256 for sqlite3.c: 28e484abdaa43630e34040ef6ed92be973a1ad54107803d8af5145b889c23ed7详情可查看