SQLite 是一个 C 语言库,实现了一个小型、快速、独立、高可靠性、全功能的 SQL 数据库引擎。SQLite 是世界上使用最多的数据库引擎。SQLite 的源代码属于公共领域,每个人都可以免费使用,用于任何目的。
SQLite 3.44.0 现已发布,更新内容如下:
- 聚合函数现在可以在其最后一个参数后包含 ORDER BY 子句。函数的参数按照指定的顺序进行处理。这对于 string_agg() 和 json_group_array() 等函数非常重要 。
- 添加对 concat() 和 concat_ws() 标量 SQL 函数的支持,与 PostgreSQL、SQLServer 和 MySQL 兼容。
- 添加对 string_agg() 聚合 SQL 函数的支持,兼容 PostgreSQL 和 SQLServer。
- strftime() SQL 函数上的新转换字母:%e %F %I %k %l %p %P %R %T %u
- 添加新的 C 语言 API: sqlite3_get_clientdata() 和 sqlite3_set_clientdata()。
- 现在,当运行 CREATE TABLE 语句本身时,会引发许多与 CREATE TABLE 相关的错误,而不是推迟到第一次实际使用表时。
- PRAGMA integrity_check 命令现在使用新的 xIntegrity 方法验证各种内置虚拟表中内容的一致性。这适用于 FTS3、FTS4、FTS5、RTREE 和 GEOPOLY 扩展。
- SQLITE_DBCONFIG_DEFENSIVE 设置现在可防止打开 PRAGMA writable_schema 。以前可以打开 writable_schema,但实际上不允许模式可写。现在则根本无法开启。
- 将内置 FTS3、FTS4、FTS5、RTREE 和 GEOPOLY 虚拟表标记为 SQLITE_VTAB_INNOCUOUS,以便它们可以在高安全性部署中的触发器内部使用。
- PRAGMA case_sensitive_like 语句已弃用,因为当模式包含 LIKE 运算符时使用它可能会导致 PRAGMAintegrity_check 报告数据库损坏。
- 现在,只要使用 Microsoft C 编译器构建 SQLite,就会默认启用 SQLITE_USE_SEH (结构化异常处理)。可以使用 -DSQLITE_USE_SEH=0 禁用它
- Query planner 优化:
- 在部分索引扫描中,如果 WHERE 子句暗示表列的常量值,则用该常量替换该表列的出现。这增加了部分索引作为覆盖索引的可能性。
- 禁用视图扫描优化(在版本 3.42.0 中添加- item 1c),因为它会导致多个性能下降。取而代之的是,将 DISTINCT 子查询的估计行数减少 8 倍。
- SQLite 现在执行运行时检测,检测底层硬件是否支持精度大于“double”的“long double”,并根据检测结果使用适当的浮点例程。
- Windows CLI 现在默认在支持 UTF-8 的平台上使用 UTF-8 进行输入和输出。--no-utf8 选项可用于禁用 UTF8 支持。
更多详情可查看:https://sqlite.org/changes.html