SQLite Release 3.52.0发布,有哪些新功能?

SQLite 开发团队于 2026 年 03 月 06 日发布了 SQLite 3.52.0 版本,带来了以下新功能和性能优化增强。

  1. 修复了一个导致 WAL 重置时数据库损坏的 bug。
  2. 增强 ALTER TABLE 语句,支持添加和删除 NOT NULL 以及 CHECK 约束。
  3. 新增查询结果格式化库(QRF) ,用于格式化 SQL 查询结果,使其在等宽字体屏幕上更易于人类阅读;TCL 接口中添加了 format 方法,使得 TCL 可以调用 QRF;命令行接口(CLI)中使用 QRF 进行结果格式化,从而提升了显示效果。
  4. 新增内置 SQL 函数:json_array_insert()和jsonb_array_insert(),用于在 JSON 数据中插入元素。
  5. CLI 的改造与增强 :
    • .mode 命令得到大幅增强。
    • 基于 QRF 扩展改进了结果格式化。例如,在表格输出模式下,数值现在默认右对齐。
    • 交互式 CLI 会话的默认输出模式使用 QRF,利用 Unicode 制表符绘制方框来显示查询结果,提高了可读性。批处理 CLI 会话为保持兼容性,仍使用旧式输出格式。
    • 点命令末尾未加引号的分号会被忽略,这是一个潜在的不兼容变更。
    • 修复了 .testcase 和 .check 命令使其真正生效,并且在作为源代码一部分的标准 SQLite 测试套件脚本中使用了这些命令。
    • 匹配 *.sql 或 *.txt 模式且为非空文件名的命令行参数,现在会被读取并解释为包含 SQL 语句和/或点命令的脚本。
    • .timer 命令现在可以接受 once 参数,表示仅对下一条 SQL 语句运行计时功能。
    • .progress 命令新增了 --timeout S 选项,可在 SQL 语句执行超过 S 秒后将其中断。
  6. 新增 C 语言接口 :
    • sqlite3_str_truncate()
    • sqlite3_str_free()
    • sqlite3_carray_bind_v2()
    • sqlite3_prepare_v3() 增加了 SQLITE_PREPARE_FROM_DDL 选项,允许虚拟表实现可以安全地从数据库模式生成 SQL 语句。
    • 增加了 SQLITE_UTF8_ZT 常量,可以作为 sqlite3_result_text64() 或 sqlite3_bind_text64() 的编码参数,表明该值采用 UTF-8 编码并且以零结尾。
    • sqlite3_limit() 增加了 SQLITE_LIMIT_PARSER_DEPTH 选项。
    • sqlite3_db_config() 增加了 SQLITE_DBCONFIG_FP_DIGITS 选项(参见下文第 8 项)。
  7. 查询计划器的改进 :
    • 对于 EXCEPT、INTERSECT 以及 UNION 操作,始终使用排序合并算法,因为这在大多数情况下比使用哈希表更快。
    • 改进了星型模式中大規模多路连接的连接顺序选择。
    • 增强了 EXISTS-JOIN 优化,只要 EXISTS-JOIN 循环的所有依赖都在外层循环中,插入的 JOIN 项就不再强制要求在最内层循环。
    • 增强了(omit-noop-join)优化,使其能够忽略不影响输出结果的连接操作。
    • 允许对使用 GROUP BY e1 ORDER BY e2(其中 e1 和 e2 除了 ASC/DESC 排序方向外完全相同)的查询使用单个索引进行优化。
    • 允许虚拟表在查询结果集不完全匹配 ORDER BY 子句的情况下对 DISTINCT 进行优化。
  8. 浮点数与文本之间转换的改进 :重新实现了转换逻辑以提升性能;默认情况下,四舍五入保留 17 位有效数字,此前所有版本均为 15 位。如有需要,可以使用 sqlite3_db_config(SQLITE_DBCONFIG_FP_DIGITS) API(上文第 6 项)更改此设置。
  9. TEMP 触发器的主体现在可以修改和/或查询主数据库模式中的表。
  10. 增强 VACUUM INTO 命令 :如果目标文件使用 URI 文件名,并且该文件名包含 reserve=N(N 在 0 到 255 之间)查询参数,则生成的数据库副本保留数量将设置为 N。
  11. sqlite3_rsync 工具增加了 -p|--port 选项。
  12. 停止支持 Windows RT。

完整的发行说明可以参考官方文档:

https://www.sqlite.org/releaselog/3_52_0.html

相关推荐
Web3&Basketball2 小时前
实测Gemini4Argon:ERQA 87%登顶长程任务榜
数据库·python·大模型·多模态·gemini·长上下文·推理优化
xiaogai_gai2 小时前
金蝶收料通知单查询策略实战教程:从源系统拉取到中间层落地的完整路径
java·前端·数据库
注塑机数据采集联网2 小时前
注塑机数据采集网关对接MES系统数字化技术方案
大数据·网络·数据库·物联网·数据挖掘·数据分析
像风一样自由20202 小时前
56.实战PostgreSQL-pgvector-FastAPI构建轻量级RAG
数据库·人工智能·postgresql·大模型·fastapi·智能体
User_芊芊君子3 小时前
KFS异构同步_260条链路DDL自动转换解析
数据库·ai·大模型
xiancai_xianyu3 小时前
Text2SQL落地生产库前,SQL要过哪三道闸
前端·数据库·sql·sql注入·text2sql·ai agent开发·企业级ai框架
Zucker n3 小时前
一款适合研究生科研工作安排的日历
linux·数据库·python
Sharewinfo_BJ4 小时前
Power BI沿袭视图详解:从看懂链路到做影响分析
数据库·数据分析·智信bi·上北智信
l1t4 小时前
DeepSeek总结的 DuckDB 2.0 中更简洁的变量语法
数据库·sql
sunshine8855 小时前
集成电路(IC)设计与封测行业10大常用ERP系统分析
大数据·数据库·人工智能