Small. Fast. Reliable.
Choose any three.

SQLite版本3.24.0(2018年6月4日)

  1. 添加对PostgreSQL风格的UPSERT的支持。
  2. 添加对r-tree表中辅助列的支持。
  3. 添加用于发现SQLite使用的SQL关键字的C语言API:sqlite3_keyword_count()sqlite3_keyword_name()sqlite3_keyword_check()
  4. 为基于sqlite3_str对象的动态字符串添加C语言API 。
  5. 增强ALTER TABLE,使其可以将“ true”和“ false”识别为DEFAULT的有效参数。
  6. 将排序器引用优化添加为编译时选项。仅在使用SQLITE_ENABLE_SORTER_REFERENCES编译时可用。
  7. 改进EXPLAIN QUERY PLAN原始输出的格式,以便它提供有关查询计划以及计划中各个组件之间的关系的更好信息。
  8. sqlite3_db_config() API中添加了SQLITE_DBCONFIG_RESET_DATABASE选项 。

    CLI增强功能:

  9. 自动截取原始的EXPLAIN QUERY PLAN 输出并将其重新格式化为ASCII图形。
  10. 以“#”开头但不在SQL语句中间的行被解释为注释。
  11. 在“ .backup”命令中添加了--append选项。
  12. 添加了“ .dbconfig”命令。

    表现:

  13. 当数据库文件的内容没有实际更改时,UPDATE避免了不必要的低级磁盘写入。例如,“ UPDATE t1 SET x = 25 WHERE y =?” 如果x列中的值已经为25,则不会生成额外的磁盘I / O。类似地,当对跨越多个页面的记录进行UPDATE时,只有实际更改的页面子集才会写入磁盘。这仅是低级别的性能优化,不会影响TRIGGER或其他更高级别的SQL结构的行为。
  14. 现在,使用ORDER BY和LIMIT的查询会尝试避免计算可能无法进入LIMIT以下的行。这可以大大提高ORDER BY LIMIT查询的性能,尤其是当LIMIT相对于不受限制的输出行数较小时。
  15. OR优化被允许继续进行,即使OR表达还转换成中的表达。现在,在EXPLAIN QUERY PLAN输出中也更清楚地显示了OR优化 的用法
  16. 查询计划者对于无法为其创建持久索引的视图和子查询使用自动索引更具攻击 性。
  17. 在适当的地方,使用R-Tree扩展中的一遍UPDATE和DELETE查询计划 。
  18. LEMON生成的解析器中的性能改进。

    Bug修复:

  19. 对于LEFT JOIN的右侧表,直接计算表达式的值,而不是从表达式索引中加载预先计算的值,因为表达式索引可能不包含正确的值。机票 7fa8049685b50b5aeb0c2
  20. 不要尝试使用WHERE子句中的术语来启用对LEFT JOIN右侧表的索引查找。门票 4ba5abf65c5b0f9a96a7a
  21. 修复了在CSV虚拟表中无法打开错误后可能发生的内存泄漏
  22. 修复了一个长期存在的问题,其中AUTOINCREMENT使用的sqlite_sequence表上的架构损坏 会导致崩溃。门票 d8dc2b3a58cd5dc2918a1
  23. 修复json_each()函数,以便当输入是简单值而不是数组或对象时,它在其“ fullkey”列上返回有效结果。

    散列:

  24. SQLITE_SOURCE_ID:“ 2018-06-04 19:24:41 c7ee0833225bfd8c5ec2f9bf62b97c4e04d03bd9566366d5221ac8fb199a87ca”
  25. sqlite3.c的SHA3-256:0d384704e1c66026228336d1e91771d295bf688c9c44c7a44f25a4c16c26ab3c

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