SQLite 3.47.0 发布,大量新功能来袭

SQLite 开发团队于 2024 年 10 月 21 日发布了 SQLite 3.47.0 版本,我们来了解一下新版本的改进功能。

触发器增强

SQLite 3.47.0 版本开始,触发器函数 RAISE() 的 error-message 参数可以支持任意 SQL 表达式。在此之前,该参数只能是字符串常量。

在这里插入图片描述

新版本的函数可以输出更加灵活有用的错误信息。

JSON 运算符

新版本的 JSON 运算符 ->> 支持从数组右侧开始计算元素下标,例如:

sqlite> select '[1,2,3,4]' ->> 1;
2
sqlite> select '[1,2,3,4]' ->> -1;
4

当表达式右侧参数为负数时,表示从右侧开始开始计算元素位置。

SQL 函数

新版本改进了聚合函数 group_concat(),当输入参数只有一行空字符串时返回空字符串而不是 NULL。

sqlite> CREATE TABLE t(cid int, val varchar(10));
sqlite>
sqlite> INSERT INTO t values(1, 'S'),(1, 'Q'),(1, 'L');
sqlite> INSERT INTO t values(2, '');
sqlite> INSERT INTO t values(3, null);
sqlite>
sqlite> .nullvalue 'None'
sqlite> SELECT group_concat(val)...> FROM t...> GROUP BY cid;
S,Q,LNone

新版本增强了表值函数 generate_series(),可以识别并且使用基于返回结果值的约束。

性能优化

SQLite 3.47.0 性能优化包括:

  • 优化了 IN 运算符中的子查询重用,尤其是存在谓词下推导致的 IN 运算符重用。
  • 针对 IN 运算符中的子查询,在可能带来优化性能的场景时使用布隆过滤器。
  • 对于类似“SELECT func(a) FROM tab GROUP BY 1”的查询,确保每行数据只调用一次 func() 函数。
  • 如果已知某个字段的选择性很低(通过分析该字段参与的其他索引获得),基于该字段的查询不会尝试创建自动索引(查询时索引)。
  • 针对涉及大量维度表的星型查询优化了查询计划。
  • 增加了排序子查询(order-by-subquery)优化功能,当查询最终的排序结果和子查询中的 ORDER BY 结果一致时,可以避免最终的排序操作。
  • 针对表达式索引,如果查询计划器可以确认不会使用表达式的子类型,indexed-subtype-expr 优化就会尽量使用作为索引一部分的表达式的数值,而不会基于表中的数据重新计算表达式。
  • 其他优化运行速度的代码调整。

命令行工具

SQLite 3.47.0 增加了一个试验性质的命令行工具 sqlite3_rsync,它可以用于实现 SQLite 主从复制。显然这是一个非常重要的功能,可以完成 SQLite 原生一致性复制,期待正式版本。

命令行工具默认增加了扩展聚合/窗口函数 median()、percentile()、percentile_cont() 以及 percentile_disc()。

命令行工具增加了一个元命令 .www,它等价于“.once -w”,可以将查询结果以 HTML 表格形式在浏览器中显示。

sqlite3_analyzer 工具可以获取 WITHOUT ROWID 数据表的详细统计信息。

当数据库比较工具 sqldiff 第二个参数指定的数据库不存在时,不再创建一个空白数据库。

其他改进

修复了非主流 unix-dotfile VFS 回滚热日志文件时存在的一个问题。

即使使用了没有注册的非标准分词器,也可以删除 FTS5 数据表。

通过 ALTER TABLE ADD COLUMN 语句新增非空且存在默认值的字段时,可以识别更新前的钩子程序。

增强了 sqlite_dbpage 虚拟表,INSERT 语句可以用于增加或者减少数据库文件大小。

SQLite 不在使用 long double 数据类型,因为支持该类型的硬件越来越少,而且一些编译工具链无法支持。

新版本支持的 TCL 接口升级为 TCL 9。虽然 TCL 8.5 以及更高版本可能正常工作,但是不能保证,建议升级到 TCL9。

新版本还修复了 JavaScript/WASM 相关的一些问题。同时还改进了 FTS5 相关功能。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/57861.shtml

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

相关文章

SQL注入之sqlilabs靶场21-30题

