Small. Fast. Reliable.
Choose any three.

2015-11-02-版本3.9.2

SQLite 3.9.2版是一个修补程序版本,修复了两个不明显的错误。(细节:(1)(2))。仅在遇到问题时才进行升级。


2015-10-16-版本3.9.1

SQLite的版本3.9.1是一个 小补丁3.9.0版本,其中包括一些简单的构建脚本#ifdef和调整,以使代码更易于编写在更广泛的平台。没有功能上的改变,除了单 小的除错所述json1延伸到从识别形式进料(ASCII 0x0c)看成一个空白字符,以符合与停止它 RFC7159


2015-10-14-版本3.9.0

SQLite 3.9.0版是定期计划的维护版本。关键更改包括:

请参阅更改日志,以获取一长段更完整的更改列表。

2015-07-29-版本3.8.11.1

SQLite 3.8.11.1版本是一个修补程序版本,修复了在3.8.11发布后不久就报告的两个奥秘问题。仅在这些晦涩的问题之一影响您的代码的极少数情况下才从3.8.11升级。


2015-07-27-版本3.8.11

SQLite 3.8.11版本是定期计划的维护版本。有关详细信息,请参见更改日志


2015-05-20-版本3.8.10.2

kes!一系列有效的SQL语句后索引损坏!

这样的错误已经潜入SQLite的正式版本已经有很多年 了。但是在过去的七个月中(从版本3.8.7版本3.8.10.1),如果您将INSERT转换为精心设计的架构,该架构中有两个嵌套的触发器,可以将索引键值从TEXT转换为INTEGER,然后再次返回TEXT ,则可能会插入INTEGER值作为索引键而不是正确的TEXT,从而导致索引损坏。此修补程序版本添加了一行代码来解决该问题。

如果确实遇到此问题,则在损坏的索引上运行REINDEX将清除它。


2015-05-09-版本3.8.10.1

3.8.10版本未将新的SQLITE_ENABLE_DBSTAT_VTAB 编译时选项添加到sqlite3_compileoption_used()接口。此修补程序版本修复了该遗漏。并且,在进行此操作时,关联的dbstat虚拟表得到了一些增强,并且修复了无害的编译器警告。

除非您使用新的SQLITE_ENABLE_DBSTAT_VTAB编译时选项,否则没有理由从3.8.10版本升级。


2015-05-07-版本3.8.10

SQLite 3.8.10版本是定期计划的维护版本。此版本具有性能上的改进,修复了AFL模糊器发现的一些不可思议的错误,新的“ sqldiff.exe”命令行实用程序,对文档的改进以及其他增强功能。有关其他信息,请参见发行说明


2015-04-08-版本3.8.9

SQLite 3.8.9版是定期计划的维护版本。此发行版中的新功能包括 PRAGMA index_xinfo命令,sqlite3_status64()接口以及命令行shell的“ .dbinfo”命令。有关其他信息,请参见发行说明


2015-02-25-版本3.8.8.3

3.8.8.3修补程序版本修复了SQLite代码生成器中的一个模糊问题,当在LEFT JOIN的ON子句中使用部分索引的限定表达式时,该问题可能导致错误的结果。自3.8.0版首次添加对部分索引的支持以来,代码中一直存在此问题。但是,很难想象将合格约束放在LEFT JOIN的ON子句中的正当理由,因此这个问题从未出现过。

任何容易受到此错误影响的应用程序都已经遇到了问题。因此,从以前的版本升级是可选的。


2015-01-30-版本3.8.8.2

3.8.8.2修补程序版本解决了一个小问题:它确保sqlite3_wal_checkpoint(TRUNCATE)操作将始终截断预写日志,即使日志已被重置且不包含任何新内容。目前尚不清楚这是错误修复还是新功能。

这样的事情通常会进入下一个定期计划的发行版中,但是一位著名的SQLite用户急忙进行更改,因此我们很高兴通过此修补程序将其发布。

除非您确实需要增强sqlite3_wal_checkpoint(TRUNCATE)的行为,否则没有任何升级的理由。


2015-01-20-版本3.8.8.1

在发布3.8.8版本的几个小时内,报告了一个针对10个月的3.8.4版本的错误。由于该错误在所有后续发行版中都存在,因此决定在3.8.8广泛使用之前发布一个小的补丁。

有关 错误的描述,请参见票证 f97c4637102a3ae72b7911

版本3.8.8和3.8.8.1之间的更改很小。


2015-01-16-版本3.8.8

SQLite版本3.8.8是SQLite的定期计划维护版本。

在此版本中,没有重大的新功能或性能增强,而只是逐步的改进。此版本中的大多数性能提升来自重构B-Tree重新平衡逻辑,以避免不必要的memcpy()操作。新功能包括 PRAGMA data_version语句,并且可以接受 VALUES子句,而行数没有任意限制。已修复了一些晦涩的错误,包括一些多线程竞赛以及某些Mac上的编译器错误的变通办法。

有关增强功能和错误修复的详细列表,请参见更改日志


2014-12-09-版本3.8.7.4

SQLite 3.8.7.4版本是计划外的错误修复版本。对先前版本和版本3.8.7的更改很小。

此版本修复程序添加了一个互斥锁,该互斥锁是3.8.7.3补丁程序的更改所必需的,但被意外省略。任何内部SQLite测试都不需要互斥体,但是如果没有互斥体,Firefox将会崩溃。添加了测试用例,以确保不再丢失互斥体。


2014-12-06-版本3.8.7.3

SQLite 3.8.7.3版是计划外的错误修复版本。对先前版本和版本3.8.7的更改很小。

此版本修复了两个晦涩的错误,这些错误可能导致错误的查询结果和/或应用程序崩溃,但(据我们所知)没有这些安全漏洞。这两个错误在多个先前发行版中的代码中都是潜在的,并且以前从未遇到过,因此它们不太可能引起问题。不过,为它们两者发布修补程序似乎是审慎的做法。有关详细信息,请参见更改日志。


2014-11-19-版本3.8.7.2

SQLite 3.8.7.2版是一个修补程序和错误修复版本。与先前版本相比所做的更改很小。

此发行版的主要原因是增强了ROLLBACK命令,以便只要ROLLBACK不会更改架构,它就允许在同一数据库连接上运行的查询继续运行。在所有以前的SQLite版本中,ROLLBACK都会导致挂起的查询立即停止并返回SQLITE_ABORTSQLITE_ABORT_ROLLBACK。如果ROLLBACK更改了数据库架构,则待处理的查询仍会中止,但是从此补丁程序发行版开始,如果架构未经修改,则允许查询继续运行。

除了ROLLBACK增强功能之外,此修补程序版本还包含针对三个隐蔽错误的修复程序。有关详细信息,请参见 更改日志


2014-10-30-版本3.8.7.1

SQLite 3.8.7.1版是一个错误修复版本。

此错误修复程序发布的主要原因是要解决更新使用ALTER TABLE ADD COLUMN添加的表末尾字段的值的问题。此问题 1首先出现在3.8.7版本中。

3.8.7发行版中的另一个小麻烦是,Android构建试图使用标准C库中的strchrnul()函数,但该函数在Android上不可用。Android版本必须添加-DHAVE_STRCHRNUL = 0才能解决此问题。该补丁修复了该问题,以便Android构建现在可以正常运行而无需进行任何更改。

PRAGMA journal_mode = TRUNCATE的操作已得到增强,因此当PRAGMA sync = FULL时,它会在截断日志文件后调用fsync() 。在提交后不久发生断电的情况下,这有助于保持事务的持久性。

最后,修复了与在VIEW上运行UPDATE和DELETE相关的两个长期存在的晦涩问题。

从3.8.7起更改很小。


2014-10-17-版本3.8.7

SQLite版本3.8.7是定期计划的维护版本。建议从所有以前的版本升级。

与先前版本相比,大多数更改都是微优化,旨在帮助SQLite更快地运行。每个单独的优化对性能的影响都非常小。但是这些改进加起来了。在Linux上使用cachegrind并在x64 linux上使用gcc 4.8.1和-Os进行编译的良好定义的工作负载(SQLite开发人员将其用作典型应用程序工作负载的代理)上进行了测量,当前版本的工作量超过20%与以前的版本相比,CPU周期数相同。Cachegrind不是真正的CPU,用于测量的工作负载仅是代理。因此,您的表现可能会有所不同。我们预计在实际应用中,约有一半的测量和报告的改进将得到改善。我们认为10%小于20%,但仍然相当不错。

此版本包括一组新的C语言接口,这些接口具有无符号的64位而不是有符号的32位长度参数。新的API不提供任何新功能。但是,它们确实使编写对整数溢出漏洞具有更强抵抗力的应用程序更加容易。

此版本还包括一个新的排序器,该排序器能够使用多个线程来帮助进行大型排序操作。(实现ORDER BY和/或GROUP BY子句有时需要进行排序操作,而CREATE INDEX几乎总是需要进行排序操作。)默认情况下,多线程分类器是关闭的,必须使用PRAGMA线程SQL命令启用 。请注意,多线程排序器为大型排序提供了更快的实时性能,但是它也使用了更多的CPU周期和更多的能量。


2014-08-15-版本3.8.6

