Small. Fast. Reliable.
Choose any three.

SQLite版本3.35.5于2021-04-19

版本3.35.0(2021-03-12)中的更改:

  1. 添加了内置的SQL数学函数()。(需要 -DSQLITE_ENABLE_MATH_FUNCTIONS编译时选项。)
  2. 增加了对ALTER TABLE DROP COLUMN的支持。
  3. 概括UPSERT
    1. 允许按顺序评估多个ON CONFLICT子句,
    2. 最后的ON CONFLICT子句可以省略冲突目标,但仍使用DO UPDATE。
  4. DELETEINSERTUPDATE语句上添加对RETURNING子句的支持。
  5. 在包含非常大的TEXT或BLOB值的数据库上运行VACUUM时,使用较少的内存。不再需要一次将整个TEXT或BLOB都保存在内存中。
  6. 指定公用表表达式时,增加对MATERIALIZEDNOT MATERIALIZED提示的支持。默认行为以前是NOT MATERIALIZED,但现在已被多次使用的CTE更改为MATERIALIZED。
  7. SQLITE_DBCONFIG_ENABLE_TRIGGERSQLITE_DBCONFIG_ENABLE_VIEW 设置被修改,使它们只控制在主数据库模式或在连接数据库模式,而不是在TEMP模式触发器和视图。始终允许使用TEMP触发器和视图。
  8. 查询计划器/优化器的改进:
    1. 最小/最大优化的增强功能,以便与IN运算符和先前版本的OP_SeekScan优化更好地配合使用。
    2. 尝试在WHERE子句中处理EXISTS运算符,就好像它们是IN运算符一样,这​​是有效的转换,并且似乎可能会提高性能。
    3. 即使父查询是联接,也允许统一UNION ALL子查询。
    4. 即使禁用了STAT4,也可以在WHERE子句中的IS NOT NULL表达式上使用索引(如果适用)。
    5. 如果“ x”是具有“ NOT NULL”约束并且不参与外部联接的列,则形式为“ x IS NULL”或“ x IS NOT NULL”的表达式可能会转换为FALSE或TRUE。
    6. 如果UPDATE不会修改与外键关联的任何列,请避免检查UPDATE语句上的外键约束。
    7. 只要WHERE术语完全由常量和在子查询中所有窗口函数的PARTITION BY子句中找到的表达式的副本组成,就允许将WHERE术语下推到包含窗口函数的子查询中。
  9. CLI增强功能:
    1. 增强“ .stats”命令以接受新的参数“ stmt”和“ vmstep”,从而分别导致准备语句统计信息和仅显示虚拟机步骤计数。
    2. 添加“ .filectrl data_version”命令。
    3. 增强“ .once”和“ .output”命令,以便如果目标参数以“ |”开头 (指示将输出重定向到管道中),则不需要用引号将其引起来。
  10. Bug修复:
    1. 修复在处理具有相关WHERE子句和“ HAVING 0”子句的语法错误的SELECT语句时潜在的NULL指针取消引用的问题。(也在3.34.1修补程序版本中修复。)
    2. 修复了 3.33.0版的IN-operator优化中的一个错误,该错误可能导致错误的答案。
    3. 如果模式以“%”结尾并且存在“ ESCAPE'_'”子句,请修复来自LIKE运算符的错误答案。

版本3.35.1(2021-03-15)中的其他更改:

  1. 修复新的DROP COLUMN功能在索引的列和索引定义中引用的列上使用时的错误
  2. 改进CLI中.dump命令的内置文档。

版本3.35.2(2021-03-17)中的其他更改:

  1. 修复 版本3.35.0中引入的appendvfs.c扩展中的问题 。
  2. 确保不带参数的日期/时间函数(生成依赖于当前时间的响应)被视为 非确定性函数。门票 2c6c8689fb5f3d2f
  3. 修复了sqldiff实用程序中的一个问题,该问题与虚拟表定义中的非正常空格字符有关。
  4. 限制3.35.0发行版中第8c项描述的新UNION ALL优化,以便它不会尝试进行过多的新子查询。有关 详细信息,请参见论坛线程140a67d3d2

版本3.35.3(2021-03-26)中的其他更改:

  1. 增强字节码引擎的OP_OpenDup操作码,以便即使复制的光标本身来自OP_OpenDup,它也可以工作。已修复 票bb8a9fd4a9b7fce5。由于最近进行了MATERIALIZED提示增强,因此才发现此问题。
  2. 当实现相关的公用表表达式时,请针对每个用例分别执行此操作,这是正确性所必需的。这解决了MATERIALIZED提示增强所引入的问题。
  3. 修复了UNIX VFS的文件名规范化器中的问题。
  4. 修复CLI中“框”输出模式,以便它与返回一列或多列零列的语句一起使用(例如PRAGMA增量_vacuum)。 论坛帖子afbbcb5b72
  5. 改进了由错误的公用表表达式生成的错误消息。 论坛帖子aa5a0431c99e
  6. 修复一些错误的assert()语句。
  7. 修复SELECT语句语法图,以便正确显示FROM子句语法。 论坛帖子9ed02582fe
  8. 修复EBCDIC字符分类器,以便它将换行符理解为空格。 论坛帖子58540ce22dcd
  9. 在(不支持的)整数虚拟表 扩展的实现中改进了xBestIndex方法,以便说服查询计划程序更好地完成工作,从而避免尝试实现具有无限行的表。 论坛帖子b52a020ce4

版本3.35.4(2021-04-02)中的其他更改:

  1. 修复上述第8b条所标识的查询计划程序优化中的一个缺陷。票证 de7db14784a08053
  2. 修复新的RETURNING语法中的缺陷。机票 132994c8b1063bfb
  3. 修复新的RETURNING功能,以便在RETURNING子句中的一项引用一个未知表时引发错误,而不是默默地忽略该错误。
  4. 修复与下推优化错误地触发的与聚合函数处理相关的断言。

版本3.35.5(2021-04-19)中的其他更改:

  1. 修复了新的ALTER TABLE DROP COLUMN功能中可能损坏数据库文件的缺陷。
  2. 修复了可能导致错误查询结果的模糊查询优化器问题。

    散列:

  3. SQLITE_SOURCE_ID:2021-04-19 18:32:05 1b256d97b553a9611efca188a3d995a2fff712759044ba480f9a0c9e98fae886
  4. sqlite3.c的SHA3-256:e42291343e8f03940e57fffcf1631e7921013b94419c2f943e816d3edf4e1bbe

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