Small. Fast. Reliable.
Choose any three.

SQLite版本3.21.0(2017-10-24)

  1. 充分利用F2FS文件系统中的原子写入功能 ,以大大减少事务开销。当前,这需要 SQLITE_ENABLE_BATCH_ATOMIC_WRITE编译时选项。
  2. 允许ATTACHDETACH命令在事务内部运行。
  3. 如果PRIMARY KEY仅包含一列,则允许WITHOUT ROWID虚拟表可写。
  4. 现在,在WAL重置中写入标头后出现的“ fsync()”现在将同步设置用于检查点。这意味着,如果PRAGMA checkpoint_fullfsync设置为on ,它将在Mac上使用“ fullfsync” 。
  5. 所述sqlite3_sourceid()函数尝试检测如果源代码已经从什么签入版本控制改性,如果有改进,则版本散列的最后四个字符被显示为“ALT1”或“ALT2”。目的是检测意外和/或粗心的编辑。伪造者可以破坏此功能。
  6. 改进了CREATE TABLE AS语句的列名的引号引用,并在右侧进行了聚合查询。
  7. UNIX VFS发出的“ stat()”系统调用更少。
  8. 增强了LIKE优化,使其可以与ESCAPE子句一起使用。
  9. 增强的PRAGMA完整性检查PRAGMA快速检查功能,以检测以前丢失的模糊行损坏。同时更新两个编译指示,以使它们在遇到记录损坏时返回错误文本,而不是SQLITE_CORRUPT 。
  10. 现在,查询计划者更喜欢使用协例程而不是使用查询拼合器优化来实现FROM子句子查询 。不再可以禁用对子查询使用协同例程的支持。
  11. 将有关!=,IS,IS NOT,NOT NULL和IS NULL约束的信息传递到虚拟表的xBestIndex方法中。
  12. 增强了CSV虚拟表,以便在缺少最后一个换行符的情况下接受最后一行输入。
  13. 删除很少使用的“临时”内存分配器。将其替换为SQLITE_CONFIG_SMALL_MALLOC配置设置,该 配置设置为SQLite提供了一个提示,即应尽可能避免分配大量内存。
  14. swarm虚拟表添加 到现有的union虚拟表扩展中。
  15. 添加了 sqlite_dbpage虚拟表, 以提供对数据库文件页面的直接访问。源代码内置于合并中,并使用-DSQLITE_ENABLE_DBPAGE_VTAB编译时选项激活。
  16. 添加一种新的fts5vocab虚拟表类型-“ instance”-以最低级别直接访问FTS5全文索引。
  17. 在Windows VFS中删除对rand_s()的调用,因为它在某些旧笔记本电脑上的Firefox中引起了问题。
  18. 命令行shellsrc / shell.c源代码不再受版本控制。现在,将在构建过程中生成该文件。
  19. 其他microoptimizations减少约2.1%的CPU使用率。
  20. Bug修复:
    1. 修复OSSFuzz发现的错误assert()语句。门票cb91bf4290c211d
    2. 修复sqlite3_result_pointer()中晦涩的内存泄漏。机票7486aa54b968e9b
    3. 通过将架构重置推迟到查询计划程序完成运行之后,来避免可能的“售后使用”错误。门票be436a7f4587ce5
    4. 如果COLLATE正确,则仅使用基于索引的索引来优化ORDER BY或GROUP BY。门票e20dd54ab0e4383
    5. 修复当在索引上的表达式中的表达式确实是一个常量时出现的断言错误。门票AA98619AD08DDCA
    6. 修复了PRAGMA reverse_unordered_selects之后可能发生的断言错误 。门票cb91bf4290c211d
    7. 修复了在IN或EXISTS子查询中使用表值函数的查询可能发生的段错误。门票b899b6042f97f5
    8. 修复了在编译特定的可怕公用表表达式时可能出现的整数溢出问题。这是OSSFuzz发现的另一个问题。6ee8cb6ae5
    9. 修复了查询损坏的数据库文件时可能发生的越界读取的问题,这是Google Project Zero的Natalie Silvanovich检测到的问题。入住04925dee41a21f

    散列:

  21. SQLITE_SOURCE_ID:“ 2017-10-24 18:55:49 1a584e499906b5c87ec7d43d4abce641fdf017c42125b083109bc77c4de48827”
  22. sqlite3.c的SHA3-256:84c181c0283d0320f488357fc8aab51898370c157601459ebee49d779036fe03

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