重点插入:html表 第二十一题 分析过程:(没有正确的账号密码是否能拿到Cookie?最后注释好像只能使用#,--好像无法注释) 查看源码 这里输入账号密码处被过滤了 但Cookie被base64编码了 可以从Cookie入手 …

vue2结合echarts实现数据排名列表——前端柱状进度条排行榜

写在前面,博主是个在北京打拼的码农,工作多年做过各类项目,最近心血来潮在这儿写点东西,欢迎大家多多指教。 数据排名列表——图表开发,动态柱状图表,排名图 UI 直接搜到类似在线代码(数据列表…

多线程——线程池

目录 前言 一、什么是线程池 1.引入线程池的原因 2.线程池的介绍 二、标准库中的线程池 1.构造方法 2.方法参数 (1)corePoolSize 与 maximumPoolSize (2)keepAliveTime 与 unit (3)workQueue&am…

Redis集群分片存储最佳实践,手把手搭建Redis集群

目录 一、Redis集群介绍1、设计目标2、为什么需要分片存储 二、官网集群方案三、搭建集群1、准备6个独立的Redis服务2、通过redis-cli工具创建集群3、检验集群4、集群重新分片5、故障转移测试6、集群扩容7、集群节点删除 四、集群关心的问题五、集群功能限制 一、Redis集群介绍…

蓝桥杯题目理解

1. 一维差分 1.1. 小蓝的操作 1.1.1. 题目解析: 这道题提到了对于“区间”进行操作,而差分数列就是对于区间进行操作的好方法。 观察差分数列: 给定数列:1 3 5 2 7 1 差分数列:1 2 2 -3 5 6 题目要求把原数组全部…

基于SpringBoot的高校体测管理系统设计与实现(源码+定制+开发)高校体测记录系统设计、高校体测信息管理平台、智能体测管理系统开发、高校体测记录系统设计

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

25届电信保研经验贴(自动化所)

个人背景 学校:中九 专业:电子信息工程 加权:92.89 绩点:3.91/4.0 rank:前五学期rank2/95,综合排名rank1(前六学期和综合排名出的晚,实际上只用到了前五学期) 科研…

海外云手机实现高效的海外社交媒体营销

随着全球化的深入发展,越来越多的中国企业走向国际市场,尤其是B2B外贸企业,海外社交媒体营销已成为其扩大市场的重要手段。在复杂多变的海外市场环境中,如何有效提高营销效率并降低运营风险,成为了众多企业的首要任务。…

路由器 相关知识

一、路由器是什么 参考:图解系列--路由器和它庞大的功能_路由功能-CSDN博客 路由器是指:主要负责 OSI参考模型中网络层的处理工作,并根据路由表信息在不同的网络 之间转发IP 分组的网络硬件(图3-1)。这里的网络一般是指IP 子网,…

Java基础(7)图书管理系统

目录 1.前言 2.正文 2.1思路 2.2Book包 2.3people包 2.4operation包 2.5主函数 3.小结 1.前言 哈喽大家好吖,今天来给前面Java基础的学习来一个基础的实战,做一个简单的图书管理系统,这里边综合利用了我们之前学习到的类和对象&…

爬虫ip技术未来发展趋势

各位朋友,大家好!有伙伴问爬虫技术未来会有更好的发展么,那今天小蝌蚪来跟大家聊聊爬虫技术未来的发展趋势分享一下行业咨询。 大家在日常工作和生活中,都希望事情能更省心、高效吧?未来的爬虫技术就朝着这个方向发展…

sheng的学习笔记-AI基础-正确率/召回率/F1指标/ROC曲线

AI目录:sheng的学习笔记-AI目录-CSDN博客 分类准确度问题 假设有一个癌症预测系统,输入体检信息,可以判断是否有癌症。如果癌症产生的概率只有0.1%,那么系统预测所有人都是健康,即可达到99.9%的准确率。 但显然这样的…

在Keil调试内存中的程序

在Keil调试内存中的程序 目录 在Keil调试内存中的程序1. 问题引出2. 测试工程3. 工程和Keil配置 实验环境: MCU:STM32F103C8T6 (Flash 64K RAM 20K)Keil:uVision V5.27.0.0仿真器:ST-Link 参考源码:https://download.c…

Redis 集群 总结

前言 相关系列 《Redis & 目录》(持续更新)《Redis & 集群 & 源码》(学习过程/多有漏误/仅作参考/不再更新)《Redis & 集群 & 总结》(学习总结/最新最准/持续更新)《Redis & 集群…

导出问题处理

问题描述 测试出来一个问题,使用地市的角色,导出数据然后超过了20w的数据,提示报错,我还以为是偶然的问题,然后是发现是普遍的问题,本地环境复现了,然后是,这个功能是三套角色&…

ESP32-S3学习笔记:常用的ESP-IDF命令总结

参考资料:1.esptool.py工具 2.idf.py工具 后续文章的讲解需要用到IDF命令行工具,当前文章简单介绍一下。 目录 打开命令行的小技巧 一、读flash信息 二、擦除flash 三、读flash数据 四、写flash数据 打开命令行的小技巧 大家安装完IDF开发包后…

React类组件详解

React类组件是通过创建class继承React.Component来创建的,是React中用于构建用户界面的重要部分。以下是对React类组件的详细解释: 一、定义与基本结构 类组件使用ES6的class语法定义,并继承自React.Component。它们具有更复杂的功能&#xf…

腾讯云 COS 多 AZ 存储保证服务高可用性

腾讯云 COS 的多 AZ 存储架构能够为用户数据提供数据中心级别的容灾能力。多 AZ 存储将客户数据分散存储在城市中多个不同的数据中心,当某个数据中心因为自然灾害、断电等极端情况导致整体故障时,多 AZ 存储架构依然可以为客户提供稳定可靠的存储服务。 …

表格编辑demo

<el-form :model"form" :rules"status ? rules : {}" ref"form" class"form-container" :inline"true"><el-table :data"tableData"><el-table-column label"计算公式"><templat…

ArcGIS001:ArcGIS10.2安装教程

摘要&#xff1a;本文详细介绍arcgis10.2的安装、破解、汉化过程。 一、软件下载 安装包链接&#xff1a;https://pan.baidu.com/s/1T3UJ7t_ELZ73TH2wGOcfpg?pwd08zk 提取码&#xff1a;08zk 二、安装NET Framework 3.5 双击打开控制面板&#xff0c;点击【卸载程序】&…