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

SQLite 3.48.0 发布,有哪些更新?

SQLite 开发团队于 2025 年 1 月 14 日发布了 SQLite 3.48.0 版本,我们来解读一下新版本的改进功能。

EXPLAIN QUERY PLAN

SQLite 使用 EXPLAIN QUERY PLAN 命令获取查询语句的执行计划,新版本改进了执行计划输出结果中的覆盖索引优化信息:

sqlite> create table t1(id int, name text, price int, desc text);
sqlite> create index idx_t1_np on t1(name, price);
sqlite> explain query plan select name, price from t1 where name = 'apple';
QUERY PLAN
`--SEARCH t1 USING COVERING INDEX idx_t1_np (name=?)

iif 函数

iif(X,Y,Z) 函数在 X 参数为真时返回 Y 的值,否则返回 Z 的值。

SQLite 3.48.0 支持忽略参数 Z,相当于指定了 NULL。例如:

sqlite> select iif(1=1, 'Y', 'N');
Y
sqlite> select iif(1=2, 'Y', 'N');
N
sqlite> select iif(1=2, 'Y');

sqlite> select if(1=2, 'Y', 'N');
N

命令行工具

SQLite 3.48.0 版本命令行工具增加了一个新的命令 .dbtotxt,用于导出数据库的十六进制内容:

sqlite> .dbtotxt
| size 12288 pagesize 4096 filename unk.db
| page 1 offset 4096
|      0: 53 51 4c 69 74 65 20 66 6f 72 6d 61 74 20 33 00   SQLite format 3.
|     16: 10 00 01 01 00 40 20 20 00 00 00 00 00 00 00 03   .....@  ........
|     32: 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 04   ................
|     48: 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00   ................
|     96: 00 00 00 00 0d 00 00 00 02 0f 74 00 0f b6 0f 74   ..........t....t
|   3952: 00 00 00 00 40 02 06 17 1f 11 01 5f 69 6e 64 65   ....@......_inde
|   3968: 78 69 64 78 5f 74 31 5f 6e 70 74 31 03 43 52 45   xidx_t1_npt1.CRE
|   3984: 41 54 45 20 49 4e 44 45 58 20 69 64 78 5f 74 31   ATE INDEX idx_t1
|   4000: 5f 6e 70 20 6f 6e 20 74 31 28 6e 61 6d 65 2c 20   _np on t1(name,
|   4016: 70 72 69 63 65 29 48 01 06 17 11 11 01 7d 74 61   price)H.......ta
|   4032: 62 6c 65 74 31 74 31 02 43 52 45 41 54 45 20 54   blet1t1.CREATE T
|   4048: 41 42 4c 45 20 74 31 28 69 64 20 69 6e 74 2c 20   ABLE t1(id int,
|   4064: 6e 61 6d 65 20 74 65 78 74 2c 20 70 72 69 63 65   name text, price
|   4080: 20 69 6e 74 2c 20 64 65 73 63 20 74 65 78 74 29    int, desc text)
| page 2 offset 8192
|      0: 0d 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00   ................
| page 3 offset 12288
|      0: 0a 00 00 00 00 10 00 00 00 00 00 00 00 00 00 00   ................
| end unk.db

这个命令通常用于 SQLite 内核开发和测试。

C 语言接口

新版本还更新了一些 C 语言 API,包括:

  • sqlite3_io_methods 对象的 xDeviceCharacteristics 方法增加了 SQLITE_IOCAP_SUBPAGE_READ 属性,支持非整页读取数据库文件;
  • sqlite3_prepare_v3 接口增加了 SQLITE_PREPARE_DONT_LOG 选项,可以避免 SQL 编译错误发送到全局错误日志文件,方便调试;
  • xFileControl 方法增加了 SQLITE_FCNTL_NULL_IO 操作码,用于设置 sqlite3_file 对象不再读写数据库文件。

其他更新

新版本重构了从源码构建 SQLite 运行库的配置脚本,修复了缺陷、改进了性能、增加了可维护性。

运行时参数 SQLITE_LIMIT_LENGTH 的最小值从 1 增加到 30。

扩展了 FTS5 辅助接口 xInstToken(),支持通过 insttoken 配置选项或者 SQL 函数 fts5_insttoken() 执行前缀搜索。

SQL 函数最大参数个数从 127 增加到 1000。

清除了 SQLITE_USER_AUTHENTICATION 相关代码。

修复了一些代码缺陷。


http://www.kler.cn/a/512484.html

相关文章:

  • 【深度学习项目】语义分割-FCN网络(原理、网络架构、基于Pytorch实现FCN网络)
  • Visual Studio Community 2022(VS2022)安装方法
  • 一文大白话讲清楚webpack基本使用——2——css相关loader的配置和使用
  • SSE 实践:用 Vue 和 Spring Boot 实现实时数据传输
  • Ubuntu22.04安装paddle GPU版本
  • 【系统分享01】Python+Vue电影推荐系统
  • 【K8S系列】在 K8S 中使用 Values 文件定制不同环境下的应用配置
  • 【深度学习】2.视觉问题与得分函数
  • JavaScript笔记APIs篇03——DOM节点Bom操作本地存储正则表达式
  • Ant Design Vue 的 a-input-number 组件限制最小值和最大值
  • c++常见设计模式之适配器模式
  • Ubuntu如何安装redis服务?
  • 【王树森搜素引擎技术】相关性03:文本匹配(TF-IDF、BM25、词距)
  • goodreads书籍评论爬取NRC Emotion Lexicon分析
  • Ae 表达式语言引用:Layer - 3D
  • excel 判断某个单元格的日期,如果超过3天,则在另一个单元格显示超过三天的公式
  • 【前端学习路线】前端入门 详细知识点学习路径(附学习资源)
  • VSCode下EIDE插件开发STM32
  • K8S中Pod控制器之DaemonSet(DS)控制器
  • Windows 服务器访问慢解决办法
  • 如何使用Spring Boot框架整合Redis:超详细案例教程
  • 日志(elk stack)基础语法学习,零基础学习
  • 【每日一题】LeetCode - 最长公共前缀
  • WPF 使用webView显示浏览器网页
  • Edu邮箱免费获取Photoshop等设计软件
  • 第七篇:vue3 计算属性:computed