SQLite版本3.8.6是定期计划的维护版本。建议从所有以前的版本升级。

此版本包含通常的各种模糊的错误修复。但是,一个错误值得特别注意。从版本3.8.2(2013-12-06)开始的CREATE INDEX命令中 出现问题,在某些情况下,该问题允许在非唯一列上创建UNIQUE索引。创建索引后,就不能再插入新的非唯一条目,但是将保留先前存在的非唯一条目。有关 更多信息,请参见票证 9a6daf340df99ba93c。除了修复此错误外,还增强了 PRAGMA integrity_check命令,以检测UNIQUE索引中的非唯一性,因此,如果此错误确实在数据库中引入了任何问题,则可以很容易地检测到这些问题。

其他值得注意的变化包括对十六进制整数的支持 (例如:0x1234),以及对IN运算符的性能增强,根据邮件列表报告,这些运算符可以 使某些查询的运行速度提高五倍。

根据valgrindtest / speedtest1.c 测试程序,与大约一年前相比,版本3.8.6比版本3.8.0少使用25%的CPU周期。另一方面,版本3.8.6的编译二进制文件比3.8.0大约大5%。大小增加的部分原因是添加了新功能,例如WITHOUT ROWID 表和通用表表达式


2014-06-04-版本3.8.5

SQLite 3.8.5版本是定期计划的维护版本。建议从以前的版本升级。

3.8.5版修复了十多个模糊的错误。这些错误都不是现有应用程序的问题。这些错误也不代表安全漏洞。但是,建议升级以防止将来出现问题。

除了错误修复之外,3.8.5版本还对查询计划程序进行了改进,特别是在使用索引进行排序以及在WITHHER ROWID表的WHERE子句中处理OR术语方面。“ .system”和“ .once”点命令已添加到命令行界面。并且对FTS4和RTREE虚拟表进行了增强。有关详细信息,请参见更改日志。


2014-04-03-版本3.8.4.3

版本3.8.4中添加的优化导致一些涉及FROM子句,DISTINCT和ORDER BY子句中的子查询的查询给出了错误的结果。有关 详细信息,请参见 票证98825a79ce145。此版本 在单行代码中添加了 一个字符的更改,以解决此问题。


2014-03-26-版本3.8.4.2

代码更改导致3.8.4版中的性能提高,但错过了单个缓冲区溢出测试,这可能会导致在搜索以特定方式损坏的数据库时超出缓冲区末尾的读取。 版本3.8.4.2修复这个问题用 一个在线补丁

使用格式正确的数据库文件时,我们不知道版本3.8.4中的任何问题。此版本解决的问题仅在读取损坏的数据库文件时出现。


2014-03-11-版本3.8.4.1

SQLite 3.8.4.1版本是对3.8.4的补丁,修复了两个小问题:

  1. 解决C预处理程序宏冲突,该冲突会导致Visual Studio某些配置的编译问题。
  2. 调整成本计算以进行跳过扫描优化,以提高性能。
在标记先前版本的几分钟之内,这两个问题就暴露了出来。这两个问题都不严重,但可能会令人讨厌。因此,决定做出快速补丁发布以解决这两个问题。

2014-03-10-版本3.8.4

SQLite 3.8.4版是一个维护版本,具有性能增强功能并修复了许多难以理解的错误。SQLite 3.8.4版没有重要的新功能。但是,执行许多常见操作所需的CPU周期数(由valgrind度量)相对于以前的版本已减少了约12%,而相对于3.7.16版本,则 与一年前相比减少了约25%。

SQLite 3.8.4版修复了自上一版本以来发现的一些极端情况的错误。这些错误不太可能在实践中出现,并且都不代表安全漏洞。但是,鼓励开发人员从所有以前的版本进行升级。


2014-02-11-版本3.8.3.1

SQLite 3.8.3.1版修复了3.8.1、3.8.2和3.8.3版中存在的错误,该错误可能导致查询忽略有效的输出行。建议从这些版本升级。

仅当使用SQLITE_ENABLE_STAT3SQLITE_ENABLE_STAT4编译时选项编译SQLite时,才会出现问题 。在这种情况下,如果查询的WHERE子句包含如下表达式:

WHERE(expr1 OR expr2 OR ... OR exprN)AND列不为空
如果所有expr1到exprN都适合索引使用,则在查询计划期间,SQLite可能会错误地将“ column is not NULL”列转换为“ column> NULL”。但是后一项永远不会成立,因此查询将不返回任何行。

此错误的故障单是[ 4c86b126f2 ]。建议所有用户升级以避免此问题。


2014-02-03-版本3.8.3

SQLite版本3.8.3是定期计划的维护版本。从先前版本升级是可选的。

版本3.8.3中最明显的变化是增加了对公用表表达式的支持。现在可以编写单个SELECT语句,该查询将使用深度优先或宽度优先搜索来查询树或图。一个SQLite查询甚至可以解决Sudoku难题计算Mandelbrot集。作为此更改的一部分,SQLite现在可以在SELECT语句有效的任何地方接受VALUES子句

此版本还包括许多小的性能增强功能,这些功能应可以使旧版应用程序的速度稍有提高。还有其他一些小的增强,例如增加了printf() SQL函数。有关详细信息,请参见更改日志


2013-12-06-版本3.8.2

SQLite版本3.8.2是定期计划的维护版本。从先前版本升级是可选的。

版本3.8.2添加了对WITHOUT ROWID表的支持。这是对SQLite的重要扩展。包含WITHOUT ROWID表的数据库文件不能被SQLite的早期版本读取或写入,但是不使用WITHOUT ROWID表的数据库是完全向后和向前兼容的。

3.8.2版本包含潜在的不兼容更改。SQLite中的所有先前版本,一个从一个非常大的正的浮点数成整数导致最负整数。换句话说,CAST(+ 99.9e99 to INT)将产生-9223372036854775808。之所以出现这种现象,是因为x86 / x64硬件对C语言中的等效转换所做的工作。但是这种行为是奇怪的。因此,此版本对其进行了有效更改,以便从浮点数到整数的转换返回浮点值和最接近浮点值的零之间的整数。因此,CAST(+ 99.9e99 to INT)现在返回+9223372036854775807。由于像sqlite3_column_int64()这样的例程 如果要访问的值确实是浮点数,请执行隐式强制转换,它们也会受到此更改的影响。

除了上述两个更改之外,3.8.2版本还包括许多性能增强功能。在 跳跃扫描优化现在可用于已被处理数据库ANALYZE。常量SQL函数现在从内部循环中分解出来,这可以大大提高包含WHERE子句条款(例如“ date> datetime('now','-2 days')”)的查询的速度。并且重构了各种高级内部例程,以减少CPU负载。


2013-10-17-版本3.8.1

SQLite版本3.8.1是定期计划的维护版本。从先前版本升级是可选的,但是如果使用部分索引,则应进行升级,因为在先前版本中存在与部分索引相关的 错误,可能会导致count(*)查询的答案不正确。

下一代查询规划这是在以前的版本首演继续工作。在当前版本中,对新的查询计划器进行了一些微调,以帮助其在某些情况下做出更好的决策,但是在很大程度上没有变化。添加了两个新的SQL函数(似然()不太可能()),以使开发人员可以向查询计划者提供提示,而不必强制查询计划者做出特定的决定。

版本3.8.1是第一个SQLite版本,在选择查询计划时会考虑表和索引行的估计大小。行大小估计基于已声明的列数据类型。例如,假定类型为VARCHAR(1000)的列比类型为INT的列使用更多的空间。通过将形式为“ sz = NNN”(其中NNN是平均行大小,以字节为单位)的项附加 到表或索引的sqlite_stat1.stat记录的末尾,可以覆盖基于数据类型的行大小估计。当前,行大小仅用于帮助查询计划程序在进行表扫描或count(*)操作时在表或其索引之一之间进行选择,尽管将来的版本也可能会在其他情况下使用估计的行大小。新的 PRAGMA统计信息 语句可用于查看行大小估计。

版本3.8.1添加了SQLITE_ENABLE_STAT4编译时选项。STAT4与STAT3非常相似,它使用索引中的样本来尝试猜测WHERE子句约束将满足索引的多少行。区别在于STAT4对索引的所有列进行采样,而较旧的STAT3仅对最左侧的列进行采样。鼓励STAT3的用户升级到STAT4。应用程序开发人员应谨慎使用STAT3和STAT4,因为这两个选项在设计上均违反了查询计划程序的稳定性保证,因此很难确保广泛部署和批量生产的嵌入式应用程序具有统一的性能。


2013-09-03-版本3.8.0.2

SQLite版本3.8.0.2包含针对新优化中的一个错误的单行修复,该错误试图从查询中忽略未使用的LEFT JOIN。


2013-08-29-版本3.8.0.1

SQLite 3.8.0.1版修复了3.8.0版本中用户发现的一些晦涩的错误。从3.8.0起的更改很小。


2013-08-26-版本3.8.0

不要害怕零!

SQLite版本3.8.0可能很容易被称为“ 3.7.18”。但是,此版本具有 下一代查询计划程序NGQP的过渡功能,并且很少有机会 破坏依赖以前SQLite发行版中未定义行为的旧程序,因此,次要版本号因此而增加。但是风险很低,并且应用程序开发人员可以使用查询计划器清单来帮助避免问题。

