SQLite 是一个 C 语言库,实现了一个小型、快速、独立、高可靠性、全功能的 SQL 数据库引擎。SQLite 是世界上使用最多的数据库引擎。SQLite 的源代码属于公共领域,每个人都可以免费使用,用于任何目的。
SQLite 3.40.1 现已正式发布,更新内容如下:
- 添加对将 SQLite 编译为 WASM 并在 Web 浏览器中运行的支持。注意:WASM build 及其 interfaces 被认为是 “beta”,如果需要,可能会进行微小的更改;预计会在下一个版本中最终确定 interface。
- 添加可能能够从损坏的数据库文件中恢复某些内容 recovery extension。
- Query planner enhancements:
- 识别超过 63 列的表的 covering indexe,其中超过 63 列的列用于查询和 / 或由索引引用。
- 在可行的情况下提取表达式索引中包含的表达式的值,而不是重新计算表达式。
- NOT NULL 和 IS NULL 运算符(及其等效项)避免从磁盘加载大字符串和 BLOB 值的内容。
- 避免具体化仅执行一次完整扫描的视图。
- 允许 flattening 作为聚合查询中 LEFT JOIN 右侧操作数的子查询。
- 添加了一个名为 sqlite3_filename 的新类型定义,用于表示数据库文件的名称。各种接口被修改为使用新的 typedef 而不是 “char*”。此接口更改应完全向后兼容,尽管它可能会在重建某些遗留应用程序时导致(无害的)编译器警告。
- 添加 sqlite3_value_encoding() 接口。
- 安全性增强:增强了 SQLITE_DBCONFIG_DEFENSIVE 以禁止更改 schema_version。schema_version 在 defensive mode 更多详情可查看:下变为只读。
- 对 PRAGMA integrity_check 语句的增强:
- 具有 TEXT 关联的 non-STRICT 表中的列不应包含数值。
- 具有 NUMERIC 亲和力的 non-STRICT 表中的列不应包含可以转换为数字的 TEXT 值。
- 验证 WITHOUT ROWID 表的行的顺序是否正确。
- 增强 VACUUM INTO 语句,使其支持 PRAGMA 同步设置。
- 增强 sqlite3_strglob() 和 sqlite3_strlike() API,以便它们能够为它们的字符串参数接受 NULL 指针,并且仍然生成合理的结果。
- 提供新的 SQLITE_MAX_ALLOCATION_SIZE 编译时选项以限制内存分配的大小。
- 将 SQLite 内置的伪随机数生成器 (PRNG) 使用的算法从 RC4 更改为 Chacha20。
- 允许两个或多个索引具有相同的名称,只要它们都在不同的模式中。
- 其他性能优化导致典型工作负载上使用的 CPU 周期减少约 1%。
- 修复 CLI 的 --safe command-line 选项,使其正确地禁止使用可能导致有害副作用的 SQL 函数,如 writefile ()。
- 修复 memsys5 备用内存分配器中潜在的无限循环。此错误是由版本 3.39.0 中的性能优化引入的。
- 各种其他修复。
更多详情可查看:https://www.sqlite.org/releaselog/3_40_1.html