Small. Fast. Reliable.
Choose any three.

SQLite版本3.20.1(2017-08-24)

版本3.20.0(2017-08-01)中的更改:

  1. sqlite3_errmsg()返回的错误消息文本更新为一些错误代码。
  2. 添加新的指针传递接口
  3. 对某些扩展的向后不兼容更改,以利用新的指针传递接口提供的改进的安全性 :
    1. 扩展FTS5 →需要sqlite3_bind_pointer()查找fts5_api指针。
    2. carray(PTR,N) →要求sqlite3_bind_pointer()设置PTR参数。
    3. 记住(V,PTR) →要求sqlite3_bind_pointer()设置PTR参数。
  4. 添加了SQLITE_STMT虚拟表扩展。
  5. 添加了COMPLETION扩展名-用于建议交互式用户界面的制表符完成。这是一个正在进行的工作。期望在将来的版本中进一步增强功能。
  6. 添加了UNION虚拟表扩展名。
  7. 内置的日期和时间函数得到了增强,因此它们可以用于CHECK约束表达式的索引以及部分索引的WHERE子句中,前提是它们不使用“ now”,“ localtime”,或“ utc”关键字。 更多信息
  8. 添加了带有额外“ prepFlags”参数的sqlite3_prepare_v3()sqlite3_prepare16_v3()接口。
  9. sqlite3_prepare_v3()提供SQLITE_PREPARE_PERSISTENT标志,并使用它来限制FTS3FTS5R-Tree扩展的后备内存滥用。
  10. 添加了PRAGMA secure_delete = FAST命令。当secure_delete设置为FAST时,只要不增加I / O量,旧内容就会被零覆盖。删除的内容可能仍会保留在空闲页面列表上,但将从所有b树页面中清除。
  11. 命令行外壳的增强功能:
    1. 使用COMPLETION扩展名添加对制表符补全的支持,用于读取行和行噪声。
    2. 添加“ .cd”命令。
    3. 增强“ .schema ”命令以显示所有连接的数据库的架构。
    4. 增强“ .tables ”,以便在名称不是“ main”以外的其他名称时显示所有附加的架构名称。
    5. .import ”命令将忽略初始的UTF-8 BOM。
    6. 在“ .dump ”命令中添加了“ --newlines”选项,以使U + 000a和U + 000d字符按原样输出,而不是使用replace()函数进行转义 。
  12. 查询计划器增强功能:
    1. 当为“或”扫描的每个“或”项生成单独的循环时,请将所有常量WHERE表达式移出循环,就像对顶级循环所做的那样。
    2. 查询计划程序检查绑定参数的值,以帮助确定部分索引是否可用。
    3. 在两个估计费用相同的计划之间进行选择时,应将选择偏向不使用分类器的计划。
    4. 最后评估涉及相关子查询的WHERE子句约束,希望它们从未被评估过。
    5. 如果子查询从虚拟表中读取数据,则不要在LEFT JOIN的RHS上对子查询使用扁平化优化,因为这样做会阻止查询计划程序 在子查询的结果上创建自动索引。查询。
  13. sqlite3_stmt_status()接口添加SQLITE_STMTSTATUS_REPREPARESQLITE_STMTSTATUS_RUNSQLITE_STMTSTATUS_MEMUSED选项 。
  14. 提供PRAGMA函数,用于 PRAGMA完整性检查PRAGMA quick_checkPRAGMA foreign_key_check
  15. 将-withoutnulls选项添加到TCL接口eval方法
  16. 增强sqlite3_analyzer.exe实用程序,使其在btree页面上显示元数据的字节数。
  17. SQLITE_DBCONFIG_ENABLE_QPSG运行时间选项和 SQLITE_ENABLE_QPSG编译时选项来启用 查询规划的稳定性保证。另请参阅票证 892fc34f173e99d8
  18. 其他优化可将使用的CPU周期减少2%。

    Bug修复:

  19. 对于使用扁平化优化的查询,请 修复sqlite3_column_name()的行为,以使结果与不使用该优化的其他查询以及PostgreSQL,MySQL和SQLServer一致。门票de3403bf5ae
  20. 修复查询计划程序,以便 如果WHERE子句使用IS运算符,则它不知道在LEFT JOIN的右表上不使用自动索引。修复ce68383bf6aba
  21. 确保查询计划程序知道拼合的LEFT JOIN的任何列 都可以为NULL,即使该列标记有“ NOT NULL”。修复票务 892fc34f173e99d8
  22. 当在具有附加数据库的数据库连接上运行时,修复PRAGMA integrity_check中罕见的假阳性。门票 a4e06e75a9ab61a12
  23. 如果使用某些狡猾的CREATE TABLE声明,请修复导致断言错误的错误(由OSSFuzz发现)。门票 bc115541132dad136

版本3.20.1(2017-08-24)中的其他更改:

  1. 修复新的sqlite3_result_pointer()接口中的潜在内存泄漏。机票7486aa54b968e9b5

    散列:

  2. SQLITE_SOURCE_ID:“ 2017-08-24 16:21:36 8d3a7ea6c5690d6b7c3767558f4f01b511c55463e3f9e64506801fe9b74dce34”
  3. sqlite3.c的SHA3-256:93b1a6d69b48dc39697d1d3a1e4c30b55da0bdd2cad0c054462f91081832954a

一个SQLite的版本的完整列表, 在一个单一的页面和年代都还可以。 SQLite版本控制站点上提供了每个签入的详细历史记录 。