实际上,SQLite 3.8.0版是经过最严格测试的SQLite版本之一。已经下载了成千上万的beta副本,并且大概已经对其进行了测试,并且没有任何问题报告。

除了下一代查询计划程序之外,3.8.0版本还增加了对部分索引的支持,以及其他一些新功能。有关更多详细信息,请参见更改日志


2013-05-20-版本3.7.17

SQLite 3.7.17版本是定期计划的维护版本。请访问更改日志,以获取有关此版本中更改的完整说明。

3.7.17版中有许多错误修复。但这并不表示3.7.16是有问题的版本。3.7.17中的所有错误都是模糊的,不太可能影响任何特定的应用程序。而且大多数在3.7.17中修复的bug早于3.7.16,并且在代码中已经存在多年了,之前从未被发现。但是,由于有大量的修复程序,建议所有用户在可能的情况下进行升级。


2013-04-12-版本3.7.16.2

SQLite版本3.7.16.2修复了Windows OS界面中的一个长期缺陷,该缺陷在极少数竞争情况下可能导致数据库损坏。有关问题的完整说明,请参见http://www.sqlite.org/src/info/7ff3120e4f

据我们所知,这个错误从未在野外见过。该问题是由SQLite开发人员在为SQLite的单独组件编写压力测试时发现的。这些压力测试尚未找到要验证的组件的任何问题,但是他们确实找到了此补丁程序发行版所涉及的错误。

除了版本号更新外,此版本与3.7.16.1之间的唯一区别是单个标识符的两个字符更改,该标识符包含在特定于Windows的OS接口逻辑中。对于Windows以外的平台,此版本(版本号除外)没有任何更改。


2013-03-29-版本3.7.16.1

SQLite 3.7.16.1版是一个错误修复版本,它修复了先前版本中存在的一些问题。

版本3.7.16.1的主要动机是修复查询优化器中的错误,该错误是在版本3.7.15中引入的。查询优化器在优化某些ORDER BY子句时有些过分热心,这导致在需要排序以获得正确答案的情况下省略了排序。有关详细信息,请参见票证a179fe7465

除了ORDER BY修复程序之外,此发行版中还包括其他几个补丁程序,这些补丁程序用于修复晦涩(且大多数情况下无害)的bug并修复源代码注释中的拼写错误。


2013-03-18-版本3.7.16

SQLite 3.7.16版本是SQLite的定期计划发布。此版本包含对语言的一些增强和对查询优化器的改进。主要改进和优化的列表可以在更改日志中看到。

有一个重要的错误修复程序(请参见故障单fc7bd6358f)解决了在三向联接中联接约束将INTEGER列与TEXT列进行比较的错误查询结果。这个问题已经在代码中暂时搁置了,并且从未有过报告,因此我们推测它是非常模糊的。但是,建议所有用户进行升级,以避免与此问题相关的任何将来的问题。


2013-01-09-版本3.7.15.2

SQLite 3.7.15.2版是一个修补程序版本,它修复了版本3.7.15中引入的单个错误。该修复程序是对单行代码的4个字符的编辑。除了此4个字符的更改和版本号的更新之外,从3.7.15.1版开始没有任何更改 。

2012-12-19-版本3.7.15.1

SQLite版本3.7.15.1是一个修补程序版本,它修复了版本3.7.15中引入的单个错误。该修复程序涉及更改两行代码并添加单个assert()。此发行版还包括一些新的测试用例,以防止错误回归,当然,版本号也有所增加。但除此之外,从3.7.15版本开始没有任何变化 。

2012-12-12-版本3.7.15

SQLite 3.7.15版是SQLite的定期计划发布。此版本包含对查询计划程序和优化器的多项改进以及一项重要的错误修复。这是第一个正式支持Windows 8 Phone的版本。

重要的错误修复是一个问题,当在CHECK约束视图中包含COLLATE运算符的架构上使用共享缓存模式时,可能导致segfaults 。整理功能与各个数据库连接相关联。但是,指向整理函数的指针也被缓存在表达式中。如果表达式是模式的一部分,并且包含缓存的整理函数,则该表达式将指向最初解析该模式的数据库连接中的整理函数。如果该数据库连接关闭,而使用同一共享缓存的其他数据库连接继续运行,则其他数据库连接将尝试在关闭的数据库连接中使用释放的整理功能。3.7.15版中的修复程序是不将整理函数指针缓存在表达式结构中,而是在每次准备新语句时查找它们。

此版本还包含对查询计划程序的一些重要增强功能,这些功能应(我们希望)使某些查询的运行速度更快。增强功能包括:

  1. 在进行全表扫描时,请按照索引包含较少信息,因此索引较小且因此需要较少磁盘I / O进行扫描的理论,尝试使用索引而不是原始表。

  2. 增强IN运算符,使其可以使用具有数字亲和力的索引。

  3. 更好地识别何时可以使用索引实现ORDER BY子句-尤其是在ORDER BY子句包含来自两个或两个以上表的联接项的情况下。


2012-10-04-版本3.7.14.1

SQLite版本3.7.14.1是修补程序版本。与基准版本3.7.14相比,更改很小,并且仅限于修复三个错误。

修复的错误之一是TCL接口的一个长期存在的问题。另一个是外部编译器错误,SQLite只能解决该错误,并且仅当您使用VisualStudio-2012编译器在启用了优化功能的ARM上生成WinRT应用程序时才会出现。第三个问题是在3.7.14版中引入的SQLite核心错误,如果查询包含在ON子句中包含OR的LEFT JOIN,则可能导致段错误。


2012-09-03-版本3.7.14

SQLite 3.7.14版是SQLite的定期维护版本。以前的版本继续运行良好。升级是可选的。

版本3.7.14放弃了对OS / 2的本地支持。我们不知道任何在OS / 2上使用SQLite的活动项目,并且由于SQLite开发人员无法在OS / 2上进行测试,因此似乎是时候从SQLite树中删除OS / 2代码了。如果有仍然需要SQLite支持的OS / 2项目,他们可以继续维护自己的私有VFS,可以在启动时使用sqlite3_vfs_register()接口将其链接到SQLite 。

所述sqlite3_close_v2()接口已被添加。sqlite3_close_v2()接口与sqlite3_close()的不同之处在于,该接口旨在更好地与使用垃圾收集器的主机语言一起使用。使用较旧的sqlite3_close()接口,必须在连接数据库之前销毁关联的准备语句sqlite3_backup对象。使用更新的sqlite3_close_v2()接口,可以按任何顺序销毁对象。

此版本还包括对用于实现ORDER BY和CREATE INDEX的排序算法的性能改进。并且对查询计划程序进行了增强,可以更好地在WHERE子句中使用OR词的查询中使用覆盖索引。


2012-06-11-版本3.7.13

SQLite 3.7.13版增加了对Microsoft Windows 8的WinRT和Metro风格应用程序的支持。3.7.13版本比以前的版本要早于通常的发布,以便使此新功能掌握在开发人员手中。要在Metro风格的应用程序中使用SQLite,请使用-DSQLITE_OS_WINRT标志进行编译。由于WinRT增加了应用程序的安全性和安全性要求,因此所有数据库文件名都应为完整路径名。请注意,SQLite无法访问安装目录和应用程序数据目录之外的数据库。此限制是WinRT的另一个安全保护功能。除了这些限制,SQLite在WinRT上的工作方式应与在其他系统上完全相同。

在此版本中也是如此:当使用URI文件名mode = memory查询参数打开数据库时,该数据库是内存数据库,就像它已被命名为“:memory:”一样。但是,如果启用了共享缓存模式,则所有其他指定相同URI文件名的数据库连接都将连接到相同的内存数据库。这允许两个或多个数据库连接(在同一过程中)共享同一内存数据库。

此版本还包括一些极端情况下的性能优化,这些性能优化对于SQLite用户的重要子集来说是晦涩难懂的,但意义重大。快速发布这些性能优化是发布此版本如此之快的另一个原因。

SQLite的下一个版本计划在通常的2或3个月的时间间隔之后发布。


2012-05-22-修补程序版本3.7.12.1

SQLite 3.7.12.13.7.12版的修补程序版本,它修复了3.7.12版中引入的错误,该错误可能导致某些晦涩的嵌套聚合查询出现段错误。3.7.12.1中的更改​​很少,并且仅对于执行嵌套聚合查询的应用程序才需要升级。

2012-05-14-版本3.7.12

SQLite 3.7.12版本是定期计划的维护版本。此版本包含一些新的优化和错误修复,建议升级。有关详细信息,请参见更改摘要

2012-03-20-版本3.7.11

SQLite 3.7.11版本是一个定期计划的维护版本,由于 先前版本中引入的查询优化器中的错误,该版本早早 推出。该错误是模糊的-在某些情况下,当WHERE子句中包含3向联接和OR项时,它会将LEFT JOIN更改为INNER JOIN。但是它被认为足够严重以至于无法解决。除了这个问题之外,SQLite 3.7.10版本没有给您带来任何麻烦。从版本3.7.6.3、3.7.7、3.7.7.1、3.7.8或3.7.9升级到版本3.7.11是可选的。建议从其他版本升级,包括以前的版本3.7.10。

