Small. Fast. Reliable.
Choose any three.
SQLite版本3.20.1(2017-08-24)
版本3.20.0(2017-08-01)中的更改:
- 将sqlite3_errmsg()返回的错误消息文本更新为一些错误代码。
- 添加新的指针传递接口。
- 对某些扩展的向后不兼容更改,以利用新的指针传递接口提供的改进的安全性
:
- 扩展FTS5 →需要sqlite3_bind_pointer()查找fts5_api指针。
- carray(PTR,N) →要求sqlite3_bind_pointer()设置PTR参数。
- 记住(V,PTR)
→要求sqlite3_bind_pointer()设置PTR参数。
- 添加了SQLITE_STMT虚拟表扩展。
- 添加了COMPLETION扩展名-用于建议交互式用户界面的制表符完成。这是一个正在进行的工作。期望在将来的版本中进一步增强功能。
- 添加了UNION虚拟表扩展名。
- 内置的日期和时间函数得到了增强,因此它们可以用于CHECK约束,表达式的索引以及部分索引的WHERE子句中,前提是它们不使用“ now”,“ localtime”,或“ utc”关键字。 更多信息。
- 添加了带有额外“ prepFlags”参数的sqlite3_prepare_v3()和sqlite3_prepare16_v3()接口。
- 为sqlite3_prepare_v3()提供SQLITE_PREPARE_PERSISTENT标志,并使用它来限制FTS3,FTS5和
R-Tree扩展的后备内存滥用。
- 添加了PRAGMA secure_delete = FAST命令。当secure_delete设置为FAST时,只要不增加I / O量,旧内容就会被零覆盖。删除的内容可能仍会保留在空闲页面列表上,但将从所有b树页面中清除。
- 命令行外壳的增强功能:
- 使用COMPLETION扩展名添加对制表符补全的支持,用于读取行和行噪声。
- 添加“ .cd”命令。
- 增强“ .schema ”命令以显示所有连接的数据库的架构。
- 增强“ .tables ”,以便在名称不是“ main”以外的其他名称时显示所有附加的架构名称。
- “ .import ”命令将忽略初始的UTF-8 BOM。
- 在“ .dump ”命令中添加了“ --newlines”选项,以使U + 000a和U + 000d字符按原样输出,而不是使用replace()函数进行转义
。
- 查询计划器增强功能:
- 当为“或”扫描的每个“或”项生成单独的循环时,请将所有常量WHERE表达式移出循环,就像对顶级循环所做的那样。
- 查询计划程序检查绑定参数的值,以帮助确定部分索引是否可用。
- 在两个估计费用相同的计划之间进行选择时,应将选择偏向不使用分类器的计划。
- 最后评估涉及相关子查询的WHERE子句约束,希望它们从未被评估过。
- 如果子查询从虚拟表中读取数据,则不要在LEFT JOIN的RHS上对子查询使用扁平化优化,因为这样做会阻止查询计划程序
在子查询的结果上创建自动索引。查询。
- 为sqlite3_stmt_status()接口添加SQLITE_STMTSTATUS_REPREPARE,SQLITE_STMTSTATUS_RUN和SQLITE_STMTSTATUS_MEMUSED选项
。
- 提供PRAGMA函数,用于
PRAGMA完整性检查,PRAGMA quick_check和
PRAGMA foreign_key_check。
- 将-withoutnulls选项添加到TCL接口eval方法。
- 增强sqlite3_analyzer.exe实用程序,使其在btree页面上显示元数据的字节数。
- 该SQLITE_DBCONFIG_ENABLE_QPSG运行时间选项和
SQLITE_ENABLE_QPSG编译时选项来启用
查询规划的稳定性保证。另请参阅票证
892fc34f173e99d8
- 其他优化可将使用的CPU周期减少2%。
Bug修复:
- 对于使用扁平化优化的查询,请
修复sqlite3_column_name()的行为,以使结果与不使用该优化的其他查询以及PostgreSQL,MySQL和SQLServer一致。门票de3403bf5ae。
- 修复查询计划程序,以便
如果WHERE子句使用IS运算符,则它不知道在LEFT JOIN的右表上不使用自动索引。修复ce68383bf6aba。
- 确保查询计划程序知道拼合的LEFT JOIN的任何列
都可以为NULL,即使该列标记有“ NOT NULL”。修复票务
892fc34f173e99d8。
- 当在具有附加数据库的数据库连接上运行时,修复PRAGMA integrity_check中罕见的假阳性。门票
a4e06e75a9ab61a12
- 如果使用某些狡猾的CREATE TABLE声明,请修复导致断言错误的错误(由OSSFuzz发现)。门票
bc115541132dad136
版本3.20.1(2017-08-24)中的其他更改:
- 修复新的sqlite3_result_pointer()接口中的潜在内存泄漏。机票7486aa54b968e9b5。
散列:
- SQLITE_SOURCE_ID:“ 2017-08-24 16:21:36 8d3a7ea6c5690d6b7c3767558f4f01b511c55463e3f9e64506801fe9b74dce34”
- sqlite3.c的SHA3-256:93b1a6d69b48dc39697d1d3a1e4c30b55da0bdd2cad0c054462f91081832954a
一个SQLite的版本的完整列表,
在一个单一的页面和年代都还可以。
SQLite版本控制站点上提供了每个签入的详细历史记录
。