SQLite 数据库的版本更新历史摘要,覆盖了从 2025 年 11 月到 2026 年 3 月的多个主要版本。以下是核心内容总结:
一、2026-03-01 (3.52.0) -- 重要功能更新
- ALTER TABLE 增强 :支持添加/删除
NOT NULL和CHECK约束。 - 新编译选项 :
SQLITE_PREPARE_FROM_DDL,允许虚拟表安全地准备基于数据库模式派生的 SQL 语句。 - 查询结果格式化库 (QRF) :
- 新增 QRF 库,用于在等宽字体屏幕上格式化查询结果,提升可读性。
- TCL 接口新增
format方法以支持 QRF。 - CLI 工具默认在交互会话中使用 QRF,以 Unicode 框线字符展示表格,批处理模式仍保持兼容性。
- CLI 工具改进 :
- 增强
.mode命令。 - 忽略点命令末尾的未引号分号(可能引入不兼容性)。
- 修复
.testcase和.check命令,并用于标准测试套件。 - 支持将
*.sql或*.txt文件作为命令行参数直接执行。
- 增强
- 新 C 语言接口 :
sqlite3_str_truncate()、sqlite3_str_free()SQLITE_LIMIT_PARSER_DEPTH
二、2026-01-09 (3.51.2) -- 错误修复
- 修复了 3.51.0 中引入的 POSIX 锁检测逻辑的死锁问题。
- 修复了 EXISTS 转 JOIN 优化 导致的多个问题。
- 其他小规模错误修复。
三、2025-11-28 (3.51.1) -- 错误修复
- 修复了 3.51.0 中 嵌套 EXISTS 查询因优化导致结果错误的问题。
- 修复了
fts5vocab虚拟表中的一个潜在 bug。
四、2025-11-04 (3.51.0) -- 功能与性能增强
- 新宏定义 :
SQLITE_SCM_BRANCH、SQLITE_SCM_TAGS、SQLITE_SCM_DATETIME,用于获取源代码分支、标签和提交时间信息。 - JSON 扩展 :新增
jsonb_each()和jsonb_tree()函数,返回 JSONB 格式的value列。 - 内置扩展 :
carray和percentile扩展现已集成到代码库中,需编译时启用。 - TCL 接口增强 :
eval命令新增-asdict标志,以字典形式返回行数据。- 用户定义函数可返回 SQL NULL。
- CLI 改进 :
- 提高
.timer精度至微秒。 - 改进
box和column模式对宽字符的处理。 - 新增
.imposter命令(支持 VACUUM 的只读虚拟表)。 - 新增
--ifexists选项。
- 提高
- 性能优化 :
- 减少读事务提交的 CPU 开销。
- 提前检测因空表导致无结果的 JOIN。
- 避免不必要的标量子查询计算。
- 优化
BETWEEN ... FOLLOWING窗口函数性能。
- 新 API 与功能 :
sqlite3_set_errmsg()(供扩展使用)。sqlite3_db_status64()(64 位结果版本)。SQLITE_DBSTATUS_TEMPBUF_SPILL状态选项。sqlite3changeset_apply_v3()(session 扩展)。
- 其他改进 :
- 改进
printf()/format()对负浮点数的显示逻辑。 - 增强 FTS5 错误信息。
- 对计算列强制 STRICT 类型。
- 提升对 VxWorks 和 64 位 WASM 的支持。
- 增强对异常 POSIX 锁破坏的防护。
- 改进
总结
SQLite 在近期版本中持续强化 数据完整性、查询性能、开发工具链和跨平台支持 。3.52.0 引入的 QRF 格式化输出 和 ALTER TABLE 增强 是面向开发者和运维的重要改进,而 3.51.x 系列则着重于 稳定性修复与性能调优。整体版本迭代体现了 SQLite 在保持轻量级的同时,不断提升用户体验与系统鲁棒性的发展方向。