Small. Fast. Reliable.
Choose any three.

SQLite版本3.12.2于2016-04-18

版本3.12.0(2016-03-29)中的更改:

    潜在破坏性变化:

  1. SQLITE_DEFAULT_PAGE_SIZE增加从1024到4096 SQLITE_DEFAULT_CACHE_SIZE从2000变为-2000所以高速缓存存储器相同数量的默认情况下使用。有关更多信息,请参见关于3.12.0版页面大小更改的应用笔记 。

    性能增强:

  2. Lemon解析器生成器进行了增强 ,使其创建了更小,更快的SQL解析器。
  3. 仅当两个或多个附加数据库都被修改,PRAGMA同步设置为OFF且journal_mode设置为OFF,MEMORY或WAL时,才创建主日记文件。
  4. 仅在其大小超过阈值时创建语句日记文件。否则,日记将保留在内存中,并且不会发生I / O。可在编译时使用SQLITE_STMTJRNL_SPILL或在启动时使用sqlite3_configSQLITE_CONFIG_STMTJRNL_SPILL)配置阈值。
  5. 即使xBestIndex方法未将虚拟表列的sqlite3_index_constraint_usage.omit标志设置在IN运算符的左侧,查询计划程序仍可以优化虚拟表上的IN运算符。
  6. 现在,查询计划器可以更好地优化 3向或更高连接中的虚拟表访问,其中虚拟表上的约束分布在两个或多个其他连接表中。
  7. 更有效地处理应用程序定义的SQL函数,尤其是在应用程序定义数百或数千个自定义函数的情况下。
  8. 查询计划者在估计ORDER BY的成本时会考虑LIMIT子句。
  9. 配置脚本(在Unix上)自动检测pread()和pwrite()并设置编译时选项以使用这些OS接口(如果可用)。
  10. 减少保存架构所需的内存量。
  11. 其他各种微优化,可提高性能并减少内存使用。

    新的功能:

  12. sqlite3_db_config()中添加了SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER选项,该选项 允许在运行时启用或禁用fts3_tokenizer() SQL函数的两个参数版本。
  13. RBU扩展中添加了sqlite3rbu_bp_progress()接口。
  14. PRAGMA defer_foreign_keys = ON语句现在还禁止 操作限制外键。
  15. 添加了sqlite3_system_errno()接口。
  16. 添加了SQLITE_DEFAULT_SYNCHRONOUSSQLITE_DEFAULT_WAL_SYNCHRONOUS 编译时选项。该SQLITE_DEFAULT_SYNCHRONOUS编译时选项替换了SQLITE_EXTRA_DURABLE选项,它不再支持。
  17. 增强了命令行外壳中的“ .stats”命令,以显示有关从/ proc获得的I / O性能的更多信息(如果有)。

    Bug修复:

  18. 确保单个语句中来自多个触发器的sqlite3_set_auxdata()值不会相互干扰。票证dc9b1c91
  19. 修复代码生成器,以使用“ x IN(SELECT ...)”形式的表达式,其中RHS上的SELECT语句是相关子查询。机票5e3c886796e5512e
  20. 修复与sqlite3_db_readonly()接口关联的无害TSAN警告。

版本3.12.1(2016-04-08)中的其他更改:

  1. 修复了版本3.12.0引入的边界条件错误,该错误可能在大量使用SAVEPOINT时导致崩溃。机票7f7f8026eda38
  2. 修复视图,以便在可能时从定义表继承列数据类型。
  3. 修复查询计划程序,以便IS和IS NULL运算符能够在LEFT OUTER JOIN上驱动索引。

版本3.12.2(2016-04-18)中的其他更改:

  1. 修复了3.12.0和3.12.1版中的向后兼容性问题:声明为“ INTEGER” PRIMARY KEY(带有datatype关键字的引号)的列未被识别为 INTEGER PRIMARY KEY,这导致数据库文件不兼容。机票7d7525cb01b68
  2. 修复了一个错误(自3.9.0版以来存在), 如果PRAGMA reverse_unordered_selects处于打开状态,则可能导致DELETE操作丢失行。门票a306e56ff68b8fa5
  3. 修复了代码生成器中的错误,如果两个或多个虚拟表被联接并且联接的外循环中使用的虚拟表具有IN运算符约束,则该错误可能导致错误的结果。
  4. 确定用于排序大量数据的缓存大小时,请正确解释负的“ PRAGMA cache_size”值。

    散列:

  5. SQLITE_SOURCE_ID:“ 2016-04-18 17:30:31 92dc59fd5ad66f646666042eb04195e3a61a9e8e”
  6. sqlite3.c的SHA1:de5a5898ebd3a3477d4652db143746d008b24c83

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