更改日志 中列举了此版本中发现的其他增强功能 。


2012-01-16-版本3.7.10

SQLite 3.7.10版本是定期计划的维护版本。从3.7.6.3、3.7.7、3.7.7.1、3.7.8或3.7.9版本升级是可选的。建议从其他版本升级。

SQLITE_CONFIG_PCACHE机制已被替换 SQLITE_CONFIG_PCACHE2。如果您不知道此机制是什么(这是极端情况,很少使用),那么此更改将对您没有任何影响。

新数据库文件 的默认架构格式编号已从1更改为4。SQLite能够使用架构格式4生成和读取数据库文件已有六年了。但是到目前为止,默认模式格式为1,以便较旧版本的SQLite可以读写由较新版本的SQLite生成的数据库。但是,这些旧版本的SQLite现在变得如此稀缺,以至于将新格式设置为默认格式似乎是合理的。

SQLite正在改变其在突然断电期间超出磁盘驱动器和闪存设备行为的一些假设。此更改对应用程序完全透明。阅读有关powersafe overwrite属性的更多信息。

此版本中添加了许多新接口:

PRAGMA CACHE_SIZE声明已得到增强。以前,您将使用此语句告诉SQLite它一次应在缓存中保留多少页数据库文件。总内存需求将取决于数据库页面大小。现在,如果给PRAGMA cache_size 一个负值-N,它将为缓存分配大约N kb的内存,并根据页面大小进行分配 。此增强使程序可以更轻松地控制其内存使用情况。

有一些晦涩的错误修复。如果在错误的瞬间在异常罐装磁盘驱动器上发生断电,则一个值得注意的bug票证ff5be73dee理论上可能会导致数据库文件损坏。但这主要是理论上的问题,在实践中极不可能发生。该漏洞是在实验室测试期间发现的,从未发现是在野外发生的。


2011-11-01-版本3.7.9

SQLite版本3.7.9是定期计划的维护版本。从3.7.6.3、3.7.7、3.7.7.1和3.7.8版本升级是可选的。建议从其他版本升级。

现在,SQLITE_ENABLE_STAT2的编译时选项为空操作。以前使用SQLITE_ENABLE_STAT2可以使用的增强的查询计划器功能现在可以通过SQLITE_ENABLE_STAT3来使用。默认情况下,增强型查询计划仍处于禁用状态。但是,SQLite的未来版本可能会将STAT3从启用选项转换为禁用选项,以便默认情况下可用,并且仅在请求时才省略。

FTS4全文搜索引擎已得到增强,使得在搜索字符串令牌以“^”开始,必须在各自的列中的第一个标记,以便匹配。以前,搜索字符串中的“ ^”字符只是被忽略。因此,如果旧版应用程序在FTS4搜索字符串中包含“ ^”字符,并认为它们将始终被忽略,则这些旧版应用程序可能会因此更新而中断。解决方法是简单地从搜索字符串中删除“ ^”字符。

请参阅更改摘要以获取与此版本相关的其他更改。


2011年9月19日-版本3.7.8

SQLite版本3.7.8是一个季度维护版本。从版本3.7.6.3、3.7.7或3.7.7.1升级是可选的。建议从其他版本升级。

此版本具有一种新的“外部合并排序”算法,该算法用于实现ORDER BY和GROUP BY,还可以为CREATE INDEX预先索引一个索引的内容。新算法执行的比较和I / O数量与以前大致相同,但是I / O的顺序性更高,因此,当排序的集合的大小大于文件系统缓存时,运行时间将大大减少。性能可以显着提高-大型CREATE INDEX命令的速度提高了几个数量级。另一方面,对于较小的CREATE INDEX,代码会稍微慢一些(1%或2%)。由于CREATE INDEX不是在速度要求严格的路径上通常发生的一种操作,因此我们认为这种权衡是一个不错的选择。小型CREATE INDEX语句的速度稍有下降,可能会在将来的版本中恢复。

查询计划程序已得到增强,可以更好地处理SELECT语句上的DISTINCT关键字。

关于默认VFS的工作很多。Unix VFS进行了增强,以包括更多可重写的系统调用-Chromium要求使用此功能,以使其更容易将SQLite内置到沙箱中。Windows VFS已得到增强,可以更有效地抵抗来自防病毒软件的干扰。

每个版本的SQLite都经过了比以前更好的测试,并且3.7.8也不例外。SQLite团队内部已使用版本3.7.8来执行任务关键功能,并且性能完美无缺。而且,当然,它通过了我们严格的测试程序,没有发现任何问题。建议对所有新开发版本使用3.7.8版。


2011-06-28-版本3.7.7.1

SQLite的版本3.7.7.1增加了一个单行错误修正至3.7.7解决 了问题 导致PRAGMA case_sensitive_like语句使用传统的编译 sqlite3_prepare()接口失败与SQLITE_SCHEMA错误。由于 sqlite3_exec()在内部使用sqlite3_prepare(),因此该问题也会影响sqlite3_exec()。

只有使用“ PRAGMA case_sensitive_like”和sqlite3_prepare()(或sqlite3_exec())接口的应用程序才需要从3.7.7升级。


2011-06-24-版本3.7.7

SQLite版本3.7.7是定期排定的每两个月发布的维护版本。从3.7.6.3版升级是可选的。建议从所有以前的版本升级。

此版本增加了对使用URI文件名命名数据库文件的支持。URI文件名默认情况下是禁用的(为了向后兼容),但鼓励应用程序启用它们,因为不兼容的情况极少发生,并且该功能很有用。有关详细信息,请参见 URI文件名文档

此版本中的大多数其他增强功能都涉及 虚拟表。虚拟表接口已得到增强,以支持SAVEPOINTON CONFLICT子句处理,并且内置 RTREEFTS3 / FTS4已得到增强,以利用新功能。例如,这意味着现在可以在FTS3 / FTS4RTREE表上使用REPLACE命令。

FTS4全文索引扩展已经增强,可以支持FTS4前缀选项FTS4顺序选项。提供了这两项增强功能以​​支持“按需搜索”界面,在该界面中,搜索结果开始出现在“搜索”框中的第一个按键之后,并随以后的每个按键进行优化。这样做的方法是在每次击键之后进行单独的全文本搜索,并在当前键入的单词的末尾添加“ *”通配符。因此,例如,如果到目前为止键入的文本是“ fast da”,而下一个键入的字符是“ t”,则应用程序会对模式“ fast dat *”进行全文搜索并显示结果。这种能力一直存在。FTS4前缀选项使搜索变得非常快(大约毫秒),即使在诸如“ t *”或“ th *”之类的困难情况下也是如此。

对于此版本,在FTS4模块上已经进行了大量工作。但是SQLite的核心代码变化不大,并且以前的版本没有任何问题,因此我们希望这是一个非常稳定的版本。


2011-05-19-版本3.7.6.3

SQLite 3.7.6.3版是一个修补程序版本,它修复了 与WAL模式关联的 单个错误。自从添加WAL以来,该bug一直存在于SQLite中,但是该问题非常模糊,因此在此之前没有人注意到。但是,鼓励所有用户升级到3.7.6.3版或更高版本。

错误是这样的:如果将cache_size设置得非常小(小于10)并且SQLite受到内存压力,并且启动了多语句事务,其中COMMIT之前的最后一条语句是SELECT语句,并且检查点正确发生了在事务提交之后,然后可能会发生该事务将被静默回滚而不是被提交的情况。

cache_size 的默认设置为2000。因此,在大多数情况下,此错误永远不会出现。但是有时程序员会在小工具和其他低内存设备上将cache_size设置为非常小的值,以节省内存空间。这样的应用程序容易受到攻击。请注意,这个bug确实不是导致数据库损坏。在某些情况下,好像正在运行ROLLBACK而不是COMMIT

错误详情

事务以WAL模式提交,方法是在包含“ commit”标志的WAL末尾(预写日志)上添加一条记录。因此,要提交事务,SQLite将获取在该事务期间已更改的所有页面,将它们附加到WAL,然后在最后一页上设置提交标志。现在,如果SQLite面临内存压力,它可能会尝试通过在提交之前将更改的页面写入WAL来释放内存空间。我们称此为“缓存”到WAL。将缓存溢出到WAL并没有错。但是,如果内存压力很严重,则可能是到COMMIT时在运行时,该事务的所有更改页都已经溢出到WAL中,并且没有要写入WAL的页面。由于没有未写的页面,因此没有任何东西可以放置提交标志。而且,如果没有提交标志,事务将最终被回滚。

解决此问题的方法是,如果在提交开始时所有更改过的页面都已被写入WAL,则数据库的页面1将再次被写入WAL,因此将始终有一个页面可用于设置提交标志。


2011-04-17-版本3.7.6.2

SQLite版本3.7.6.2在3.7.6.1中添加了一个单行错误修复,该错误修复使pthreads可以在NetBSD上正常工作。问题是开放系统调用的函数签名错误。该问题似乎对除NetBSD以外的任何系统都没有任何不利影响。

仅在NetBSD上需要从3.7.6.1版本升级。


2011-04-13-版本3.7.6.1

