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