允许 RAISE 函数的第二个参数中的任意表达式。
如果 ->> 运算符的 RHS 为负数,则访问从右侧计数的数组元素。
修复了在很少使用的 unix-dotfile VFS 中回滚热日志文件时出现的问题。
FTS5 表格现在可以被删除,即使它们使用非标准的分词器,即 尚未注册。
修复 group_concat() 聚合函数,使其返回空字符串 如果它接收到一个空字符串的 input 值,则不是 NULL。
增强 generate_series() 表值函数,使其能够 识别并使用对其 output 值的约束。
preupdate 钩子现在可以识别通过 ALTER TABLE ADD COLUMN 添加的列 具有非 null 默认值。
性能优化:
- 改进了与 IN 运算符关联的子查询的重用,尤其是在 由于谓词下推,IN 运算符已重复。
- 对 IN 运算符右侧的子查询使用 Bloom 筛选条件,以防这似乎可能会提高性能。
- 确保仅执行类似 “SELECT func(a) FROM tab GROUP BY 1” 的查询 每行调用一次 func() 函数。
- 不会尝试在已知的列上创建自动索引 设置为非选择性,因为它用于已分析的其他索引。
- 对查询计划程序的调整,以便它为 具有大量维度表的 star 查询。
- 添加 “order-by-subquery” 优化,旨在禁用排序操作 在外部查询中,如果所需的顺序是由于 ORDER BY 自然获得的 子句。
- “indexed-subtype-expr” 优化力求使用 是索引的一部分,而不是根据表值重新计算表达式, 只要 Query Planner 可以证明表达式的子类型永远不会被使用。
- 其他编码调整,以加快运行速度。
SQLite 相关命令行程序的增强功能:
- 添加实验性 sqlite3_rsync 程序。
- 添加扩展函数 median()、percentile()、percentile_cont()、 和 percentile_disc() 添加到 CLI。
- 将 .www dot-command 添加到 CLI。
- sqlite3_analyzer 实用程序现在提供统计数据的细分 对于 WITHOUT ROWID 表。
- sqldiff 实用程序避免在第二个参数 不存在。
增强 sqlite_dbpage 表值函数,以便可以使用 INSERT 以增加或减小数据库文件的大小。
SQLite 不再使用“long double”数据类型,因为硬件支持 因为 long double 变得越来越不常见,而 long double 为 一些编译器工具链。相反,当需要扩展精度时,SQLite 使用 Dekker 的算法。
SQLite 的 TCL 接口支持 TCL9。一切可能仍然有效 TCL 8.5 及更高版本,但不能保证。鼓励用户升级 到 TCL9。
JavaScript/WASM 的:
- 修复 JavaScript“opfs”VFS 中导致损坏的错误。
- 更正了 “opfs” VFS 的 “mode=ro” 处理。
- 解决几个特定于浏览器的 OPFS 怪癖。
FTS5 变化:
- 添加 fts5_tokenizer_v2 API 和 locale=1 选项,用于创建自定义 可能利用它们的区域设置感知分词器和FTS5表。
- 添加 contentless_unindexed=1 选项,用于创建无内容的 fts5 表格 ,它将任何 UNINDEXED 列的值持久存储在数据库中。
- 允许删除FTS5表,即使它使用自定义分词器,其 implementation 不可用。
散 列:
SQLITE_SOURCE_ID:2024-10-21 16:30:22 03a9703e27c44437c39363d0baf82db4ebc94538a0f28411c85dda156f82636e
sqlite3.c 的 SHA3-256:bcec3a4fbc97e973547924677332996ef64e06a6d10d22e2c2344f447536cc29