SQLite版本3.7.6.1修复了3.7.6中的单个错误,如果在SQLITE_ENABLE_LOCKING_MODE设置为0且使用HAVE_POSIX_FALLOCATE编译的Unix构建上使用SQLITE_FCNTL_SIZE_HINT,则可能导致段错误。

只有受上述特定配置错误影响的用户才需要从3.7.6升级。该代码没有其他更改。


2011-04-12-版本3.7.6

SQLite版本3.7.6是SQLite的定期计划的每两个月维护版本。从3.7.5版升级是可选的。建议升级3.7.5之前的版本。

2011-02-01-版本3.7.5

SQLite版本3.7.5是SQLite的定期定期双月维护版本。由于发现并修复了 可能导致数据库损坏的模糊错误,因此建议从所有先前版本的SQLite进行升级。此错误是在代码检查期间发现的,尚未在野外发现。

此版本为sqlite3_db_status()接口添加了新的操作码,可用于对 后备内存分配器的性能进行更精确的测量,这对于内存限制非常严格的应用程序的调校非常有用。

所述sqlite3_vsnprintf()的溶液中加入界面。该例程只是已存在的sqlite3_snprintf()接口的varargs版本。

sqlite3_trace()接口 的输出已得到增强,可以在使用递归扩展(例如FTS3RTREE)的系统中更好(更快)地工作 。

使用Valgrind进行的测试表明,对于大多数操作,此SQLite版本比以前的版本快1%或2%。

现在可以在http://System.Data.SQLite.org/上找到流行的ADO.NET SQLite适配器(称为System.Data.SQLite)的分支。System.Data.SQLite的创建者Robert Simpson意识到了这一分叉,表示了他的认可,并拥有对新Fossil存储库的提交特权。SQLite开发团队打算维持System.Data.SQLite的发展。


2010-12-08-版本3.7.4

SQLite版本3.7.4是SQLite的定期计划的每两个月维护版本。从3.7.2版3.7.3升级 是可选的。建议从所有其他SQLite版本升级。

此版本具有全文搜索增强功能。仍然完全支持较旧的 FTS3虚拟表,并且运行速度也应更快。此外,添加了新的FTS4虚拟表。FTS4遵循与FTS3相同的语法,但包含其他元数据,这有助于提高性能并提供更高级的 matchinfo()输出。在后续版本中寻找进一步的全文本搜索增强功能。

同样在此版本中,EXPLAIN QUERY PLAN输出得到了增强,并提供了新的文档,以便应用程序开发人员可以更轻松地了解SQLite如何执行其查询。

多亏了http://www.devio.us/上的一个人的帐户,OpenBSD已被添加到我们在每个版本之前测试SQLite的平台列表中 。该平台列表现在包括:

事实证明 ,SQLite的早期版本版本3.7.3)非常健壮。发现的唯一严重问题是 票证80ba201079,它描述了在非常特殊的情况下可能发生的错误查询结果。票证说明包含问题的详细信息。只需在此说一下这个问题就很模糊了,不大可能影响大多数应用程序,因此升级是可选的。当然,此版本已解决了该问题。


2010年10月8日-版本3.7.3

SQLite 3.7.3版是SQLite的定期定期双月维护版本。从3.7.2版升级是可选的。建议从所有其他版本升级。

此版本增加了两个新接口(实际上只是现有接口的变体)。所述sqlite3_create_function_v2()接口增加了对应用程序的数据指针析构函数。新的 sqlite3_soft_heap_limit64()接口允许将软堆限制设置为大于2 31的值。

所述RTREE扩展已经被增强,以具有的能力 的应用程序定义的查询区域。例如,可以使用它来定位摄像机视野内的所有对象。

3.7.3版本还包括一些性能增强,包括查询计划程序的改进,文档更新以及对一些非常难理解的错误的修复。


2010年8月24日-版本3.7.2

SQLite版本3.7.2修复了一个长期存在的错误,如果多次使用incremental_vacuum来部分减少包含数百个未使用数据库页面的数据库文件的大小,则可能导致数据库可用页面列表损坏。原始错误报告以及修复此问题的补丁程序的链接可以在 此处查看

该错误已存在代码中至少一年,甚至可能更长。该错误与3.7.1或3.7.0版本或任何其他最新版本无关。在3.7.1版本的几个小时内发现(并修复)了该错误,这纯属偶然。

如果不使用incremental_vacuum,则无法修复该bug ,即使使用incremental_vacuum,也很难修复。通常,可以通过运行VACUUM来解决bug导致的损坏类型。但是,由于该错误可能导致数据库损坏,因此建议所有SQLite用户都升级到3.7.2版或更高版本。


2010年8月23日-版本3.7.1

SQLite 3.7.1版是3.7.x系列的稳定版本。除了在3.7.0.1版中修复的文件头文件大小错误外,在3.7.0中没有发现主要问题。一些较小的极端情况下性能回归已得到修复。OS / 2界面中的错字已修复。

3.7.1版本中最大的一部分是在SQLite中对寻呼机模块的清理和重构。此重构应该没有应用程序可见的效果。目的是以更容易证明正确性的方式重组代码。

3.7.1版本增加了新的实验方法,以获得更详细的内存使用信息并控制数据库文件的碎片。现在,查询计划器在优化LIKEGLOB运算符方面做得更好。

此版本将数据库页面的最大大小从32KiB增加到64KiB。较旧版本的SQLite将无法读取或写入具有64KiB页的数据库。请注意,进一步增加页面大小是不可行的,因为文件格式对每个页面内的结构使用16位偏移量。


2010年8月4日-版本3.7.0.1

SQLite 3.7.0.1版是一个修补程序版本,用于修复SQLite文件格式的新文件头文件化功能中的错误, 如果该数据库文件与3.7.0版和3.6.23.1版交替写入,则可能导致数据库损坏。或更早。在此版本中,还修复了性能下降问题。

2010-07-22-版本3.7.0

SQLite版本3.7.0是SQLite的主要版本,它具有使用预写日志WAL的新事务控制机制。传统的rollback-journal仍被用作默认值,因此旧版程序应该没有可见的更改。但是,较新的程序可以通过启用WAL日记记录模式来利用改进的性能和并发性。

SQLite 3.7.0版还包含一些查询计划程序增强功能和一些模糊的错误修复,但唯一真正的大变化是添加了WAL模式。


2010-03-30-版本3.6.23.1

SQLite 3.6.23.1版本是一个修补程序版本,可应Mozilla的要求修复FTS3的offsets()函数中的错误。

2010-03-09-版本3.6.23

SQLite 3.6.23版本是SQLite的常规双月发行版。从先前版本升级完全是可选的。

此版本包含新的编译指示:secure_delete编译指示compile_options编译指示。有一个新的SQL函数:sqlite_compileoption_used()sqlite_compileoption_get()。新的C / C ++接口:sqlite3_compileoption_used()sqlite3_compileoption_get()SQLITE_CONFIG_LOGsqlite3_log()

此版本还包括一些小的错误修复和性能改进。对SQLITE_OMIT_FLOATING_POINT的支持得到增强。FTS3正在进行改进。

命令行界面中 的“ .genfkey”命令已被删除。 从3.6.19版本开始,SQLite支持标准的SQL外键约束,因此“ .genfkey”命令被视为不合时宜。


2010-01-06-版本3.6.22

SQLite 3.6.22版是一个错误修复版本。修复了两个错误,这些错误可能会导致错误的查询结果。 这两个错误都不明显,但是由于它们可能在部署后出现在应用程序中,因此建议所有应用程序将SQLite升级到版本3.6.22。

此版本还包括其他较小的错误修复和性能增强,尤其是在FTS3扩展中。


2009-12-07-版本3.6.21

SQLite 3.6.21版专注于性能优化。对于特定的跟踪集,此版本使用的CPU指令比以前的版本(由Valgrind衡量)使用的CPU指令少12%。此外, FTS3扩展已经通过大量的清理和返工,并且sqlite3_trace()接口已被修改为在其输出中插入 绑定的参数值。

2009-11-04-版本3.6.20

SQLite 3.6.20版是常规维护版本。查询计划程序已得到增强,可以更好地与LIKE和GLOB运算符中的绑定参数一起使用,并且在范围约束中已得到修复,并且修复了各种小错误。从3.6.19升级是可选的。

2009-10-14-版本3.6.19

SQLite 3.6.19版增加了对外键约束的本机支持 ,包括延迟约束和级联删除。为了向后兼容,默认情况下禁用外键强制,并且必须使用foreign_keys pragma将其打开。

3.6.19版还添加了对 IS和IS NOT运算符的支持。以前,SQLite(与大多数其他SQL数据库引擎一样)支持IS NULL和IS NOT NULL。IS和IS NOT运算符是通用化,允许右侧为任意表达式。IS和IS的工作方式与==(等于)和!=(不等于)相同,不同之处在于IS和IS NOT的NULL值彼此相等。


2009-09-11-版本3.6.18

从此版本开始,将使用Fossil 分布式配置管理系统来跟踪和管理SQLite源代码。以前使用CVS对SQLite进行了版本控制。整个CVS历史已导入Fossil。较旧的CVS存储库保留在网站上,但为只读。

