大家了解SQLite吗?其是个 C 实现的 SQL 数据库引擎,小型、快速、自包含、高可靠性和功能齐全。SQLite 嵌入在所有手机和大多数计算机中,也捆绑在为数众多的其它应用中,是世界上使用量最大的数据库引擎。作为 2020 年的第一个大版本,SQLite 3.31.0 已完成发布,该版本主要功能之一是对生成/计算列的支持。
具体更新内容如下:
添加对生成列的支持。
添加 sqlite3_hard_heap_limit64() 接口和相应的 PRAGMA hard_heap_limit 命令。
增强 function_list pragma 以显示每个函数的参数数量,函数的类型(标量,集合,窗口)以及函数属性标志 SQLITE_DETERMINISTIC,SQLITE_DIRECTONLY, SQLITE_INNOCUOUS 和/或 SQLITE_SUBTYPE。
将 aggregated mode 功能添加到 DBSTAT 虚拟表中。
将 SQLITE_OPEN_NOFOLLOW 选项添加到 sqlite3_open_v2() 可以防止 SQLite 打开符号链接。
为 JSON 函数路径参数添加了“#-N”数组符号。
添加了 SQLITE_DBCONFIG_TRUSTED_SCHEMA 连接设置,该设置也可以通过新的 Trusted_schema pragma 在编译时使用 -DSQLITE_TRUSTED_SCHEMA 编译时选项进行控制。
添加了对专用扩展有用的 API sqlite3_filename_database(),sqlite3_filename_journal() 和 sqlite3_filename_wal()。
添加 sqlite3_uri_key() 接口。
升级了 sqlite3_uri_parameter() 函数,以便除了数据库文件名之外,还可以与回滚日志或 WAL 文件名一起使用。
提供使用新属性SQLITE_INNOCUOUS或SQLITE_DIRECTONLY标记应用程序定义的 SQL 函数的功能。
向 sqlite3_vtab_config() 添加新动词,以便虚拟表的 xConnect 方法可以将虚拟表声明为 SQLITE_VTAB_INNOCUOUS 或 SQLITE_VTAB_DIRECTONLY。
对 sqlite3_interrupt()的响应速度更快。
添加了 uuid.c 扩展模块,该模块实现了用于处理 RFC-4122 UUID 的功能。
所述后备存储器分配器被增强以支持与在每个池中不同尺寸的分配两个单独的内存池。这样一来,更多的内存分配将被后备覆盖,同时将每个连接的堆内存使用量从 120KB 减少到 48KB。
legacy_file_format pragma 被停用,现在是 no-op。在其位置,提供了 sqlite3_db_config() 的 SQLITE_DBCONFIG_LEGACY_FILE_FORMAT 选项。停用legacy_file_format pragma 指示是因为它很少有用,并且在具有既具有生成列又具有降序索引的表的模式中,它与 VACUUM 不兼容。
更多更改详情可查阅发布说明。
此外,紧接 3.31.0 之后,SQLite 3.31.1 也已完成发布。其更新内容包括有:恢复仅供内部使用的 SQLite 数据结构的数据布局,以及修复了 sqlite3ext.h 头文件中的错字。