SQLite 3.50.3 发布

7/21/2025 11:32:58 PM
0

SQLite 是一个 C 语言库,实现了一个小型、快速、独立、高可靠性、全功能的 SQL 数据库引擎。SQLite 是世界上使用最多的数据库引擎。SQLite 的源代码属于公共领域,每个人都可以免费使用,用于任何目的。

SQLite 3.50.3 现已发布,更新内容如下:

添加 sqlite3_setlk_timeout() 接口,在支持阻塞锁的构建中为阻塞锁设置独立的超时,有别于 sqlite3_busy_timeout()。

SQLITE_DBCONFIG_ENABLE_COMMENTS 约束(在上一版本中添加)略有放宽,以便从现有 sqlite_schema 表读取 schema 时始终允许注释。注释仅在新 SQL 中被阻止。

新的 SQL 函数:

unistr()

unistr_quote()

对于内置 printf () (涵盖 sqlite3_mprintf() API 和 format () SQL 函数及类似函数) 中的 % Q 和 % q 转换,alternate-form-1 标志(“#”)会导致控制字符转换为适合 unistr() 的 backslash-escapes。

CLI 增强功能:

避免直接输出大多数控制字符。

.dump 命令的输出使用新的 unistr() SQL 函数对特殊字符进行编码,除非将 --escape 模式设置为关闭。

更好地格式化 ".schema --indent" 命令输出中的复杂部分索引。

sqlite3_rsync 的增强功能:

数据库处于 WAL 模式的要求已被删除。

增强了同步协议,当同步双方一开始非常相似时,可减少网络带宽的使用。

sqlite3_rsync 程序现在可以在 Mac 上运行,无需在远程端指定 sqlite3_rsync 可执行文件的完整路径名,只要将 sqlite3_rsync 可执行文件安装在以下目录之一中即可:$HOME/bin:/usr/local/bin:/opt/homebrew/bin

JSON 函数的变更:

错误修复:强制执行 JSON5 限制,“\0” 转义符后面不能跟数字。

错误修复:当 json_group_object(LABEL,VALUE) 的 LABEL 参数 为 NULL 时,将省略结果对象的该元素。

优化:如果 jsonb_set() 或 jsonb_replace () 函数对大型 JSONB 对象的内部进行了更改,它们会尽力保持 JSONB 对象的大小不变,并尽可能少地修改对象内部的字节。这有助于减少 I/O,因为它允许 SQLite 只写入包含更改字节的页面,而不是所有周围的页面。

改进了对 Cygwin、MinGW 和类似系统以及 Termux 的构建支持。

修复了文档和源代码注释中的拼写错误。

其他性能改进。

JavaScript/WASM:

修复 OPFS SAHPool VFS 中一个长期存在的文件名摘要计算错误。3.50.0+ 版本在该 VFS 中创建的数据库无法被旧版本的 VFS 读取,但 3.50.0 版本可以向后兼容旧版本创建的现有数据库。

详情可查看:https://sqlite.org/releaselog/3_50_3.html

关注“AppFuns”微信公众号,发现更多有趣的产品
全部评论(0)