SQLite 3.6.18版有两个主要增强功能。首先是对查询计划程序的一系列改进,它们可以帮助SQLite在过去选择次优查询计划的情况下为联接选择更好的计划。该SQLITE_ENABLE_STAT2已添加编译时选项造成的SQLite收集直方图数据上的索引时, ANALYZE命令运行。直方图的使用甚至可以进一步提高查询计划的性能。

第二个主要增强功能是SQLite现在支持递归触发器。较早的触发器非递归行为仍然是默认行为。递归触发器是使用recursive_triggers pragma激活的 。除了允许触发器(直接或间接)调用自身之外,新功能还对由于进行REPLACE冲突解决处理而从表中删除的行触发DELETE触发器。

非递归触发器仍然是默认行为,因为这最不可能导致现有应用程序出现问题。但是,我们预计触发器将默认从3.7.0版开始递归。届时,想要继续使用较旧的非递归触发器行为的应用程序将需要使用recursive_triggers编译指示 来禁用递归触发器。

此版本的SQLite还包含一些错误修复程序,尽管没有一个错误是严重的,而且都模糊不清,因此升级是可选的。

SQLite核心继续具有100%的分支测试覆盖率 ,因此尽管此版本进行了许多更改,但开发人员仍认为此版本的SQLite是稳定的并可以用于生产。


2009-08-10-版本3.6.17

这是每月维护版本,重点是错误修复,性能改进和增加的测试范围。这是SQLite的第一个版本,因为 在SQLite核心上实现了100%的分支测试覆盖率

此外,还提供了一个新的接口sqlite3_strnicmp(),以方便扩展编写程序。

此版本中修复的所有错误均不严重。所有错误都是晦涩的。升级是可选的。


2009-07-25-100%分支机构测试覆盖率

当为x86上的SuSE 10.1 Linux编译时,gcov测量 了TH3测试套件的一个子集,以提供 对SQLite核心(不包括VFS后端以及诸如FTS3和RTREE之类的扩展)的100%分支测试覆盖率。SQLite开发人员保证在所有将来的版本中将分支测试覆盖率保持在100%。正在进行的工作还将争取在操作系统后端和扩展上实现100%的分支测试覆盖率。

2009-06-27-版本3.6.16

SQLite 3.6.16版本是另一个常规维护版本,其中包含性能和健壮性增强。单个值得注意的错误已修复(票号3929)。此错误导致在具有AFTER触发器的索引表上执行INSERT或UPDATE语句失败,该触发器修改了相同的表和索引。

2009-06-15-版本3.6.15

SQLite 3.6.15版是常规维护版本,其中包含性能和健壮性增强功能以​​及针对各种晦涩错误的修复。

2009-05-25-版本3.6.14.2

SQLite 3.6.14.2版修复了SQLite的代码生成器(票号3879)部分中的一个模糊错误,该错误可能会导致错误的查询结果。与先前版本相比,更改仅包括此错误修复,签入[6676]和版本号文本的更改。

该错误是在3.6.14版中引入的。建议版本3.6.14和3.6.14.1的用户升级到此版本。应用程序不太可能遇到此错误,但是由于很难预测哪些应用程序可能会遇到该错误,因此我们建议将3.6.14和3.5.14.1的所有用户都升级到此版本。


2009-05-19-版本3.6.14.1

SQLite 3.6.14.13.6.14版的修补程序版本,具有最小的更改,可修复三个错误。仅对于受一个或多个错误影响的用户而言,升级才是必需的。

2009-05-07-版本3.6.14

SQLite 3.6.14版在btree和pager层以及查询优化器中提供了新的性能增强。某些工作负载的速度可能是前一个版本的两倍,尽管这是典型的结果,但速度要快10%。

现在,对WHERE子句中包含OR和IN运算符的虚拟表的 查询现在可以使用索引。

一个新的可选异步I / O后端可用于UNIX和Windows。异步后端通过将慢速的写操作推送到后台线程中,从而给出了更快的响应时间的错觉。更快的响应时间的折衷方案是需要更多的内存(以保存挂起的写操作的内容),并且如果发生电源故障或程序崩溃,某些似乎已提交的事务可能最终会在重新启动时被回滚。

此版本还包含许多小的错误修复,文档增强,新的测试用例以及对源代码的清理和简化。

如果那些先前的版本正在运行,则没有令人信服的理由从3.6.12或3.6.13版本进行升级。尽管许多用户可能会受益于改进的性能。


2008-12-16-版本3.6.7

SQLite版本3.6.7包含Unix驱动程序的主要清理工作,并支持Mac OS X上的新代理锁定机制。尽管Unix驱动程序经过了重组,但其功能相同,因此应用程序应该不会有任何区别。

2008-11-26-版本3.6.6.2

此版本修复了SQLite 3.6.6版中引入的一个错误,该错误 似乎可能导致数据库损坏。在压力测试期间检测到此错误。在野外还没有看到它。对问题的分析表明,该错误可能会导致数据库损坏,但是到目前为止,为找到实际导致数据库损坏的真实测试用例而进行的重点工作一直没有成功。因此,此错误导致问题的可能性很小。但是,出于谨慎考虑,我们决定进行紧急分支释放。

版本3.6.6.2版本还修复了可能会发生以下磁盘I / O错误晦涩内存泄漏。


2008-11-22-版本3.6.6.1

此版本修复了SQLite 3.6.4版中引入的一个错误,该错误 在晦涩的情况下可能导致数据库损坏。这个错误从来没有在野外发现过。它首先是通过内部压力测试检测到的,需要进行大量分析,然后才能证明可能导致腐败。因此,我们认为SQLite版本3.6.4、3.6.5和3.6.6可以安全地用于开发工作。但是建议在部署包含SQLite的产品之前升级到此补丁程序版本或更高版本。

我们已采取了发行补丁程序发行版的非同寻常的步骤,以使此错误的修复程序迅速发布。SQLite 3.6.7版将继续其正常的开发路径,并计划于12月中旬发布。


2008-11-19-版本3.6.6

SQLite版本3.6.5已发布。这是一个快速的周转发行版,修复了虚拟表和FTS3中的错误,这些错误已潜入 版本3.6.5中。此版本还添加了新的应用程序定义的页面缓存机制。

2008-11-12-版本3.6.5

SQLite版本3.6.5已发布。有各种次要功能增强和许多模糊的错误修复。在更改日志中包含的细节。升级是可选的。

2008-11-01-彭博社加入SQLite联盟

SQLite开发人员很荣幸地宣布, 彭博社已加入 SQLite联盟

2008-10-15-版本3.6.4

SQLite 3.6.4版添加了新功能,旨在帮助应用程序检测何时未在查询中使用索引。也有一些重要的性能改进。升级是可选的。

2008-09-22-版本3.6.3

SQLite版本3.6.3修复了先前版本引入的SELECT DISTINCT中的错误。没有添加新功能。建议对所有使用DISTINCT的应用程序进行升级。

2008-08-30-版本3.6.2

SQLite版本3.6.2包含页面缓存子系统的重写以及将标识符与SQL语句中的表列匹配的过程。这些更改旨在更好地模块化代码,并使其更易于维护和可靠地向前发展。与以前的版本相比,将近5000条核心代码的非注释行(约11.3%)已更改。但是,除了错误修复以外,应该没有对应用程序可见的更改。

2008-08-06-版本3.6.1

SQLite 3.6.1版是稳定和性能增强版本。

2008-07-16-版本3.6.0 Beta

3.6.0版对VFS对象进行了更改,以使SQLite更易于移植到各种平台上。与某些旧版应用程序可能存在不兼容性。有关详细信息,请参见35to36.html文档。

3.6.0版中引入了许多新接口。该代码经过了很好的测试,适合在稳定的系统中使用。我们仅附加了“ beta”标记,以便我们可以在下一版本中对新接口进行调整,而不必声明不兼容。


2008-05-12-版本3.5.9

3.5.9版增加了一个新的实验性PRAGMAjournal_mode。将日记模式设置为PERSIST可以在删除文件非常昂贵的系统上提高性能。PERSIST日志模式仍被认为是实验性模式,在进一步测试之前应谨慎使用。

版本3.5.9旨在成为版本3.6.0之前的最后一个稳定版本。3.6.0版将对sqlite3_vfs VFS层进行不兼容的更改, 以解决原始设计中的缺陷。这些不兼容性只会影响编写自己的自定义VFS层的程序员(通常是嵌入式设备生成器)。计划的VFS更改将比去年9月在3.4.2到3.5.0事务中发生的更改小得多 。

该版本的SQLite被认为是稳定的,可以用于生产。


2008-04-16-版本3.5.8

3.5.8版在虚拟机代码生成器中包括一些重要的新性能优化,包括常量子表达式因子分解和公共子表达式消除。此版本还创建了新的公共接口: sqlite3_randomness()提供对SQLite内部伪随机数生成器的访问,sqlite3_limit()允许在运行时基于每个连接设置大小限制,而 sqlite3_context_db_handle()是一种便捷例程允许应用程序定义的SQL函数实现检索其数据库连接句柄。

该版本的SQLite被认为是稳定的,可以用于生产。


2008-03-17-版本3.5.7

3.5.7版修复了一些较小的模糊错误,尤其是在自动配置生成的makefile中。升级是可选的。该版本的SQLite被认为是稳定的,可以用于生产。

2008-02-06-版本3.5.6

