SQLite 是一个 C 实现的 SQL 数据库引擎,它的特点是小型、快速、自包含、高可靠性和功能齐全。SQLite 嵌入在所有手机和大多数计算机中,也捆绑在为数众多的其它应用中,是世界上使用量最大的数据库引擎。作为 2020 年的第一个大版本,SQLite 3.31.0 已完成发布,该版本主要功能之一是对生成/计算列的支持。具体更新内容如下:
 
添加对生成列的支持。
添加sqlite3_hard_heap_limit64()接口和相应的PRAGMA hard_heap_limit命令。
 
增强function_list杂注以显示每个函数的参数数量,函数的类型(标量,集合,窗口)以及函数属性标志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编译指示已禁用,现在为无操作状态。取而代之的是,提供了sqlite3_db_config()的SQLITE_DBCONFIG_LEGACY_FILE_FORMAT选项。 legacy_file_format杂注指示被禁用,因为它很少有用,并且在具有既包含生成列又包含降序索引的表的模式中,它与VACUUM不兼容。
 
更多更改详情可查阅发布说明。
此外,紧接 3.31.0 之后,SQLite 3.31.1 也已完成发布。其更新内容包括有:恢复仅供内部使用的 SQLite 数据结构的数据布局,以及修复了 sqlite3ext.h 头文件中的错字。