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.mzph.cn/bicheng/68383.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA-二叉树的四种遍历

目录 一、二叉树的存储 二、二叉树遍历的概念 1.前序遍历 2.中序遍历 3.后序遍历 4.层序遍历 三、概念面试题 四、代码实现 1.前序遍历 2.中序遍历 3.后序遍历 4.层序遍历 五、其他写法(非递归) 1.非递归前序遍历 2.非递归中序遍历 3.非递归后续遍历 一、二叉树…

Spring FactoryBean到仿照mybatis @Mapper的实现

目录 FactoryBean原理FactoryBean例子org.springframework.beans.factory.support.AbstractBeanFactory#doGetBean mybatis mapper bean的手动实现思考复习下Jdbc传统sql查询做法Mapper接口实现思路复习批量注册beanDefinition: ConfigurationClassPostProcessor自定义实现Mapp…

【Go】Go数据类型详解—数组与切片

1. 前言 今天需要学习的是Go语言当中的数组与切片数据类型。很多编程语言当中都有数组这样的数据类型,Go当中的切片类型本质上也是对 数组的引用。但是在了解如何定义使用数组与切片之前,我们需要思考为什么要引入数组这样的数据结构。 1.1 为什么需要…

flutter Get GetMiddleware 中间件不起作用问题

当使用 get: ^5.0.0-release-candidate-9.2.1最新版本时,中间件GetMiddleware各种教程都是让我们在redirect中实现,比如: overrideRouteSettings? redirect(String? route) {return RouteSettings(name: "/companyAuthIndexPage"…

【Idea启动项目报错NegativeArraySizeException】

项目场景: Idea启动项目报错(打包不报错),项目在服务器部署运行没有问题,尝试了重启idea、重启电脑、maven clean/install 都不行 maven-resources-production:sample: java.lang.NegativeArraySizeException: -5833…

微信小程序:播放音频

在小程序开发中,音频播放是一个重要的功能。本文将详细介绍小程序音频播放的相关知识点,帮助开发者更好地掌握小程序音频播放的实现方法。 一、小程序音频播放的基本流程 在小程序中,音频播放的基本流程如下: 获取音频数据&#…

运行fastGPT 第四步 配置ONE API 添加模型

上次已经装好了所有的依赖和程序。 下面在网页中配置One API ,这个是大模型的接口。配置好了之后,就可以配置fastGPT了。 打开 OneAPI 页面 添加模型 这里要添加具体的付费模型的API接口填进来。 可以通过ip:3001访问OneAPI后台,**默认账号…

RocketMQ 学习笔记01

一、MQ简介 1. 什么是MQ? MQ(Message Queue,消息队列) 是一种在分布式系统中用于实现进程间通信和数据传输的中间件。它通过在不同进程或应用程序之间传递消息,实现数据的异步处理、解耦和削峰填谷等功能。MQ广泛应用…

梁山派入门指南3——串口使用详解,包括串口发送数据、重定向、中断接收不定长数据、DMA+串口接收不定长数据,以及对应的bsp文件和使用示例

梁山派入门指南3——串口使用详解,包括串口发送数据、重定向、中断接收不定长数据、DMA串口接收不定长数据,以及对应的bsp文件和使用示例 1. 串口发送数据1.1 串口简介1.2 梁山派上的串口开发1.3 bsp_uart文件(只发送不接收,兼容串…

Linux和Docker常用终端命令:保姆级图文详解

文章目录 前言1、Docker 常用命令1.1、镜像管理1.2、容器管理1.3、网络管理1.4、数据卷管理1.5、监控和性能管理 2、Linux 常用命令分类2.1、文件和目录管理2.2、用户管理2.3、系统监控和性能2.4、软件包管理2.5、网络管理 前言 亲爱的家人们,创作很不容易&#xf…

智能科技与共情能力加持,哈曼重新定义驾乘体验

2025年1月6日,拉斯维加斯,2025年国际消费电子展——想象一下,当您步入一辆汽车,它不仅能响应您的指令,更能理解您的需求、适应您的偏好,并为您创造一个独特且专属的交互环境。作为汽车科技领域的知名企业和…

关于2025年智能化招聘管理系统平台发展趋势

2025年,招聘管理领域正站在变革的十字路口,全新的技术浪潮与不断变化的职场生态相互碰撞,促使招聘管理系统成为重塑企业人才战略的关键力量。智能化招聘管理系统平台在这一背景下迅速崛起,其发展趋势不仅影响企业的招聘效率与质量…

机器视觉5-全连接神经网络

机器视觉5-全连接神经网络1 图像表示多层感知器全连接神经网络一、两层全连接网络表达式二、三层全连接网络表达式三、关于非线性操作的说明四、全连接神经网络的映射原理 全连接神经网络的权值一、线性分类器二、两层全连接网络三、总结 全连接神经网络线性不可分全连接神经网…

解锁转型密码:不同方向的技能与素质修炼手册

前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 解锁…

ChatGPT提示词合集(国内大模型可参考使用)

行为迅速的Linux终端我想让你充当 linux 终端。我将输入命令,您将回复终端应显示的内容。我希望您只在一个唯一的代码块内回复终端输出,而不是其他任何内容。不要写解释。除非我指示您这样做,否则不要键入命令。当我需要用英语告诉你一些事情…

第三十八章 Spring之假如让你来写MVC——适配器篇

Spring源码阅读目录 第一部分——IOC篇 第一章 Spring之最熟悉的陌生人——IOC 第二章 Spring之假如让你来写IOC容器——加载资源篇 第三章 Spring之假如让你来写IOC容器——解析配置文件篇 第四章 Spring之假如让你来写IOC容器——XML配置文件篇 第五章 Spring之假如让你来写…

深度剖析RabbitMQ:从基础组件到管理页面详解

文章目录 一、简介二、Overview2.1 Overview->Totals2.2 Overview->Nodesbroker的属性2.3 Overview->Churn statistics2.4 Overview->Ports and contexts2.5 Overview->Export definitions2.6 Overview->Import definitions 三、Connections连接的属性 四、C…

使用 Python 编写一个简单的聊天机器人

💖 欢迎来到我的博客! 非常高兴能在这里与您相遇。在这里,您不仅能获得有趣的技术分享,还能感受到轻松愉快的氛围。无论您是编程新手,还是资深开发者,都能在这里找到属于您的知识宝藏,学习和成长…

Unity 自定义批量打包工具

打包配置项 using UnityEngine; using System.Collections.Generic;namespace MYTOOL.Build {[System.Flags]public enum VersionOptions{None 0,Major 1,Minor 4,Build 8,Revision 0x10,}/// <summary>/// 批量打包配置文件/// </summary>[CreateAssetMenu]…

JAVA实现五子棋小游戏(附源码)

文章目录 一、设计来源捡金币闯关小游戏讲解1.1 主界面1.2 黑棋胜利界面1.3 白棋胜利界面 二、效果和源码2.1 动态效果2.2 源代码 源码下载更多优质源码分享 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/145161039 JA…