SQLite 于 2018 年 9 月 15 日发布了 SQLite 3.25.0 版本。
该版本新增了以下功能:
- 支持窗口函数(Window Function);
- 增强了 ALTER TABLE 命令的功能:
a. 支持重命名表中的列名:ALTER TABLE table RENAME COLUMN oldname TO newname
。
b. 修复了重命名表的功能,同步更新引用了被修改表的触发器和视图定义。 - 改进查询优化器:
a. 避免加载聚合查询中不在聚合函数内,也不属于 GROUP BY 子句的那些列。
b. “IN 运算符提前退出”优化:当查询基于一个多列索引进行查找时,并且使用了运算符 IN 判断非前导列是否位于值列表中;如果没有数据行匹配第一个 IN 列表值,在进行下一个 IN 列表值判断之前,先确认是否存在数据行匹配 IN 列表中的其他值。如果不存在,直接退出运算符 IN 的处理。
c. 使用传递性尝试在 WHERE 子句中生成常量值。例如,将“a=99 AND b=a”转换为“a=99 AND b=99”。 - 为 unix VFS 中的每个 inode 创建一个单独的互斥锁,而不是之前的多个 inode 共享一个互斥锁,在多线程环境中能够提供略微更好的并发;
- 增强了 PRAGMA integrity_check 命令,改进了文件页面的空闲列表的问题检测;
- 将命令行程序的“.dump”命令输出的 infinity 值显示为 1e999;
- 增加了文件控制操作码 SQLITE_FCNTL_DATA_VERSION;
- 增加了 Geopoly 模块。