SQLite 3.38.0 发布

SQLite 3.38.0 现已发布。SQLite 是一个 C 实现的 SQL 数据库引擎,它的特点是小型、快速、自包含、高可靠性和功能齐全。SQLite 嵌入在所有手机和大多数计算机中,也捆绑在为数众多的其它应用中,是世界上使用量最大的数据库引擎。

主要变化:

  • 添加了 -> 和 ->> 运算符以便于处理 JSON。新的运算符与 MySQL 和 PostgreSQL 兼容。
  • JSON 函数现在是内置的。不再需要使用 -DSQLITE_ENABLE_JSON1 编译时选项来启用 JSON 支持。默认情况下启用 JSON。使用新的 -DSQLITE_OMIT_JSON 编译时选项禁用 JSON 接口。
  • 日期和时间功能的增强:
    • 添加了 unixepoch() 函数。
    • 添加了 auto 修饰符和 julianday 修饰符。
  • 将 printf() SQL 函数重命名为 format() 以获得更好的兼容性。保留原始 printf() 名称作为别名以实现向后兼容性。
  • 添加了 sqlite3_error_offset() 接口,有时可以帮助将 SQL error 定位到输入 SQL 文本中的特定字符,以便应用程序可以提供更好的错误消息。
  • 增强了 virtual tables 的接口如下:
    • 添加了 sqlite3_vtab_distinct() 接口。
    • 添加了 sqlite3_vtab_rhs_value() 接口。
    • 添加了新的 operator 类型 SQLITE_INDEX_CONSTRAINT_LIMIT 和 SQLITE_INDEX_CONSTRAINT_OFFSET。
    • 添加了 sqlite3_vtab_in() 接口(及相关接口)以使 virtual table 能够一次处理所有 IN operator 约束,而不是单独处理 IN operator 右侧的每个值。
  • CLI enhancement:
    • Columnar output modes 得到增强,可以正确处理嵌入在文本中的制表符和换行符。
    • 在 Columnar output modes 中添加了“--wrap N”、“--wordwrap on”和“--quote”等选项。
    • 添加了 .mode qbox 别名。
    • .import 命令自动消除列名的歧义。
    • 使用新的 sqlite3_error_offset() 接口提供更好的错误消息。
  • Query planner enhancements:
    • 使用 Bloom filter 来加速大型分析查询。
    • 使用 balanced merge tree 来评估具有 ORDER BY 子句的 UNION 或 UNION ALL 复合 SELECT 语句。
  • ALTER TABLE 语句更改为静默忽略 sqlite_schema 表中在时不解析的条目。改变了 ALTER TABLE 语句,当 PRAGMA writable_schema=ON 时,静默忽略 sqlite_schema table 中没有解析的条目。