Small. Fast. Reliable.
Choose any three.

SQLite版本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

    散列:

  24. SQLITE_SOURCE_ID:“ 2017-08-01 13:24:15 9501e22dfeebdcefa783575e47c60b514d7c2e0cad73b2a496c0bc4b680900a8”
  25. sqlite3.c的SHA3-256:79b7f3b977360456350219cba0ba0e5eb55910565eab68ea83edda2f968ebe95

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