版本3.5.6修复了3.5.5中的次要回归问题-该回归与虚拟机向基于寄存器的设计的大规模更改无关。新虚拟机未报告任何问题。该版本的SQLite被认为是稳定的,可以用于生产。

2008-01-31-版本3.5.5

为了将内部虚拟机从基于堆栈的设计转换为基于寄存器的设计,版本3.5.5更改了SQLite核心源代码的8%以上。此更改将允许将来进行优化,并避免过去引起问题的整个堆栈溢出错误。尽管变化很大,但是广泛的测试发现新虚拟机中的错误为零,因此我们认为这是一个非常稳定的版本。

2007-12-14-版本3.5.4

版本3.5.4修复了UPDATE和DELETE中一个长期存在但不明显的错误,该错误可能导致数据库损坏。(请参阅票证#2832。)建议所有用户进行升级。

此版本还使对ORDER BY语句的处理符合标准SQL。从理论上讲,这可能会导致依赖于较旧的越野车行为的现有应用程序出现问题。有关更多信息,请参见票号#2822。


2007-12-12-SQLite联盟宣布

SQLite的联盟今天推出了与Mozilla的塞班作为创始成员。正如新闻稿所述,该联盟的目标是促进SQLite的持续活力和独立性。

2007-11-27-版本3.5.3

这是一个增量发行版,解决了一些小问题。升级是可选的。如果3.5.2或3.5.1版对您来说工作正常,则无需迫切需要将其更改为3.5.3。

下载页面上找到的预构建二进制文件和合并版本 包括FTS3全文本搜索扩展模块。我们是在实验的基础上进行的,并不保证将来会提供带有FTS3的预编译二进制文件。


2007-11-05-版本3.5.2

这是一个增量版本,它修复了一些小问题,添加了一些晦涩的功能,并提供了一些性能调整。升级是可选的。

实验性编译时选项 SQLITE_OMIT_MEMORY_ALLOCATION不再受支持。另一方面,现在可以编译SQLite,以便它为所有其动态内存分配需求使用静态数组,并且从不调用malloc。期望在将来的版本中看到对内存分配子系统的其他重大更改。


2007-10-04-版本3.5.1

修复了一个长期存在的错误,如果在事务中间发生磁盘已满错误,并且该事务未回滚,则可能导致数据库损坏。机票#2686。

新的VFS层是稳定的。但是,如有必要,我们仍然保留对VFS的接口定义进行调整的权利。


2007-09-04-版本3.5.0 Alpha

SQLite中的OS接口层和内存分配子系统已重新实现。已发布的API基本上未更改,但是(未发布的)OS接口已被广泛修改。实现自己的OS接口的应用程序将需要进行修改。有关详细信息,请参见 34to35.html

这是一个很大的变化。大约有10%的源代码已被修改。我们将此第一个版本称为“ alpha”,以便在冻结新设计之前为用户社区提供时间来测试和评估更改。


2007-08-13-版本3.4.2

在对soft_heap_limit 功能进行压力测试时 ,发现并修复了可能导致数据库损坏的错误。尽管此错误的后果很严重,但在典型的应用程序中将其击中的机会很少。仅在使用sqlite3_soft_heap_limit 接口时才建议升级 。

2007-07-20-版本3.4.1

此版本修复了VACUUM中的一个错误,该错误可能导致数据库损坏。该错误是在3.3.14版本中引入的 。建议所有用户升级。还包括一系列其他更多常规 增强功能和错误修复

2007-06-18-版本3.4.0

此版本修复了两个单独的错误,每个错误都可能导致数据库损坏。强烈建议升级。如果您必须继续使用旧版本的SQLite,请至少在CorruptionFollowingBusyError和票证#2418上了解如何避免这些错误。

此版本还对SQLite将要处理的内容的大小和数量增加了明确的限制。新限制可能会导致使用过大的字符串,BLOB,表或SQL语句的现有应用程序出现兼容性问题。可以在编译时增加新的限制,以解决出现的任何问题。但是,此版本的版本号是3.4.0而不是3.3.18,以便引起注意可能的不兼容性。

还有其他新功能,包括 增量BLOB I / O增量真空。有关 其他信息,请参见更改日志

2007-04-25-版本3.3.17

此版本修复了SQLite的前向兼容性逻辑中的一个错误,该错误在应为只读的情况下导致数据库变得不可读。仅当您计划部署到将来可能需要升级的产品时,才从3.3.16升级。对于日常使用,这可能并不重要。

2007-04-18-版本3.3.16

恢复了3.3.14中添加的性能改进,但错误地关闭了3.3.15中的性能改进。修复了一个错误,该错误阻止了如果UNIQUE列中为NULL值,则VACUUM无法运行。

2007-04-09-版本3.3.15

在3.3.14中引入的一个烦人的错误已得到修复。测试套件也有许多增强功能。

2007-04-02-版本3.3.14

此版本侧重于性能改进。如果使用GCC选项-O3(预编译的二进制文件使用-O2)重新编译合并,则根据工作量,性能可能会比3.3.13版提高35%或更多。此版本还增加了对 独占访问模式的支持。

2007-02-13-版本3.3.13

此版本修复了ORDER BY优化器中使用联接时可能发生的细微错误。也有一些小的增强。建议升级。

2007-01-27-版本3.3.12

先前版本的第一个已发布版本使用了错误的源文件集。因此,许多人下载了一个标记为“ 3.3.11”但实际上是3.3.10的版本。版本3.3.12已发布,以消除歧义。还修复了几个错误,并增强了 PRAGMA的完整性检查功能

2007-01-22-版本3.3.11

版本3.3.11修复了版本3.3.9中未能捕获的版本3.3.9中的其他一些问题。建议升级。

2007-01-09-版本3.3.10

版本3.3.10修复了先前版本引入的多个错误。建议升级。

2007-01-04-版本3.3.9

3.3.9版修复了一些错误,这些错误可能会在晦涩难懂且难以重现的情况下导致数据库损坏。有关详细信息,请参见Wiki中的DatabaseCorruption。此版本还添加了新的 sqlite3_prepare_v2() API,并在命令行Shell中包括重要的错误修复以及对查询优化器的增强。建议升级。

2006-10-09-版本3.3.8

3.3.8版增加了对使用FTS1模块的全文本搜索的支持。也有一些小错误修复。仅当您想尝试新的全文本搜索功能或3.3.7遇到问题时,才进行升级。

2006-08-12-版本3.3.7

版本3.3.7包括对可加载扩展和虚拟表的支持。但是这两个功能仍被认为是“测试版”,其API可能会在将来的版本中更改。此版本主要用于提供自3.3.6版本以来累积的次要错误修复程序。不需要升级。仅当遇到其中一个已解决的不起眼的错误或想要尝试新功能时,才这样做。

2006-06-19-关于SQLite的新书

Mike Owens的新书 《 SQLite权威指南》 现在可以从Apress获得。这些书涵盖了最新的SQLite内部结构以及PHP,Python,Perl,Ruby,Tcl和Java的本机C接口和绑定。受到推崇的。

2006-06-6-版本3.3.6

更改包括提高了对Windows病毒扫描程序的容忍度和更快的:memory:数据库。还修复了一些难以理解的错误。如果遇到问题,请升级。

2006-04-5-版本3.3.5

此版本修复了许多次要的错误和文档输入错误,并提供了一些次要的新功能和性能增强。仅在遇到问题或需要其中一项新功能时才进行升级。

2006-02-11-版本3.3.4

此版本修复了多个错误,包括可能导致多线程系统死锁的错误。在多线程环境中使用SQLite的任何人都应该升级。

2006-01-31-版本3.3.3稳定

在3.3.2版中没有发现重大问题,因此我们在此声明新的API和语言功能稳定并受支持。

2006-01-24-版本3.3.2 Beta

随着我们更接近于可投入生产的版本3.3.x,更多的错误修复和性能改进。

2006-01-16-版本3.3.1 Alpha

上周发布的Alpha版中发现的许多错误现已修复,该库再次运行得更快。

现在,只要连接在移动时没有锁,就可以在线程之间移动数据库连接。因此,现在支持维护数据库连接池并将其移交给临时工作线程的通用范例。请帮助测试此新功能。有关其他信息,请参见MultiThreading Wiki页面。


2006-01-10-版本3.3.0 alpha

3.3.0版增加了对CHECK约束,DESC索引,单独的REAL和INTEGER列亲和力,新的OS接口层设计以及许多其他更改的支持。该代码通过了回归测试,但仍应视为alpha。请报告任何问题。

版本3.3.0的文件格式已稍作更改,以支持降序索引和更有效的布尔值编码。SQLite 3.3.0将读取和写入使用SQLite 3的任何早期版本创建的旧数据库,但是SQLite 3.3.0版创建的数据库将无法被SQLite的早期版本读取或写入。对于那些极少数需要的情况,可以在编译时指定较旧的文件格式。


2005-12-19-版本3.2.8和2.8.17

这些版本包含对3.2.7和2.8.16的单行更改,以修复自2002年3月以来一直存在的错误以及版本2.4.0。如果多语句事务中的大型INSERT或UPDATE语句由于唯一性约束而失败,但是包含事务提交,则该错误可能会导致数据库损坏。

2005-09-24-版本3.2.7

此版本修复了一些较小的和难以理解的错误。仅在遇到问题时才进行升级。

2005-09-16-版本3.2.6-严重的错误修复

此版本修复了一个错误,如果1 GB或更大的数据库的VACUUM发生故障(可能导致磁盘空间不足或意外的断电),该错误将导致数据库损坏,并在以后回滚。

在此发行版中也是如此:ORDER BY和GROUP BY处理被重写为使用更少的内存。对COUNT(DISTINCT)的支持已添加。现在,优化程序可以在带有COLLATE NOCASE的列上使用LIKE运算符。


2005-08-27-版本3.2.5

此版本修复了新代码中的其他一些尚存的错误。我们希望此版本稳定并可以投入生产。

2005-08-24-版本3.2.4

此版本修复了新优化器中的一个错误,该错误在解析非常复杂的WHERE子句时可能导致段错误。

2005-08-21-版本3.2.3

此版本增加了ANALYZE命令,CAST运算符,并对查询优化器进行了许多非常重要的改进。有关其他信息,请参见 更改日志

2005-08-02-2005 SQLite开源奖

SQLite及其主要作者D. Richard Hipp荣获了 Google和O'Reilly颁发2005年开放源代码奖

2005-06-13-版本3.2.2

此版本包括许多小的错误修复,速度改进和代码大小减少。除非遇到问题或仅想升级,否则没有升级的理由。

2005-03-29-版本3.2.1

此版本修复了新的ALTER TABLE ADD COLUMN 命令中的内存分配问题 。

2005-03-21-版本3.2.0

版本3.2.0的主要目的是添加对ALTER TABLE ADD COLUMN的支持 。AOL开发人员支持并拥抱出色的开源软件,从而使新的ADD COLUMN功能成为可能。谢谢,美国在线!

3.2.0版还修复了在发行之前发现的一个晦涩但严重的错误。如果您有多语句事务,并且在该事务中由于约束而导致UPDATE或INSERT语句失败,那么您尝试回滚整个事务,则回滚可能无法正常进行。有关详细信息,请参见故障单#1171。建议所有用户升级。


2005-03-16-版本3.1.6

3.1.6版修复了一个严重错误,该错误可能会在将行插入具有约125列的表中时导致数据库损坏。此错误是在3.0.0版中引入的。有关更多信息,请参见故障单#1163。

2005-03-11-发布3.1.4和3.1.5版本

版本3.1.4修复了一个严重的错误,如果打开版本3.1.0的自动清理模式(默认情况下处于关闭状态)并且在事务内执行CREATE UNIQUE INDEX,但可能会导致数据库损坏,但是由于未建立索引列而失败独特。使用自动真空功能和唯一索引的任何人都应升级。

3.1.5版增加了通过在OS-X中禁用F_FULLFSYNC ioctl()的功能,方法是设置为“ PRAGMAynchronous = on”,而不是默认的“ PRAGMAynchronous = full”。尝试在3.1.4中添加此功能,但由于拼写错误而无法使用。


2005-02-19-版本3.1.3已发布

3.1.3版清除了3.1.2版中发现的一些小问题。

2005-02-15-发行版本2.8.16和3.1.2

VACUUM命令中的一个严重错误可能会导致数据库损坏,该错误已在2.x分支和3.x主行中得到修复。SQLite的所有先前版本中都存在此错误。即使您不太可能会遇到此错误,也建议所有用户升级。有关更多信息,请参见故障单#1116。

版本3.1.2也是3.1系列的第一个稳定版本。SQLite 3.1功能增加了对相关子查询,自动清理,自动增量,ALTER TABLE和其他增强功能的支持。有关3.1系列中可用更改的详细说明,请参见版本3.1.0发行说明


2005-02-01-发布3.1.1版(测试版)

网站上现已提供3.1.1版(测试版)。版本3.1.1与3.0系列完全向后兼容,并具有许多新功能,包括自动清理和相关子查询。 版本3.1.0的 发行说明同样适用于此发行版Beta。预计会在几周内稳定发布。

2005年1月21日-版本3.1.0(alpha)发布

3.1.0版(alpha)现在可以在网站上找到。版本3.1.0与3.0系列完全向后兼容,并具有许多新功能,包括自动清理和相关子查询。有关 详细信息,请参见 发行说明

这是一个Alpha版本。预计将在大约一周内发布Beta版,并在两周后发布首个稳定版本。


2004-11-09-SQLite在2004年国际PHP大会上

在2004年德国法兰克福举行的国际PHP大会上,有关SQLite的体系结构以及如何优化SQLite查询的主题是。 可以使用该演讲的 幻灯片

2004-10-11-版本3.0.8

SQLite的3.0.8版包含一些代码优化和较小的错误修复,并增加了对DEFERRED,IMMEDIATE和EXCLUSIVE事务的支持。这是一个增量版本。如果该版本适用于您,则没有理由从版本3.0.7升级。

2004-10-10-SQLite在 十一届Tcl / Tk年度会议上

本周在新奥尔良 举行的第11Tcl / Tk会议上,将有一个关于在Tcl / Tk中使用SQLite的演讲。 有关详细信息,请访问http://www.tcl-lang.org/community/tcl2004/。 演讲中有 幻灯片

2004-09-18-版本3.0.7

3.0版现已在多个项目中使用了几个月,没有太大困难。我们认为它稳定并且可以用于生产。

2004-09-02-版本3.0.6(测试版)

由于对sqlite3_step()的一些重要更改,我们决定在第一个“稳定”版本之前做一个额外的beta版本。如果在此版本中未发现严重问题,我们将在大约一周的时间内发布3.0版“稳定版”。

2004-08-29-版本3.0.5(测试版)

SQLite 3.0的第四个beta版本现已发布。下一个版本预计将被称为“稳定”。

2004-08-08-版本3.0.4(测试版)

SQLite 3.0的第三个beta版本现已发布。这个新的Beta版修复了多个错误,其中包括在SELECT挂起时执行DELETE时可能发生的数据库损坏问题。在3.0版正式发布之前,至少还会有一个Beta版。

2004-07-22-版本3.0.3(测试版)

SQLite 3.0的第二个beta版本现已发布。这个新的Beta版修复了许多错误,并增加了对页面大小不同的数据库的支持。下一个3.0版本可能会称为最终版本或稳定版本。

3.0版增加了对国际化的支持和新的更紧凑的文件格式。 细节。 API和文件格式自3.0.2起已得到修复。所有回归测试均通过(超过100000个测试),并且测试套件执行了95%以上的代码。

AOL开发人员支持并拥抱了出色的开源软件,部分原因使得SQLite 3.0版成为可能。


2004-07-22-版本2.8.15

SQLite 2.8.15版本是2.8系列的维护版本。2.8版继续通过错误修复进行维护,但是不会向2.8版添加任何新功能。此版本中的所有更改都是次要的。如果您没有问题,则没有理由升级。

2004-06-30-发布了3.0.2版(测试版)

SQLite 3.0的第一个beta版本现已发布。3.0版增加了对国际化的支持和新的更紧凑的文件格式。 细节。 从此版本开始,API和文件格式被冻结。所有回归测试均通过(超过100000个测试),并且测试套件执行了95%以上的代码。

AOL开发人员支持并拥抱了出色的开源软件,部分原因使得SQLite 3.0版成为可能。


2004-06-25-网站被黑客入侵

www.sqlite.org网站在2004-06-22左右被黑客入侵,因为首席SQLite开发人员未能正确修补CVS。有证据表明,攻击者无法将特权提升到用户“ cvs”之上。尽管如此,作为预防措施,整个网站已在新机器上从头开始重建。从2004-06-28开始,所有服务应恢复正常。

2004-06-18-版本3.0.0(alpha)发布

SQLite 3.0版的第一个Alpha版本可供公众审查和评论。3.0版通过使用UTF-16和用户定义的文本整理序列来增强国际化支持。现在可以直接存储BLOB,而无需进行编码。一种新的文件格式所导致的数据库要小25%(取决于内容)。代码也快了一点。尽管有许多新功能,但库占用空间仍小于240KB(x86,gcc -O1)。 附加信息

我们的目的是在2004-07-01冻结文件格式和API。鼓励用户仔细检查和评估此Alpha版本,并在该日期之前提交任何反馈。

在可预见的将来,将继续通过错误修复来支持2.8系列SQLite。


2004-06-09-发行了2.8.14版

SQLite 2.8.14版是稳定版2.8系列的修补程序版本。如果2.8.13正常运行,则没有理由升级。这只是一个错误修复版本。大多数开发工作都将在3.0.0版中进行,该版本即将发布。

2004-05-31-暂时禁用CVS访问

从2004-06-04开始,对CVS信息库的匿名访问将暂停2周。在CVS服务中断期间,每个人仍然可以下载预打包的源包,创建或修改故障单或查看更改日志。2004年6月18日将恢复对CVS存储库的完全开放访问。

2004-04-23-从SQLite版本3开始工作

SQLite版本3的工作已经开始。版本3是对C语言API和基础文件格式的重大更改,这将使SQLite能够更好地支持国际化。第一个Beta版计划于2004年7月1日发布。

计划将继续支持具有错误修复的SQLite 2.8版。但是所有新的开发都将在3.0版中进行。