当前位置: 首页 > news >正文

SQLite 3.51.0发布,新功能解读

SQLite 开发团队于 2025 年 11 月 04 日发布了 SQLite 3.51.0 版本,距离 SQLite 3.50.0 的发布间隔了五个多月,也带来不少新功能和性能优化。

按照惯例,我们来解读一下新版本的改进功能。

JSON 函数

新版本增加了两个 JSON 函数:jsonb_each() 以及 jsonb_tree()。

它们的作用与已有的 json_each() 和 json_tree() 函数相同,区别在于当返回结构中 type 字段类型为 array 或者object 时,value 字段的类型是 JSONB。例如:

CLI 接口

命令行客户端程序(sqlite3)增强了以下功能:

  • .timer 指令的的精度提高到了微秒级,可以更加准确地显示 SQL 语句执行时间。
  • 增强了 box 和 column 输出格式下的宽字符显示。
  • .imposter 命令支持只读替代表,可以与 VACUUM 操作配合使用,而且不需要 --unsafe-testing 选项。
  • 命令行选项和 .open 命令增加了一个 --ifexists 参数,只有当数据库文件存在时才会打开数据库,不会创建新的空数据库。
  • .width 命令支持的最大列宽限制在 30000,避免恶意设置。

性能增强

  • 新版本对于只读事务的提交可以使用更少的 CPU 周期;
  • 可以更早检测到由于一个或者多个表数据为空而导致的 JOIN 查询返回为空的情况。
  • 如果标量子查询的结果不改变整个表达式的结果,可以省略子查询的计算。
  • 当窗口函数使用了 BETWEEN :x FOLLOWING AND :y FOLLOWING 子句并且 :y 的值较大时,查询速度会更快。

SQL 函数

对于内置的 printf() 以及 format() 函数,如果指定了 # 标志并且没有指定 + 标志,同时所有数字都是 0,那么对于负的浮点数,不会显示最前面的负号(-)。

这就意味着我们可以使用“%#f”或者类似格式避免输出“-0.00”这样的结果,而是显示 “0.00”。

API

  • 新增 PRAGMA wal_checkpoint=NOOP; 命令以及用于 sqlite3_wal_checkpoint_v2() 的 SQLITE_CHECKPOINT_NOOP 参数。
  • 添加 sqlite3_set_errmsg() 接口,提供扩展插件设置错误代码和信息。
  • 添加 sqlite3_db_status64() 接口,返回结果与已有的 sqlite3_db_status() 接口相同,但会返回 64 位结果。
  • sqlite3_db_status() 和 sqlite3_db_status64() 接口添加 SQLITE_DBSTATUS_TEMPBUF_SPILL 选项,记录由于内存不足写入磁盘临时文件的字节数量。
  • session 扩展中添加了 sqlite3changeset_apply_v3() 接口,可以将变更集应用到数据库。
  • TCL 接口为 eval 命令增加了一个 -asdict 标志,用于将行数据类型设置为字典而不是数组。同时,用户自定义函数现在可以中断(break)执行并返回 NULL 值。

源码调整

carray 和 percentile 扩展已经内置到合并代码中,不过默认处于禁用状态,需要别在编译时使用 -DSQLITE_ENABLE_CARRAY 以及 -DSQLITE_ENABLE_PERCENTILE 选项来激活。

sqlite3.h 头文件中新增了三个宏定义:

  • SQLITE_SCM_BRANCH,获取源代码的分支名称;
  • SQLITE_SCM_TAGS,源代码 check-in 的标签列表(空格分隔);
  • SQLITE_SCM_DATETIME,源代码 check-in 的 ISO-8601 日期和时间。

其他更新

  • 改进了 FTS5 生成的错误信息。
  • 对计算列强制执行 STRICT 类型。
  • 改进了对 VxWorks 平台的支持。
  • JavaScript/WASM 支持 64 位版本。官方标准构建版本仍然使用 32 位版本,只需要运行 make 就可以创建 64 位版本。
  • 增强了对于应用程序使用 close() 命令破坏 Posix 咨询锁导致数据库损坏的防御能力。

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

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

http://www.dtcms.com/a/573532.html

相关文章:

  • 贺州网站推广网站设计报价是多少
  • 网站信息备案变更 哪里做seo工具是什么意思
  • 【TiDB 插入性能优化实战:从 5 秒到毫秒级的跨越】
  • Kubernetes Recreate 部署策略完整实战指南
  • 企业级Agent智能体(智能小秘)之LangGraph智能体
  • 外卖开源系统源码设计思路:商家、骑手、用户三端一体化方案
  • MySQL数据库基础操作:
  • 有什么网站可以做商业网站需要多少钱
  • 早教网站模板哈尔滨门户网站制作哪家好
  • 从入门到精通:OpenAI Prompt Engineering 与 Prompt Caching 实战详解
  • HGDB单机修改IP地址或主机名(含Linux和windows )
  • 重庆公司章程网上查询平台网站建设优化话术
  • 神奇的工作室最新网站设计网站怎么设计
  • WordPress站点添加ssl证书东莞网站设计排行榜
  • Nestjs框架: 高可用微服务架构实践之动态gRPC客户端切换与异常处理优化
  • Git 拉取代码冲突操作
  • 【简易聊天室】使用 HTML、CSS、JavaScript 结合 WebSocket 技术实现
  • 外设模块学习(14)——雨滴传感器、土壤湿度传感器(STM32实现)
  • 小白银行测试初步了解(一)
  • 第14讲:HTTP网络请求 - Dio库的使用与封装
  • 西安市城乡建设管理局网站唐山专业网站建设公司
  • Flink集群部署以及作业提交模式详解
  • Windows系统Git的安装及在IDEA中的配置
  • Linux网络(二)——socket编程
  • 图书出版的幕后故事-《JMeter核心技术、性能测试与性能分析》背后不为人知的事
  • 最好的做网站公司有哪些河北网站推广优化
  • Voronoi 图及其在路径搜索中的应用
  • 网站模版自适应建设商务网站ppt
  • 舞台灯光透镜厂数字化:AI赋能光学检测与镀膜调控新范式
  • 买国外空间哪个网站好中国正式宣布出兵