SQLITE 发布历史

本页提供了对 SQLite 所做的更改的高级摘要。 有关更多详细信息,请参阅 http://www.sqlite.org/src/timeline 和 http://www.sqlite.org/src/timeline?t=release 中的 Fossil 签入日志。 请参阅年表,简要列出版本。

2023-05-16 (3.42.0)

添加 FTS5 安全删除命令。此选项会导致所有取证痕迹 删除内容时从 FTS5 倒排索引中删除。
增强 JSON SQL 函数以支持 JSON5 扩展。
现在允许在 sqlite3_initialize() 之后进行对 sqlite3_config() 的SQLITE_CONFIG_LOG和SQLITE_CONFIG_PCACHE_HDRSZ调用。
新的 sqlite3_db_config() 选项:SQLITE_DBCONFIG_STMT_SCANSTATUS 和SQLITE_DBCONFIG_REVERSE_SCANORDER。
查询规划器改进:
默认情况下启用“观看次数”优化。
避免计算子查询中未使用的列。
改进了下推优化。
CLI 的增强功能:
添加 --不安全测试命令行选项。如果没有此选项,一些 点命令(例如:“.testCtrl”)现在被禁用,因为这些命令 仅用于测试,并可能导致误用的故障。
允许命令“.log打开”和“.log关闭”,即使在 --safe 模式下也是如此。
“–”作为命令行参数表示所有后续参数 以“-”开头被解释为正常的非选项参数。
魔术参数 “:inf” 和 “:nan” 绑定到浮点文字 分别是无穷大和 NaN。
–utf8 命令行选项省略了所有与 Windows 控制台上的交互式会话和集的 MBCS 此类会话期间 UTF-8 I/O 的控制台代码页。 --utf8 选项在所有其他平台上都是无操作的。
添加应用程序定义的 SQL 函数具有相同名称的功能 作为连接关键字:交叉、完整、内部、左侧、自然、外部或右侧。
PRAGMA integrity_check的增强功能:
当 NaN 值存储在 NOT NULL 列中时检测并引发错误。
改进了错误消息输出在以下情况下标识 B 树的根页面 在 B 树中发现错误。
允许将会话扩展配置为从 缺少显式 ROWID 的表。
在日期和时间函数中添加了亚秒修饰符。
传递到 sqlite3_sleep() 的负值从此解释为 0。
JSON 数组和对象的最大递归深度从 2000 降低 到 1000。
扩展了内置的 printf() 函数,因此逗号选项现在适用于 除了整数转换之外,浮点转换。
其他错误修复和性能优化
散 列:

SQLITE_SOURCE_ID: 2023-05-16 12:36:15 831d0fb2836b71c9bc51067c49fee4b8f18047814f2ff22d817d25195cf350b0
SHA3-256 for sqlite3.c: 6aa3fadf000000625353bbaa1e83af114c40c240a0aa5a2c1c2aabcfc28d4f92
2023-03-22 (3.41.2)
对超过内存缓冲区结束的读取进行了多次修复 (注意:读取而不是写入)在以下情况下:
使用非标准SQLITE_ENABLE_STAT4编译时选项处理损坏的数据库文件时。
在 CLI 中,当 sqlite3_error_offset() 例程返回超出范围的值时 (另请参阅下面的 sqlite3_error_offset() 修复)。
在恢复扩展中。
在 FTS3 中处理损坏的数据库文件时。
修复 sqlite3_error_offset(),使其在以下情况下不会返回超出范围的值 报告与生成的列关联的错误。
查询优化器中针对导致不正确的问题的多个修复 奇怪的模糊器生成的查询的结果。
将页面缓存对象中的引用计数器大小增加到 64 位 确保计数器永远不会溢出。
修复由补丁版本 3.41.1 中的错误修复导致的性能回归。
修复了一些不正确的 assert() 语句。
散 列:

SQLITE_SOURCE_ID:2023-03-22 11:56:21 0d1fc92f94cb6b76bffe3ec34d69cffde2924203304e8ffc4155597af0c191da
SHA3-256 for sqlite3.c: c83f68b7aac1e7d3ed0fcdb9857742f024449e1300bfb3375131a6180b36cf7c

2023-03-10 (3.41.1)

提供编译时选项 -DHAVE_LOG2=0 和 -DHAVE_LOG10=0 以使 SQLite 在省略标准库函数 log2() 和 log10() 的系统上编译。
确保列 t1.x 的数据类型在 “将表 T1 创建为选择转换(7 作为整数)作为 X;””继续是 INT,而不是 NUM, 为了历史兼容性。
增强 PRAGMA integrity_check以检测何时在 索引记录。
修复用户社区报告的各种晦涩错误。有关详细信息,请参阅更改时间表。
散 列:

SQLITE_SOURCE_ID: 2023-03-10 12:13:52 20399f3eda5ec249d147ba9e48da6e87f969d7966a9a896764ca437ff7e737ff
SHA3-256 for sqlite3.c: d0d9db8425570f4a57def04fb8f4ac84f5c3e4e71d3d4d10472e3639c5fdf09f

2023-02-21 (3.41.0)

查询规划器改进:
在聚合查询中使用索引表达式 包括 GROUP BY 子句。
查询规划器提高了对索引何时 覆盖指数并相应地调整预测的运行时间。
查询规划器在使用协程方面更积极 而不是具体化子查询和视图。
针对内置表值函数 json_tree() 和 json_each() 的查询现在通常将“ORDER BY rowid”视为无操作。
增强查询规划器使用索引表达式的能力,即使表达式已被常量传播优化修改。 (请参阅论坛主题 0a539c7。
添加内置的 unhex() SQL 函数。
添加 base64 和 base85 应用程序定义的函数作为扩展和 将该扩展包含在 CLI 中。
添加 sqlite3_stmt_scanstatus_v2() 接口。(此接口仅是 如果使用 SQLITE_ENABLE_STMT_SCANSTATUS 编译 SQLite,则可用。
使用 sqlite3_deserialize() 创建的内存数据库现在报告其 文件名为空字符串,而不是“x”。
对 CLI 的更改:
添加新的 base64() 和 base85() SQL 函数
使用 SQLITE_ENABLE_STMT_SCANSTATUS 编译时,使用新的 sqlite3_stmt_scanstatus_v2() 接口增强了“解释查询计划”输出。
“.scanstats est”命令在配置文件中提供查询计划程序估计值。
继续提示指示输入当前是否在 字符串文本、标识符文本、注释、触发器定义等。
增强 --safe 命令行选项以禁止危险的 SQL 函数。
现在默认禁用 CLI 的双引号字符串错误功能 建立。旧用例可以在运行时使用 “.dbconfig dqs_dml on”和“.dbconfig dqs_ddl on” 命令。
增强 PRAGMA integrity_check 命令,以便它检测文本字符串何时 表等效于索引中的相同字符串,但不是逐字节相同。
增强 carray 表值函数,使其能够绑定 BLOB 对象。
添加了 sqlite3_is_interrupted() 接口。
对 sqlite3_prepare() 和类似内容的长时间运行的调用现在调用进度处理程序回调并对 sqlite3_interrupt() 做出反应。
增强了 sqlite3_vtab_in_first() 和 sqlite3_vtab_in_next() 函数,以便 它们可靠地检测是否在未选择的参数上调用它们 使用 sqlite3_vtab_in() 进行多值 IN 处理。 在这种情况下,它们返回SQLITE_ERROR而不是SQLITE_MISUSE。
解析器现在忽略右侧子查询周围的多余括号 的 IN 运算符,因此 SQLite 现在在这方面的工作方式与 PostgreSQL 相同。 以前,SQLite 将子查询视为带有隐含“LIMIT 1”的表达式。
向 sqlite3_file_control() API 添加了SQLITE_FCNTL_RESET_CACHE选项。
生成文件改进:
新的生成文件目标“sqlite3r.c”构建了一个合并,其中包括 恢复扩展。
新的生成文件针对“开发测试”和“发布测试”来运行 在办理登机手续和进行完整检查之前进行快速发育测试 分别发布测试。
其他性能增强。
散 列:

SQLITE_SOURCE_ID: 2023-02-21 18:09:37 05941c2a04037fc3ed2ffae11f5d2260706f89431f463518740f72ada350866d
SHA3-256 for sqlite3.c: 02bd9e678460946810801565667fdb8f0c29c78e51240512d2e5bb3dbdee7464
2022-12-28 (3.40.1)
将 --safe 命令行选项修复为 CLI 以使其正确禁止 使用可能导致有害副作用的 SQL 函数,如 writefile()。
修复 memsys5 备用内存分配器中潜在的无限循环。这 错误是由版本 3.39.0 中的性能优化引入的。
其他各种晦涩难懂的修复。
散 列:

SQLITE_SOURCE_ID:2022-12-28 14:03:47 df5c253c0b3dd24916e4ec7cf77d3db5294cc9fd45ae7b9c5e82ad8197f38a24
SHA3-256 for sqlite3.c: 4d6800e9032ff349376fe612e422b49ba5eb4e378fac0b3e405235d09dd366ab

2022-11-16 (3.40.0)

添加对将 SQLite 编译为 WASM 并在 Web 浏览器中运行它的支持。注意:WASM 构建及其接口 被视为“测试版”,如果需要,可能会进行细微更改 出现。我们预计将最终确定下一个版本的接口。
添加可能能够恢复某些内容的恢复扩展 从损坏的数据库文件。
查询规划器增强功能:
识别包含 63 列以上的表上的覆盖索引,其中 第 63 列以外的列用于查询和/或 由索引引用。
在可行的情况下提取表达式索引中包含的表达式值,而不是重新计算表达式。
NOT NULL 和 IS NULL 运算符(及其等效项)避免 从磁盘加载大字符串和 BLOB 值的内容。
避免具体化执行完全扫描的视图 正好一次。在计算视图行时使用和放弃这些行。
允许平展作为 右操作数的子查询 聚合查询中的左联接。
添加了一个名为 sqlite3_filename 的新 typedef,并用于表示 数据库文件的名称。各种接口是 修改为使用新的 typedef 而不是“char*”。此接口 更改应该是完全向后兼容的,尽管它可能会导致 重建某些旧版应用程序时的(无害)编译器警告。
添加 sqlite3_value_encoding() 接口。
安全增强:增强SQLITE_DBCONFIG_DEFENSIVE以禁止 更改schema_version。schema_version 在防御模式下变为只读。
PRAGMA integrity_check语句的增强功能:
具有 TEXT 相关性的非 STRICT 表中的列不应包含数值。
非严格表中具有数字亲和力的列不应 包含可转换为数字的 TEXT 值。
验证不带 ROWID 表的行顺序是否正确。
增强 VACUUM INTO 语句,使其遵循 PRAGMA 同步设置。
增强 sqlite3_strglob() 和 sqlite3_strlike() API,以便它们能够 接受其字符串参数的 NULL 指针,并且仍然生成合理的 结果。
提供新的SQLITE_MAX_ALLOCATION_SIZE编译时选项以限制 内存分配的大小。
更改SQLite内置伪随机数生成器(PRNG)使用的算法 从RC4到Chacha20。
允许两个或多个索引具有相同的名称,只要它们都在 单独的架构。
其他性能优化可减少约 1% 的 CPU 周期 用于典型工作负载。
散 列:

SQLITE_SOURCE_ID:2022-11-16 12:10:08 89c459e766ea7e9165d0beeb124708b955a4950d0f4792f457465d71b158d318
SHA3-256 for sqlite3.c: ab8da6bc754642989e67d581f26683dc705b068cea671970f0a7d32cfacbad19

2022-09-29 (3.39.4)

在 Windows 上修复构建,以便它与 -DSQLITE_OMIT_AUTOINIT
修复 btree 平衡器中长期存在的问题,在极少数情况下,该问题可能会 如果应用程序使用应用程序定义的页面缓存,则会导致数据库损坏。
增强SQLITE_DBCONFIG_DEFENSIVE,以便在触发器正文中的一个或多个语句写入时不允许 CREATE TRIGGER 语句 到影子表中。
修复内存分配的大小计算中可能的整数溢出 在 FTS3 中。
修复了 ICU 扩展中 sqlite3_set_auxdata() 接口的误用。
散 列:

SQLITE_SOURCE_ID:2022-09-29 15:55:41 a29f9949895322123f7c38fbe94c649a9d6e6c9cd0c3b41c96d694552f26b309
SHA3-256 for sqlite3.c: f65082298127e2ddae6539beb94f5204b591df64ba2c7da83c7d0faffd6959d8

2022-09-05 (3.39.3)

在影响两个或多个数据库的 DML 语句上使用语句日志 行(如果语句使用可能中止的 SQL 函数)。请参阅论坛主题 9b9e4716c0d7bbd1。
使用互斥锁来保护 PRAGMA temp_store_directory和 PRAGMA data_store_directory语句,即使它们已弃用且 记录为不是线程安全的。请参阅论坛帖子 719a11e1314d1c70。
其他错误和警告修复。有关详细信息,请参阅时间表。
散 列:

SQLITE_SOURCE_ID: 2022-09-05 11:02:23 4635f4a69c8c2a8df242b384a992aea71224e39a2ccab42d8c0b0602f1e826e8
SHA3-256 for sqlite3.c: 2fc273cf8032b601c9e06207efa0ae80eb73d5a1d283eb91096c815fa9640257
2022-07-21 (3.39.2)
修复查询规划器中与重新排列关联的性能回归 存在左联接时的 FROM 子句项的顺序。
应用CVE-2022-35737、铬错误1343348和1345947、论坛帖子 3607259d3c 和 内部测试发现的其他小问题。
散 列:

SQLITE_SOURCE_ID: 2022-07-21 15:24:47 698edb77537b67c41adc68f9b892db56bcf9a55e00371a61420f3ddd668e6603
SHA3-256 for sqlite3.c: bffbaafa94706f0ed234f183af3eb46e6485e7e2c75983173ded76e0da805f11

2022-07-13 (3.39.1)

修复使用包含复合的视图的查询的错误结果 选择其中只有一个臂包含右联接,并且视图不包含 包含视图的查询的第一个 FROM 子句词。论坛帖子 174afeae5734d42d。
修复一些无害的编译器警告。
修复了 ALTER TABLE RENAME 长期存在的只能出现的问题 如果 sqlite3_limit(SQLITE_LIMIT_SQL_LENGTH) 设置为非常小的值。
修复 FTS3 中长期存在的问题,该问题仅在使用 SQLITE_ENABLE_FTS3_PARENTHESIS编译时选项。
修复构建,SQLITE_OMIT_WINDOWFUNC SQLITE_DEBUG以便在 同时。
修复 REGEXP 扩展的初始前缀优化,使其正常工作 即使前缀包含需要 3 字节 UTF8 的字符,也正确 编码。
增强虚拟表sqlite_stmt,使其缓冲其所有输出。
散 列:

SQLITE_SOURCE_ID:2022-07-13 19:41:41 7C16541a0efb3985578181171c9f2bb3fdc4bad6a2ec85c6e31ab96f3eff201f
SHA3-256 适用于 sqlite3.c: 6d13fcf1c31133da541d1eb8a83552d746f39b81a0657bd4077fed0221749511

2022-06-25 (3.39.0)

添加(早就应该)对 RIGHT 和完全外部联接的支持。
添加新的二进制比较运算符 与 IS 不同 并且 不同于 等效于 IS 和 NOT ,为了兼容 PostgreSQL 和 SQL 标准。
从 sqlite3_vtab_distinct() 接口添加新的返回代码(值“3”),该代码指示同时具有 DISTINCT 和 ORDER BY 的查询 第。
添加了 sqlite3_db_name() 接口。
unix 操作系统接口解析数据库中的所有符号链接 文件名,用于在 文件已打开。 如果 SQLITE_OPEN_NOFOLLOW 标志与 sqlite3_open_v2() 或类似标志一起使用,则如果路径的任何元素为 符号链接。
推迟具体化视图,直到具体化 实际上是需要的,从而避免了在实现转向时不必要的工作 永远不用。
现在允许在任何聚合查询上使用 SELECT 语句的 HAVING 子句, 甚至没有 GROUP BY 子句的查询。
许多微优化共同将 CPU 周期减少了约 2.3%。
散 列:

SQLITE_SOURCE_ID:2022-06-25 14:57:57 14e166f40dbfa6e055543f8301525f2ca2e96a02a57269818b9e69e162e98918
SHA3-256 for sqlite3.c: d9c439cacad5e4992d0d25989cfd27a4c4f59a3183c97873bc03f0ad1aa78b7a

2022-05-06 (3.38.5)

修复 3.38.4 版本的 CLI 中的错误。
散 列:

SQLITE_SOURCE_ID: 2022-05-06 15:25:27 78d9c993d404cdfaa7fdd2973fa1052e3da9f66215cff9c5540ebe55c407d9fe
SHA3-256 for sqlite3.c: b05ef42ed234009b4b3dfb36c5f5ccf6d728da80f25ee560291269cf6cfe635f

2022-05-04 (3.38.4)

修复版本添加的布隆过滤器下拉优化中的字节码问题 3.38.0,其中字节码中的错误导致字节码引擎输入 下拉优化遇到 NULL 键时的无限循环。论坛线程 2482b32700384a0f。
其他小补丁。请参阅时间表 详。
散 列:

SQLITE_SOURCE_ID: 2022-05-04 15:45:55 d402f49871152670a62f4f28cacb15d814f2c1644e9347ad7d258e562978e45e
SHA3-256 for sqlite3.c: e6a50effb021858c200e885664611ed3c5e949413ff2dca452ac7ee336b9de1d

2022-04-27 (3.38.3)

修复查询计划器在优化自动索引方面过于激进的情况 和布隆过滤器构造,使用不适当的 ON 子句术语来限制 自动索引或布隆过滤器的大小,并导致 输出。论坛线程 0d3200f4f3bcd3a3。
其他小补丁。请参阅时间表 详。
散 列:

SQLITE_SOURCE_ID: 2022-04-27 12:03:15 9547e2c38a1c6f751a77d4d796894dec4dc5d8f5d79b1cd39e1ffc50df7b3be4
SHA3-256 for sqlite3.c: d4d66feffad66ea82073fbb97ae9c84e3615887ebc5168226ccee28d82424517

2022-03-26 (3.38.2)

通过新的布隆过滤器优化修复用户发现的问题 在使用 WHERE 进行左连接时可能会导致答案不正确 子句约束,表示右侧表上的一列 左联接为空。请参阅论坛帖子 031e262a89b6a9d2。
其他小补丁。请参阅时间表 详。
散 列:

SQLITE_SOURCE_ID:2022-03-26 13:51:10 d33c709cc0af66bc5b6dc6216eba9f1f0b40960b9ae83694c986fbf4c1d6f08f
SHA3-256 for sqlite3.c: 0fbac6b6999f894184899431fb77b9792324c61246b2a010d736694ccaa6d613

2022-03-12 (3.38.1)

修复可能导致的新布隆过滤器优化问题 一些晦涩难懂的查询以获得不正确的答案。
修复日期和时间函数的本地时间修饰符,以便 它保留秒的小数部分。
修复sqlite_offset SQL功能,使其即使正常工作 在极端情况下,例如当参数是虚拟列或 列。
修复虚拟表上的行值 IN 运算符约束,以便它们 即使虚拟表实现依赖于字节码也能正常工作 筛选不满足约束的行。
对 assert() 语句、测试用例和文档的其他小修复。 有关详细信息,请参阅源代码时间线。
散 列:

SQLITE_SOURCE_ID: 2022-03-12 13:37:29 38c210fdd258658321c85ec9c01a072fda3ada94540e3239d29b34dc547a8cbc
SHA3-256 for sqlite3.c: 262ba071e960a8a0a6ce39307ae30244a2b0dc9fe1c4c09d0e1070d4353cd92c

2022-02-22 (3.38.0)

添加了 -> 和 ->> 运算符,以便更轻松地处理 JSON。 新的运算符与MySQL和PostgreSQL兼容。
JSON 函数现在是内置的。不再需要 使用 -DSQLITE_ENABLE_JSON1 编译时选项启用 JSON 支持。默认情况下,JSON 处于启用状态。使用 新的 -DSQLITE_OMIT_JSON 编译时选项。
日期和时间函数的增强功能:
添加了 unixepoch() 函数。
添加了自动修改器和儒略日修改器。
将 printf() SQL 函数重命名为 format() 以获得更好的效果 兼容性。原始 printf() 名称保留为别名 用于向后兼容。
添加了 sqlite3_error_offset() 接口,有时可以 帮助将 SQL 错误定位为输入中的特定字符 SQL 文本,以便应用程序可以提供更好的错误消息。
增强了虚拟表的接口,如下所示:
添加了 sqlite3_vtab_distinct() 接口。
添加了 sqlite3_vtab_rhs_value() 接口。
添加了新的运算符类型SQLITE_INDEX_CONSTRAINT_LIMIT和SQLITE_INDEX_CONSTRAINT_OFFSET。
添加了 sqlite3_vtab_in() 接口(和相关)以启用 一个虚拟表,用于同时处理所有 IN 运算符约束, 而不是处理右侧的每个值 IN 运算符单独。
CLI 增强功能:
增强了列式输出模式以正确处理选项卡 和嵌入文本中的换行符。
添加了“–换行 N”、“–自动换行”和“–quote”等选项 到柱状输出模式。
添加了 .mode qbox 别名。
.import 命令会自动消除列名的歧义。
使用新的 sqlite3_error_offset() 接口提供更好的 错误消息。
查询规划器增强功能:
使用布隆过滤器可加快大型分析查询的速度。
使用平衡合并树评估 UNION 或 UNION ALL 具有 ORDER BY 子句的复合 SELECT 语句。
ALTER TABLE 语句更改为静默忽略 sqlite_schema 表中在 PRAGMA writable_schema=ON 时不解析的条目。
散 列:

SQLITE_SOURCE_ID: 2022-02-22 18:58:40 40fa792d359f84c3b9e9d6623743e1a59826274e221df1bde8f47086968a1bab
SHA3-256 for sqlite3.c: a69af0a88d59271a2dd3c846a3e93cbd29e7c499864f6c0462a3b4160bee1762

2022-01-06 (3.37.2)

修复引入的错误 在版本 3.35.0 (2021-03-12) 中,如果在 PRAGMA temp_store=MEMORY 模式下回滚保存点,可能会导致数据库损坏, 并进行其他更改,然后提交外部事务。入住 73c2b50211d3ae26
修复了“删除级联”和“更新级联”的长期问题 其中用于实现级联更改的字节码缓存 在本地 DDL 更改后未重置。签到5232c9777fe4fb13。
其他不应影响生产版本的小修复。
散 列:

SQLITE_SOURCE_ID: 2022-01-06 13:25:41 872ba256cbf61d9290b571c0e6d82a20c224ca3ad82971edc46b29818d5d17a0
SHA3-256 for sqlite3.c: 1bb01c382295cba85ec4685cedc52a7477cdae71cc37f1ad0f48719a17af1e1e

2021-12-30 (3.37.1)

修复了版本 3.35.0 的 UPSERT 增强功能引入的错误,该错误 可能导致为某些模糊但有效的字节码生成不正确的字节码 SQL,可能导致空指针取消引用。
修复了读取损坏的数据库文件时可能发生的 FTS5 中的 OOB 读取。
改进了 CLI 中 --safe 选项的健壮性。
对 assert() 语句和测试用例的其他小修复。
散 列:

SQLITE_SOURCE_ID: 2021-12-30 15:30:28 378629bf2ea546f73eee84063c5358439a12f7300e433f18c9e1bddd948dea62
SHA3-256 for sqlite3.c: 915afb3f29c2d217ea0c283326a9df7d505e6c73b40236f0b33ded91f812d174

2021-11-27 (3.37.0)

STRICT 表提供了数据类型管理的规定性样式, 对于喜欢这种东西的开发人员。
添加包含 CHECK 约束的列或包含 NOT NULL 约束的生成列时, “更改表添加”列现在检查新约束 数据库中预先存在的行,只有在没有约束的情况下才会继续 被违反。
添加了 PRAGMA table_list语句。
CLI 增强功能:
添加 .connection 命令,允许 CLI 保留多个数据库 连接同时打开。
添加 --safe 命令行选项,该选项禁用点命令和 SQL 语句,这些命令和语句可能会导致扩展的副作用 超出命令行上命名的单个数据库文件。
读取 SQL 语句时的性能改进 跨越许多行。
添加了 sqlite3_autovacuum_pages() 接口。
sqlite3_deserialize() 没有也从未为 TEMP 工作 数据库。该限制现在在文档中注明。
查询计划器现在省略了子查询和视图上的 ORDER BY 子句 如果删除这些子句不会更改查询的语义。
修改generate_series表值函数扩展,以便 现在需要第一个参数(“START”)。这样做是为了 演示如何使用所需参数编写表值函数。 可以使用旧行为 -DZERO_ARGUMENT_GENERATE_SERIES 编译时选项。
添加了新的 sqlite3_changes64() 和 sqlite3_total_changes64() 接口。
向 sqlite3_open_v2() 添加了SQLITE_OPEN_EXRESCODE标志选项。
使用较少的内存来保存数据库架构。
散 列:

SQLITE_SOURCE_ID: 2021-11-27 14:13:22 bd41822c7424d393a30e92ff6cb254d25c26769889c1499a18a0b9339f5d6c8a
SHA3-256 for sqlite3.c: a202a950ab401cda052e81259e96d6e64ad91faaaaf5690d769f64c2ab962f27

2021-06-18 (3.36.0)

改进了“解释查询计划”输出,使其更容易 理解。
跳过令牌开头的字节顺序标记,就好像它们一样 是空白。
任何尝试访问 VIEW 或子查询的 rowid 时都会引发错误。 以前,VIEW 的 rowid 是不确定的,并且通常是 NULL。 -DSQLITE_ALLOW_ROWID_IN_VIEW 编译时选项可用于恢复 需要它的应用程序的旧行为。
sqlite3_deserialize() 和 sqlite3_serialize() 接口现在是 默认启用。-DSQLITE_ENABLE_DESERIALIZE 编译时选项是 不再需要。相反,有一个新的 -DSQLITE_OMIT_DESERIALIZE 编译时选项来省略这些接口。
“memdb”VFS 现在允许在 同一进程中的多个数据库连接,只要 数据库名称以“/”开头。
撤消存在到传入优化(SQLite 8.3.35 更改日志中的第 0b 项) 因为发现它更频繁地减慢查询速度而不是加速查询速度。
改进常量传播优化,使其适用于 非联接查询。
正则表达式扩展是 现在包含在 CLI 版本中。
散 列:

SQLITE_SOURCE_ID: 2021-06-18 18:36:39 5C9a6c06871cb9fe42814af9c039eb6da5427a6ec28f187af7ebfb62eafa66e5
SHA3-256 for sqlite3.c: 2a8e87aaa414ac2d45ace8eb74e710935423607a8de0fafcb36bbde5b952d157

2021-04-19 (3.35.5)

修复新的“更改表删除列”功能中的缺陷,这些功能可以 损坏数据库文件。
修复可能导致错误查询优化器模糊的问题 查询结果。
散 列:

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

2021-04-02 (3.35.4)

修复由 标识的查询规划器优化中的缺陷 上文项目8b。票证 de7db14784a08053。
修复新的返回语法中的缺陷。票证 132994c8b1063bfb。
修复新的返回功能,以便在以下情况之一时引发错误 RETURN 子句中的术语引用未知表,而不是 默默地忽略了这个错误。
修复与聚合函数处理关联的断言 被下推优化错误触发。
散 列:

SQLITE_SOURCE_ID: 2021-04-02 15:20:15 5d4c65779dab868b285519b19e4cf9d451d50c6048f06f653aa701ec212df45e
SHA3-256 for sqlite3.c: 528b8a26bf5ffd4c7b4647b5b799f86e8fb1a075f715b87a414e94fba3d09dbe

2021-03-26 (3.35.3)

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

SQLITE_SOURCE_ID: 2021-03-26 12:12:52 4C5E6C200ADC8AFE0814936C67A971EFC516d1BD739CB620235592F18F40Be2A
SHA3-256 for sqlite3.c: 91ca6c0a30ebfdba4420bb35f4fd9149d13e45fc853d86ad7527db363e282683

2021-03-17 (3.35.2)

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

SQLITE_SOURCE_ID: 2021-03-17 19:07:21 ea80f3002f4120f5dcee76e8779dfdc88e1e096c5cdd06904c20fd26d50c3827
SHA3-256 for sqlite3.c: e8edc7b1512a2e050d548d0840bec6eef83cc297af1426c34c0ee8720f378a11

2021-03-15 (3.35.1)

修复新“删除”列中的错误 在索引和索引中引用的列上使用时的功能 定义。
改进 CLI 中 .dump 命令的内置文档。
散 列:

SQLITE_SOURCE_ID: 2021-03-15 16:53:57 AEA12399BF1FDC76AF43499d4624C3AFA17C3E6C2459B71C195804BB98def66A
SHA3-256 for sqlite3.c: fc79e27fd030226c07691b7d7c23aa81c8d46bc3bef5af39060e1507c82b0523

2021-03-12 (3.35.0)

添加了内置的 SQL 数学函数()。(需要 -DSQLITE_ENABLE_MATH_FUNCTIONS 编译时选项。
添加了对更改表删除列的支持。
概括性 UPSERT:
允许按顺序计算多个 ON CONFLICT 子句,
最后的 ON CONFLICT 条款可以省略冲突目标和 但仍使用“执行更新”。
在 DELETE、INSERT 和 UPDATE 语句上添加对 RETURN 子句的支持。
在包含非常大的数据库上运行 VACUUM 时使用较少的内存 文本或 BLOB 值。不再需要保存整个文本 或一次性在内存中全部使用 BLOB。
添加对“实例化”和“未实例化”提示的支持,当 指定公用表表达式。默认行为为 以前未具体化,但现在更改为具体化 多次使用的 CTE。
修改SQLITE_DBCONFIG_ENABLE_TRIGGER和SQLITE_DBCONFIG_ENABLE_VIEW设置,以便它们仅控制触发器和视图 在主数据库架构或附加的数据库架构中,而不是在 临时架构。始终允许 TEMP 触发器和视图。
查询规划器/优化器改进:
增强了最小/最大优化,使其工作得更好 使用 IN 运算符OP_SeekScan和 以前的版本。
尝试处理 WHERE 子句中的 EXISTS 运算符,就好像 他们是 IN 运算符,在这是有效转换的情况下 并且似乎可能会提高性能。
允许平展 UNION ALL 子查询,即使父查询是联接。
如果适用,在 WHERE 子句中的 IS not NULL 表达式上使用索引, 即使禁用了 STAT4。
形式为“x IS NULL”或“X IS NOT NULL”的表达式可以简单地转换为 FALSE 或 TRUE,如果“x”是具有“NOT NULL”约束且不是 涉及外部联接。
避免检查 UPDATE 语句上的外键约束,如果 UPDATE 这样做 不修改与外键关联的任何列。
允许将 WHERE 术语下推到子查询中 包含窗口函数, 只要 WHERE 项完全由常量和表达式副本组成 在子查询中所有窗口函数的 PARTITION BY 子句中找到。
CLI 增强功能:
增强“.stats”命令以接受新参数“stmt”和 “vmstep”,导致准备语句统计信息,并且仅 分别显示虚拟机步骤计数。
添加“.filectrl data_version”命令。
增强“.once”和“.output”命令,以便如果目标参数 以“|”开头(指示输出被重定向到管道中)然后 参数不需要引用。
错误修复:
修复了处理 语法不正确的 SELECT 语句,带有相关的 WHERE 子句和“具有 0”子句。(在 3.34.1 补丁版本中也已修复。
修复了版本 3.33.0 的 IN 运算符优化中可能导致错误答案的错误。
修复 LIKE 运算符的错误答案,如果模式以“%”结尾并且在那里 是一个“ESCAP’_'”子句。
散 列:

SQLITE_SOURCE_ID: 2021-03-12 15:10:09 acd63062eb06748bfe9e4886639e4f2b54ea6a496a83f10716abbaba4115500b
SHA3-256 for sqlite3.c: 73a740d881735bef9de7f7bce8c9e6b9e57fe3e77fa7d76a6e8fc5c262fbaedf

2021-01-20 (3.34.1)

修复了在处理同时使用两者的子查询时释放后使用的潜在错误 一个相关的 WHERE 子句和一个“具有 0”子句,其中父子句 查询是一个聚合。
修复文档拼写错误
修复扩展中的小问题。
散 列:

SQLITE_SOURCE_ID: 2021-01-20 14:10:07 10e20c0b43500cfb9bbc0eaa061c57514f715d87238f4d835880cd846b9ebd1f
SHA3-256 for sqlite3.c: 799a7be90651fc7296113b641a70b028c142d767b25af1d0a78f93dcf1a2bf20

2020-12-01 (3.34.0)

添加了sqlite3_txn_state用于报告当前 数据库连接的事务状态。
增强递归公用表表达式以支持两个或更多 递归术语,就像 SQL Server 所做的那样,因为这有助于使针对图形的查询更易于编写和执行。
改进了有关检查约束失败的错误消息。
CLI 增强功能:
.read dot-命令现在除了接受管道之外 文件名。
在 .dump dot-command 中添加了选项 --data-only 和 --nosys。
在 .schema dot-command 中添加了 --nosys 选项。
表名引用适用于 .import dot-命令。
generate_series(开始,结束,步长)表值函数 扩展现在内置于 CLI 中。
.databases dot-command现在显示每个数据库的状态 由 sqlite3_db_readonly() 和 sqlite3_txn_state() 确定的文件。
添加了设置 .mode 选项卡的 --tabs 命令行选项。
如果文件名为其参数的文件,则 --init 选项报告错误 无法打开。–init 选项现在也尊重 --bail 选项。
查询规划器改进:
改进了运行 DISTINCT 运算符的成本估算。
使用多列索引执行更新或删除时,其中 索引中只有少数较早的列对 索引查找,推迟执行主表查找,直到毕竟 已评估 WHERE 子句约束,以防 约束可以由索引的后面未使用的条款涵盖, 从而避免不必要的主表搜索。
新的OP_SeekScan操作码用于提高 约束后面的列时的多列索引查找 由 IN 运算符提供。
“立即开始”和“开始独占”命令现在甚至可以工作 如果一个或多个附加的数据库文件是只读的。
增强的 FTS5 以支持三元组索引。
改进了 WAL 模式锁定基元在以下情况下的性能 有数百个连接都访问同一个数据库文件 立即。
增强了 carray() 表值函数以包含单参数 使用辅助 sqlite3_carray_bind() 接口绑定的表单。
substr() SQL 函数现在也可以称为 “substring()” 与 SQL Server 的兼容性。
语法图现在实现为 Pikchr 脚本并呈现 作为 SVG,以提高易读性和易于维护。
散 列:

SQLITE_SOURCE_ID: 2020-12-01 16:14:00 a26b6597e3ae272231b96f9982c3bcc17ddec2f2b6eb4df06a224b91089fed5b
SHA3-256 for sqlite3.c: fbd895b0655a337b2cd657675f314188a4e9fe614444cc63dfeb3f066f674514

2020-08-14 (3.33.0)

支持遵循PostgreSQL语法的UPDATE FROM。
将数据库文件的最大大小增加到 281 TB。
扩展了 PRAGMA integrity_check 语句,以便可以选择 仅限于验证单个表及其索引,而不是 整个数据库文件。
添加了用于执行任意精度十进制算术的十进制扩展。
IEEE 754 扩展的增强功能,用于处理 IEEE 754 二进制 64 号码。
CLI 增强功能:
添加了四种新的输出模式:“盒子”、“json”、“降价”, 和“表”。
“列”输出模式自动将列扩展到 包含最长的输出行并自动转动 “.header”(如果之前未设置)。
“引号”输出模式支持“.分隔符”
十进制扩展名和 ieee754 扩展名内置于 CLI 中
查询规划器改进:
添加查找 使用索引 BY 的查询的完整索引扫描查询计划,以前会因“无查询解决方案”而失败。
做得更好 检测丢失、不完整和/或狡猾的sqlite_stat1数据,并生成良好的查询计划,尽管 误传。
改进了查询的性能,例如“从 t WHERE y IN (?,?,?)中选择最小 (x) ” 假设索引在 t(x,y) 上。
在 WAL 模式下,如果编写器崩溃并使 shm 文件处于不一致状态 状态,后续事务现在能够恢复 SHM 文件,即使 存在活动的读取事务。在此增强之前,shm 文件恢复 这种情况将导致SQLITE_PROTOCOL错误。
散 列:

SQLITE_SOURCE_ID: 2020-08-14 13:23:32 fca8dc8b578f215a969cd899336378966156154710873e68b3d9ac5881b0ff3f
SHA3-256 for sqlite3.c: d00b7fffa6d33af2303430eaf394321da2960604d25a4471c7af566344f2abf9

2020-06-18 (3.32.3)

各种小错误修复,包括对工单 8f157e8010b22af0、9fb26d37cefaba40、e367f31901ea8700、b706351ce2ecf59a、7c6d876f84e6e7e2 和 c8d3b9f0a750a529 的修复。
散 列:

SQLITE_SOURCE_ID: 2020-06-18 14:00:33 7ebdfa80be8e8e73324b8d66b3460222eb74c7e9dfd655b48d6ca7e1933cc8fd
SHA3-256 for sqlite3.c: b62b77ee1c561a69a71bb557694aaa5141f1714c1fff6cc1ba8aa8733c92d4f52
2020-06-04 (3.32.2)
修复了字节码引擎中长期存在的错误,该错误可能导致 COMMIT 命令报告为成功,而实际上它失败了 来承诺。票号 810dc8038872e212
散 列:

SQLITE_SOURCE_ID: 2020-06-04 12:58:43 EC02243ea6CE33B090870AE55ab8aa2534b54d216d45c4aa2fdbb00e86861e8c
SHA3-256 for sqlite3.c: f17a2a57f7eebc72d405f3b640b4a49bcd02364a9c36e04feeb145eccafa3f8d

2020-05-25 (3.32.1)

修复了两个允许恶意 SQL 语句的长期错误 使运行 SQLite 的进程崩溃。这些错误已公布 由第三方在 24.3.32 发布后约 0 小时提供,但 不特定于 3.32.0 版本。
其他次要的编译器警告修复等等。
散 列:

SQLITE_SOURCE_ID: 2020-05-25 16:19:56 0c1fcf4711a2e66c813aed38cf41cd3e2123ee8eb6db98118086764c4ba83350
SHA3-256 for sqlite3.c: f695ae21abf045e4ee77980a67ab2c6e03275009e593ee860a2eabf840482372

2020-05-22 (3.32.0)

添加了对使用 PRAGMA analysis_limit 命令进行近似分析的支持。
添加了字节码虚拟表。
将校验和 VFS 填充程序添加到运行时可加载程序集 源代码树中包含的扩展。
添加了 iif() SQL 函数。
INSERT 和 UPDATE 语句现在始终在计算 CHECK 约束之前应用列相关性。此错误修复可以在 理论,给非正统的遗留数据库带来问题 检查约束,需要插入的输入类型 与声明的列类型不同。有关更多信息,请参阅票证 86ba67afafded936。
添加了sqlite3_create_filename()、sqlite3_free_filename(), 和 sqlite3_database_file_object() 接口,以更好地支持 VFS 填充程序实现。
将参数数的默认上限从 999 增加到 32766。
添加了 UINT 整理序列的代码作为可选的可加载扩展。
CLI 的增强功能:
向 .import 命令添加选项:–csv, --ascii, --skip
.dump 命令现在接受多个 LIKE 模式参数 并输出所有匹配表的联合。
在调试版本中添加 .oom 命令
将 --bom 选项添加到 .excel、.output 和 .once 命令中。
增强 .filectrl 命令以支持 --schema 选项。
自动加载 UINT 整理序列扩展
LIKE 运算符的 ESCAPE 子句现在覆盖通配符 字符,以便行为与 PostgreSQL 所做的相匹配。
SQLITE_SOURCE_ID:2020-05-22 17:46:16 5998789c9c744bce92e4cff7636bba800a75574243d6977e1fc8281e360f8d5a
SHA3-256 for sqlite3.c: 33ed868b21b62ce1d0352ed88bdbd9880a42f29046497a222df6459fc32a356f

2020-01-27 (3.31.1)

还原仅供内部使用的 SQLite 数据结构的数据布局。 使用 SQLite 的应用程序不应引用内部 SQLite 数据结构,但无论如何有些都这样做,并且对这样的一种更改 3.30.0中的数据结构打破了流行和广泛部署 应用。至少暂时恢复SQLite中的更改, 为行为异常的应用程序的开发人员提供时间来修复其代码。
修复 sqlite3ext.h 头文件中阻止 sqlite3_stmt_isexplain() 和 sqlite3_value_frombind() 接口的拼写错误 从运行时可加载扩展调用。
散 列:

SQLITE_SOURCE_ID: 2020-01-27 19:55:54 3BFA9cc97da10598521b342961df8f5f68c7388fa117345eeb516eaa837bb4d6
SHA3-256 for sqlite3.c: de465c64f09529429a38cbdf637acce4dfda6897f93e3db3594009e0fed56d27

2020-01-22 (3.31.0)

添加对生成列的支持。
添加 sqlite3_hard_heap_limit64() 接口和相应的 PRAGMA hard_heap_limit 命令。
增强function_list杂注以显示每个参数的数量 函数、函数类型(标量、聚合、窗口)和函数 属性标志SQLITE_DETERMINISTIC、SQLITE_DIRECTONLY、SQLITE_INNOCUOUS和/或SQLITE_SUBTYPE。
将聚合模式功能添加到 DBSTAT 虚拟表。
将 SQLITE_OPEN_NOFOLLOW 选项添加到 sqlite3_open_v2() 中 防止 SQLite 打开符号链接。
为 JSON 函数路径参数添加了“#-N”数组表示法。
添加了SQLITE_DBCONFIG_TRUSTED_SCHEMA连接设置,即 也可通过新的trusted_schema编译指示和编译时进行控制 使用 -DSQLITE_TRUSTED_SCHEMA 编译时选项。
添加了 API sqlite3_filename_database()、sqlite3_filename_journal() 和 sqlite3_filename_wal(),它们对专用扩展很有用。
添加 sqlite3_uri_key() 接口。
升级了 sqlite3_uri_parameter() 函数,使其与 除数据库文件名外的回滚日志或 WAL 文件名。
提供标记应用程序定义的 SQL 函数的功能 新属性SQLITE_INNOCUOUS或SQLITE_DIRECTONLY。
向 sqlite3_vtab_config() 添加新谓词,以便 xConnect 方法 的虚拟表可以将虚拟表声明为 SQLITE_VTAB_INNOCUOUS 或 SQLITE_VTAB_DIRECTONLY。
对 sqlite3_interrupt() 的响应速度更快。
添加了 uuid.c 扩展模块 实现用于处理 RFC-4122 UUID 的函数。
后备内存分配器得到增强,可支持两个独立的内存 每个池中具有不同大小分配的池。这允许更多内存 后备处理的分配,同时减少 每个连接的堆内存使用量从 48KB 降至 120KB。
legacy_file_format杂注已停用。它现在是一个无操作。取而代之的是, sqlite3_db_config() 的SQLITE_DBCONFIG_LEGACY_FILE_FORMAT选项是 提供。legacy_file_format杂注被停用,因为 (1) 它是 很少有用,(2)它与具有以下特征的模式中的真空不兼容 同时包含生成的列和降序索引的表。 票号 6484e6ce678fffab
散 列:

SQLITE_SOURCE_ID: 2020-01-22 18:38:59 f6affdd41608946fcfcea914ece149038a8b25a62bbe719ed2561c649b86d824
SHA3-256 for sqlite3.c: a5fca0b9f8cbf80ac89b97193378c719d4af4b7d647729d8df9c0c0fca7b1388

2019-10-10 (3.30.1)

修复查询平展器中可能导致段错误的错误 对于在聚合函数上使用新 FILTER 子句的嵌套查询。 票号 1079ad19993d13fa
Cherrypick修复了自3.30.0以来发现的其他晦涩问题 释放
散 列:

SQLITE_SOURCE_ID: 2019-10-10 20:19:45 18db032d058f1436ce3dea84081f4ee5a0f2259ad97301d43c426bc7f3df1b0b
SHA3-256 for sqlite3.c: f96fafe4c110ed7d77fc70a7d690e5edd1e64fefb84b3b5969a722d885de1f2d

2019-10-04 (3.30.0)

在聚合函数上添加对 FILTER 子句的支持。
在 ORDER BY 子句中添加对 NULLS FIRST 和 NULLS LAST 语法的支持。
index_info和index_xinfo编译指示得到增强,以提供 有关不带 ROWID 表的磁盘表示形式的信息。
添加 sqlite3_drop_modules() 接口,允许应用程序 禁用自动加载的虚拟表,它们不会 需要。
改进了 CLI 中的 .recover 点命令,以便 它从损坏的数据库文件中恢复更多内容。
增强 RBU 扩展以支持表达式上的索引。
更改架构解析器,以便在以下任何情况下出错 sqlite_master表的类型、名称和tbl_name列已损坏,数据库连接未处于writable_schema模式。
PRAGMA function_list、PRAGMA module_list 和 PRAGMA pragma_list 命令现已发布 默认情况下在所有版本中启用。使用 -DSQLITE_OMIT_INTROSPECTION_PRAGMAS 禁用它们。
为 sqlite3_db_config() 添加SQLITE_DBCONFIG_ENABLE_VIEW选项。
添加了 TCL 接口配置方法,以便能够 禁用SQLITE_DBCONFIG_ENABLE_VIEW以及控制TCL的其他sqlite3_db_config()选项。
为应用程序定义的 SQL 函数添加了 SQLITE_DIRECTONLY 标志,以防止这些函数 在触发器和视图中使用。
旧的SQLITE_ENABLE_STAT3编译时选项现在是无操作。
Hashes:

SQLITE_SOURCE_ID:2019-10-04 15:03:17 c20a35336432025445f9f7e289d0cc3e4003fb17f45a4ce74c6269c407c6e09f
SHA3-256 for sqlite3.c: f04393dd47205a4ee2b98ff737dc51a3fdbcc14c055b88d58f5b27d0672158f5

2019-07-10 (3.29.0)

在 sqlite3_db_config() 中添加了用于激活和停用的SQLITE_DBCONFIG_DQS_DML和SQLITE_DBCONFIG_DQS_DDL操作 双引号字符串文字错误。两者都默认为“开” 为了传统兼容性,但鼓励开发人员将它们转向 “off”,也许使用 -DSQLITE_DQS=0 编译时选项。
-DSQLITE_DQS=0 现在是推荐的编译时选项。
对查询规划器的改进:
改进了 AND 和 OR 运算符的优化,当其中一个或另一个运算符 操作数是一个常数。
针对左侧情况的 LIKE 优化增强 侧列具有数字亲和力。
添加了“sqlite_dbdata” 用于从SQLite数据库中提取原始低级内容的虚拟表, 甚至是损坏的数据库。
改进了舍入行为,使舍入的结果 使用 round() 函数的二进制数更接近人们 习惯于用十进制思考的人实际上期望。
CLI 的增强功能:
添加“.recover”命令,尝试恢复尽可能多的内容 尽可能从损坏的数据库文件中。
添加对测试有用的“.filectrl”命令。
将长期存在的“.testctrl”命令添加到“.help”菜单中。
添加了“.dbconfig”命令
散 列:

SQLITE_SOURCE_ID: 2019-07-10 17:32:03 fc82b73eaac8b36950e527f12c4b5dc1e147e6f4ad2217ae43ad82882a88bfa6
SHA3-256 for sqlite3.c: d9a5daf7697a827f4b2638276ce639fa04e8e8bb5fd3a6b683cfad10f1c81b12

2019-04-16 (3.28.0)

增强的窗口功能:
添加支持排除子句。
添加对窗口链接的支持。
添加对组框架的支持。
添加对“ preeceding”的支持,以及 “以下”边界 在范围帧中。
添加了新的 sqlite3_stmt_isexplain(S) 接口,用于确定 准备好的陈述是否是解释。
增强的 VACUUM INTO 使其适用于只读数据库。
新的查询优化:
启用 LIKE 优化,以应对 ESCAPE 关键字的情况 存在,PRAGMA case_sensitive_like 已打开。
在由部分索引驱动的查询中,避免不必要的查询 部分的 WHERE 子句中指定的约束的测试 索引,因为我们知道约束必须始终为真。
TCL 接口的增强功能:
向函数方法添加了 -returntype 选项。
添加了新的bind_fallback方法。
CLI 的增强功能:
添加了对绑定参数和 .parameter 命令的支持。
修复 readfile() 函数,使其返回 空 BLOB,而不是在以下情况下引发内存不足错误 读取空文件。
修复 writefile() 函数,以便当它 沿着新文件的路径创建新目录,并为他们提供 umask 权限,而不是与文件相同的权限。
更改 .archive 命令中的 --update 选项,使其跳过 已在存档中且未更改的文件。添加 新的 --insert 选项,其工作方式类似于 --update 曾经工作。
添加了 fossildelta.c 扩展名,该扩展可以创建、应用和解构 RBU 扩展使用的化石 DVCS 文件增量格式。
为 sqlite3_db_config() 接口添加了SQLITE_DBCONFIG_WRITABLE_SCHEMA动词,该动词与 PRAGMA writable_schema 相同,而无需使用 SQL 解析器。
添加了用于确定参数是否 sqlite3_value_frombind() API 到 SQL 函数来自绑定参数。
fts3_tokenizer() 的安全性和兼容性增强:
fts3_tokenizer() 函数始终返回 NULL 除非旧版应用程序定义的 FTS3 分词器接口 使用 启用 sqlite3_db_config(SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER) 设置,或者除非 fts3_tokenizer() 的第一个参数是绑定参数。
fts3_tokenizer() 的双参数版本接受指向 即使没有 sqlite3_db_config(SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER)设置 如果第二个参数是绑定参数
改进了对损坏数据库文件的可靠性。
其他性能增强
建立了官方SQLite源代码树的Git镜像。 SQLite的规范来源使用 https://sqlite.org/src 的Fossil DVCS进行维护。 Git 镜像可以在 https://github.com/sqlite/sqlite 看到。
散 列:

SQLITE_SOURCE_ID:2019-04-16 19:49:53 884b4b7e502b4e991677b53971277adfaf0a04a284f8e483e2553d0f83156b50
SHA3-256 for sqlite3.c: 411efca996b65448d9798eb203d6ebe9627b7161a646f5d00911e2902a57b2e9
2019-02-25 (3.27.2)
修复了 IN 运算符中由 尝试在版本 3.27.0 中进行优化。票证 df46dfb631f75694
修复了滥用窗口函数时导致崩溃的错误。票证 4feb3159c6bc3f7e33959。
修复各种文档错别字
散 列:

SQLITE_SOURCE_ID: bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7
SHA3-256 for sqlite3.c: 1dbae33bff261f979d0042338f72c9e734b11a80720fb32498bae9150cc576e7

2019-02-08 (3.27.1)

修复查询优化器中的一个错误:之间的不利交互 OR 优化和尝试使用值的优化 直接从表达式索引读取,而不是重新计算 表达。 票号 4e8e4857d32d401f
散 列:

SQLITE_SOURCE_ID:2019-02-08 13:17:39 0eca3dd3d38b31c92b49ca2d311128b74584714d9e7de895b1a6286ef959a1dd
SHA3-256 for sqlite3.c: 11c14992660d5ac713ea8bea48dc5e6123f26bc8d3075fe5585d1a217d090233

2019-02-07 (3.27.0)

添加了“真空输入”命令
如果使用双引号字符串文本,则在错误日志上发出SQLITE_WARNING消息。
sqlite3_normalized_sql() 接口适用于任何预准备语句 使用 sqlite3_prepare_v2() 或 sqlite3_prepare_v3() 创建。这不是 为了使用 sqlite3_normalized_sql(),需要将 sqlite3_prepare_v3() 与 SQLITE_PREPARE_NORMALIZE 一起使用。
在 FTS2 和 FTS3 中添加了 remove_diacritics=5 选项。
在 sqlite3_prepare_v3() 中添加了SQLITE_PREPARE_NO_VTAB选项。 使用该选项可防止对影子表的循环引用 导致资源泄漏。
sqlite3_deserialize() 接口的增强功能:
添加 的SQLITE_FCNTL_SIZE_LIMIT文件控件 设置创建的内存中数据库大小的上限 由sqlite3_deserialize。默认上限为 1GiB,或任何值 替代值由 sqlite3_config(SQLITE_CONFIG_MEMDB_MAXSIZE) 指定 和/或SQLITE_MEMDB_DEFAULT_MAXSIZE。
尊重前面描述的SQLITE_DESERIALIZE_READONLY标志 在文档中,但以前是无操作的。
增强 TCL 接口的“反序列化”命令,使其 新的“–maxsize N”和“–只读布尔值”选项。
CLI 的增强功能,主要用于支持测试和调试 的 SQLite 库本身:
添加对“.open --hexdb”的支持。这 “dbtotxt” 实用程序 用于生成“HEXDB”文本的程序被添加到 源树。
在“.open --deserialize”上添加对“–maxsize N”选项的支持。
添加“–memtrace”命令行选项,以显示所有内存分配 和交易分配。
在具有SQLITE_DEBUG的构建中添加“.eqp 跟踪”选项,以启用 带有缩进和PRAGMA的字节码程序列表vdbe_trace一步完成。
添加“.progress”命令以访问 sqlite3_progress_handler() 接口。
将“–async”选项添加到“.backup”命令中。
添加选项 “–展开”、“–规范化”、“–普通”、“–配置文件”、“–行”, “–stmt”和“–close”到“.trace”命令。
增强了针对恶意 SQL 运行的可靠性 恶意损坏的数据库。
错误修复:

不要使用分部索引对 IN 运算符执行表扫描。 票证 1d958d90596593a774。
修复查询平展器,使其适用于包含以下内容的查询 使用窗口函数的子查询。 机票 709fcd17810f65f717
确保 ALTER TABLE 修改嵌入在 WITH 中的表和列名称 作为视图和触发器一部分的子句。
修复了阻止在表值两边使用括号的解析器 bug 功能。
修复了对表达式索引进行 OR 优化的问题。 票 d96eba87698a428c1d。
修复了左连接强度降低优化的问题,其中优化 由于 IS NOT NULL 运算符而被不当应用。 票证 5948e09b8c415bc45d。
修复 REPLACE 命令,使其不再能够潜入 NULL 值转换为“非空”列,即使“非空”列具有默认值 空值。 票证 e6f1f2e34dceeb1ed6
修复了在相关子查询中使用窗口函数的问题。 机票 d0866b26f83e9c55e3
修复更改表重命名列命令,使其适用于表 具有冗余的唯一约束。 票证 bc8d94f0fbd633fd9a
修复了导致零 blob 值在插入时被截断的错误 使用表达式索引的表。 票证 bb4bdb9f7f654b0bb9
散 列:

SQLITE_SOURCE_ID:“2019-02-07 17:02:52 97744701c3bd414e6c9d7182639d8c2ce7cf124c4fce625071ae65658ac61713 "
SHA3-256 for sqlite3.c: ca011a10ee8515b33e5643444b98ee3d74dc45d3ac766c3700320def52bc6aba
2018-12-01 (3.26.0)
优化:对具有表达式索引的表执行 UPDATE 时, 如果表达式索引未引用任何列,则不要更新它们 正在更新的表。
允许虚拟表实现的 xBestIndex() 方法返回SQLITE_CONSTRAINT以指示建议的查询计划不可用,并且 不应给予进一步考虑。
添加了SQLITE_DBCONFIG_DEFENSIVE选项,该选项禁用了 使用普通 SQL 创建损坏的数据库文件。
添加了启用SQLITE_DBCONFIG_DEFENSIVE选项时对只读影子表的支持。
添加了 PRAGMA legacy_alter_table 命令,如果启用该命令,则 ALTER TABLE 命令的行为类似于旧版本的 SQLite(在 版本 3.25.0) 以实现兼容性。
添加了与 PRAGMA table_info类似工作的 PRAGMA table_xinfo,只是它还在虚拟表中显示隐藏列。
添加了解释虚拟表作为运行时可加载扩展。
向查询计划器添加限制计数器,以防止某些病理 SQL 输入的 sqlite3_prepare() 次过长。
在编译时添加了对 sqlite3_normalized_sql() 接口的支持 与SQLITE_ENABLE_NORMALIZE。
增强的触发器,以便它们可以使用 存在于定义触发器的架构以外的架构中。
CLI 的增强功能:
改进了“.help”命令。
SQLITE_HISTORY环境变量(如果存在) 指定命令行编辑历史记录文件的名称
与打开新数据库关联的 --反序列化选项会导致 要读入内存并使用 sqlite3_deserialize() API 访问的数据库文件。这简化了在数据库上运行测试 无需修改磁盘上的文件。
对地理多地多边扩展的增强:
始终存储多边形 使用二进制格式,速度更快,占用的空间更少。
添加了 geopoly_regular() 函数。
添加了 geopoly_ccw() 函数。
会话扩展的增强功能:
添加了SQLITE_CHANGESETAPPLY_INVERT标志
添加了 sqlite3changeset_start_v2() 接口和 SQLITE_CHANGESETSTART_INVERT 标志。
添加了 changesetfuzz.c 测试用例生成器实用程序。
散 列:

SQLITE_SOURCE_ID: “2018-12-01 12:34:55 bf8c1b2b7a5960c282e543b9c293686dccff272512d08865f4600fb58238b4f9”
SHA3-256 for sqlite3.c: 72c08830da9b5d1cb397c612c0e870d7f5eb41a323b41aa3d8aa5ae9ccedb2c4

2018-11-05 (3.25.3)

禁止在 的递归部分使用窗口函数 a 贸易与环境。机票 e8275b415a2f03bee
修复 typeof() 和 length() 在虚拟表上的行为。票号 69d642332d25aa3b7315a6d385
加强对故意损坏的数据库文件的防御。
修复了查询规划器中行值表达式时出现的问题 与具有冗余列的主键一起使用。票号 1a84668dcfdebaf12415d
修复查询计划器,使其对 IS NOT NULL 运算符正常工作 在带有 SQLITE_ENABLE_STAT4 编译时选项的 LEFT JOIN 的 ON 子句中。65EB38F6E46de8C75E188A17EC
散 列:

SQLITE_SOURCE_ID:“2018-11-05 20:37:38 89e099fbe5e13c33e683bef07361231ca525b88f7907be7092058007b75036f2”
SHA3-256 for sqlite3.c: 45586e4df74de3a43f3a1f8c7a78c3c3f02edce01af7d10cafe68bb94476a5c5

2018-09-25 (3.25.2)

添加legacy_alter_table导致 “更改表重命名”命令的行为与SQLite版本3.24.0中的行为相同 及更早版本:对触发器主体内重命名的表的引用 并且视图不会更新。这种新的编译指示提供了兼容性 为预期较旧的、不稳定的行为的旧程序工作 的更改表重命名。
修复了导致的新窗口函数实现的问题 使用涉及窗口函数的复杂表达式时出现故障 视图内部。
修复了各种其他编译器警告和相关的小问题 具有模糊的配置。
散 列:

SQLITE_SOURCE_ID: “2018-09-25 19:08:10 FB90e7189AE6d62e77ba3a308ca5d683f90bbe633cf681865365b8e92792d1c7”
SHA3-256 for sqlite3.c: 34c23ff91631ae10354f8c9d62fd7d65732b3d7f3acfd0bbae31ff4a62fe28af

2018-09-18 (3.25.1)

在 3.25.0 版本中向 ALTER TABLE 添加了额外的健全性检查 有时会引发假阳性 当正在修改的表具有触发器时 更新虚拟表。误报导致 ALTER TABLE 进行回滚,从而使架构保持不变。 票 b41031ea2b537237。
3.25.0 版本中对字节码中无尽循环的修复 与限价订单优化相关联的优化不适用于 一些涉及窗口函数的查询。额外的更正 是必需的。票号 510cde277783b5fb
散 列:

SQLITE_SOURCE_ID: “2018-09-18 20:20:44 2ac9003de44da7dafa3fbb1915ac5725a9275c86bf2f3b7aa19321bf1460b386”
SHA3-256 for sqlite3.c: 1b2302e7a54cc99c84ff699a299f61f069a28e1ed090b89e4430ca80ae2aab06

2018-09-15 (3.25.0)

添加对窗口函数的支持
增强了 ALTER TABLE 命令:
添加对使用 重命名表中的列的支持 更改表表 将列旧名称重命名为新名称。
修复表重命名功能,以便它也更新引用 到触发器和视图中重命名的表。
查询优化器改进:
避免聚合查询中不必要的列负载 不在聚合函数内且不属于 的分组依据条款。
输入早出优化:在查找 多列索引和 IN 运算符用于列 除了最左边的列之外,如果没有行匹配 第一个 IN 值,检查以确保存在 在继续之前匹配右侧的列 下一个 IN 值。
使用传递属性尝试传播常量 WHERE 子句中的值。例如,转换 “a=99 和 b=a”变成“a=99 和 b=99”。
在 unix VFS 中的每个索引节点上使用单独的互斥锁,而不是 它们之间共享单个互斥锁,以实现稍微更好的并发性 在多线程环境中。
增强 PRAGMA integrity_check 命令以改进检测 页面上的问题自由列表。
在命令行 shell 的“.dump”命令中将无穷大输出为 1e999。
添加了SQLITE_FCNTL_DATA_VERSION文件控件。
添加了地理聚模块
错误修复:

按限制排序优化可能导致无限循环 在准备好的语句的字节码下非常晦涩 情况 下 由于查询优化器中存在一些小缺陷。 修复票证 9936b2fa443fec03ff25
在 UPSERT 上,当约束检查的顺序重新排列时, 确保插入内容的相关性转换 在任何约束检查之前发生。修复工单 79cad5e4b2e219dd197242e9e。
避免在 CLI 的“.stats on”命令被“.eqp full”逻辑关闭后,对它使用预准备语句。修复了票证 7be932dfa60a8a6b3b26bcf76。
LIKE 优化生成了不正确的字节码,因此 得到错误的答案 如果左侧操作数具有数字相关性,右侧操作数具有数字关联性 模式为“/%”,或者模式以 ESCAPE 字符开头。 修复了票证 c94369cae9b561b1f996d0054b
散 列:

SQLITE_SOURCE_ID:“2018-09-15 04:01:47 b63af6c3bd33152742648d5d2e8dc5d5fcbcdd27df409272b6aea00a6f761760”
SHA3-256 for sqlite3.c: 989e3ff37f2b5eea8e42205f808ccf0ba86c6ea6aa928ad2c011f33a108ac45d

2018-06-04 (3.24.0)

添加对 PostgreSQL 样式 UPSERT 的支持。
在 r 树表中添加对辅助列的支持。
添加 C 语言 API 以发现 使用的 SQL 关键字 SQLite:sqlite3_keyword_count()、sqlite3_keyword_name() 和 sqlite3_keyword_check()。
基于 sqlite3_str 对象为动态字符串添加 C 语言 API。
增强 ALTER TABLE,使其将“真”和“假”识别为 默认的有效参数。
将排序器引用优化添加为编译时选项。 仅在使用 SQLITE_ENABLE_SORTER_REFERENCES 编译时可用。
改进“解释查询计划”原始输出的格式,以便 它提供了有关查询计划和 计划的各个组成部分之间的关系。
向 sqlite3_db_config() API 添加了SQLITE_DBCONFIG_RESET_DATABASE选项。
CLI 增强功能:

自动截获原始的“解释查询计划”输出,并将其重新格式化为 ASCII 艺术图形。
以“#”开头且不在中间的行 SQL 语句被解释为注释。
在“.backup”命令中添加了 --append 选项。
添加了“.dbconfig”命令。
性能:

UPDATE 避免了不必要的低级磁盘写入,当内容 的数据库文件实际上不会更改。 例如,“UPDATE t1 SET x=25 WHERE y=?”不会生成额外的 磁盘 I/O(如果第 x 列中的值已为 25)。同样地 对跨多个页面的记录执行 UPDATE 时,仅 实际更改的页面子集将写入磁盘。 这只是低级性能优化,不会 影响触发器或其他更高级别的 SQL 的行为 结构。
使用 ORDER BY 和 LIMIT 的查询现在尝试避免计算 不可能低于 LIMIT 的行。这可以极大地 提高按限制排序查询的性能,尤其是在 LIMIT 相对于不受限制的输出行数很小。
允许 OR 优化继续进行 即使 OR 表达式也已转换为 IN 表达。OR优化的用法现在也更清楚地显示在“解释查询计划”输出中。
查询规划器更积极地对视图和子查询使用自动索引 无法创建持久索引。
在适当的情况下,使用 R-Tree 扩展中的一次性更新和删除查询计划。
LEMON 生成的解析器的性能改进。
错误修复:

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

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

2018-04-10 (3.23.1)

修复了新左联接强度降低优化中的两个问题。 门票 1e39b966ae9ee739 和 fac496b61722daf2。
修复 FTS5 xBestIndex 方法的错误行为。票证 2b8aed9f7c9e61e8。
修复对未初始化的虚拟机寄存器的无害引用。 票 093420fc0eb7cba7。
修复 CLI,使其使用 -DSQLITE_UNTESTABLE 构建
修复 eval.c 扩展名 这样它就可以与PRAGMA empty_result_callbacks=ON一起使用。
修复generate_series虚拟表,使其正确返回 如果其任何约束为 NULL,则没有行。
分析器中的性能增强。
散 列:

SQLITE_SOURCE_ID:“2018-04-10 17:39:29 4bb2294022060e61de7da5c227a69ccd846ba330e31626ebcd59a94efd148b3b”
SHA3-256 for sqlite3.c: 65750d1e506f416a0b0b9dd22d171379679c733e3460549754dc68c92705b5dc
2018-04-02 (3.23.0)
Add the sqlite3_serialize() and sqlite3_deserialize() interfaces when the SQLITE_ENABLE_DESERIALIZE compile-time option is used.
Recognize TRUE and FALSE as constants. (For compatibility, if there exist columns named “true” or “false”, then the identifiers refer to the columns rather than Boolean constants.)
Support operators IS TRUE, IS FALSE, IS NOT TRUE, and IS NOT FALSE.
Added the SQLITE_DBSTATUS_CACHE_SPILL option to sqlite3_db_status() for reporting the number of cache spills that have occurred.
The “alternate-form-2” flag (“!”) on the built-in printf implementation now causes string substitutions to measure the width and precision in characters instead of bytes.
If the xColumn method in a virtual table implementation returns an error message using sqlite3_result_error() then give that error message preference over internally-generated messages.
Added the -A command-line option to the CLI to make it easier to manage SQLite Archive files.
Add support for INSERT OR REPLACE, INSERT OR IGNORE, and UPDATE OR REPLACE in the Zipfile virtual table.
Enhance the sqlite3changeset_apply() interface so that it is hardened against attacks from deliberately corrupted changeset objects.
Added the sqlite3_normalize() extension function.
Query optimizer enhancements:
Improve the omit-left-join optimization so that it works in cases where the right-hand table is UNIQUE but not necessarily NOT NULL.
Improve the push-down optimization so that it works for many LEFT JOINs.
Add the LEFT JOIN strength reduction optimization that converts a LEFT JOIN into an ordinary JOIN if there exist terms in the WHERE clause that would prevent the extra all-NULL row of the LEFT JOIN from appearing in the output set.
Avoid unnecessary writes to the sqlite_sequence table when an AUTOINCREMENT table is updated with an rowid that is less than the maximum.
Bug fixes:
Fix the parser to accept valid row value syntax. Ticket 7310e2fb3d046a5
Fix the query planner so that it takes into account dependencies in the arguments to table-valued functions in subexpressions in the WHERE clause. Ticket 80177f0c226ff54
Fix incorrect result with complex OR-connected WHERE and STAT4. Ticket ec32177c99ccac2
Fix potential corruption in indexes on expressions due to automatic datatype conversions. Ticket 343634942dd54ab
Assertion fault in FTS4. Ticket d6ec09eccf68cfc
Incorrect result on the less-than operator in row values. Ticket f484b65f3d62305
Always interpret non-zero floating-point values as TRUE, even if the integer part is zero. Ticket 36fae083b450e3a
Fix an issue in the fsdir(PATH) table-valued function to the fileio.c extension, that caused a segfault if the fsdir() table was used as the inner table of a join. Problem reported on the mailing list and fixed by check-in 7ce4e71c1b7251be
Issue an error rather instead of an assertion-fault or null-pointer dereference when the sqlite_master table is corrupted so that the sqlite_sequence table root page is really a btree-index page. Check-in 525deb7a67fbd647
Fix the ANALYZE command so that it computes statistics on tables whose names begin with “sqlite”. Check-in 0249d9aecf69948d
Additional fixes for issues detected by OSSFuzz:
Fix a possible infinite loop on VACUUM for corrupt database files. Check-in 27754b74ddf64
Disallow parameters in the WITH clause of triggers and views. Check-in b918d4b4e546d
Fix a potential memory leak in row value processing. Check-in 2df6bbf1b8ca8
Improve the performance of the replace() SQL function for cases where there are many substitutions on megabyte-sized strings, in an attempt to avoid OSSFuzz timeouts during testing. Check-in fab2c2b07b5d3
Provide an appropriate error message when the sqlite_master table contains a CREATE TABLE AS statement. Formerly this caused either an assertion fault or null pointer dereference. Problem found by OSSFuzz on the GDAL project. Check-in d75e67654aa96
Incorrect assert() statement removed. Check-in 823779d31eb09cda.
Fix a problem with using the LIKE optimization on an INTEGER PRIMARY KEY. Check-in b850dd159918af56.
Hashes:

SQLITE_SOURCE_ID: “2018-04-02 11:04:16 736b53f57f70b23172c30880186dce7ad9baa3b74e3838cae5847cffb98f5cd2”
SHA3-256 for sqlite3.c: 4bed3dc2dc905ff55e2c21fd2725551fc0ca50912a9c96c6af712a4289cb24fa
2018-01-22 (3.22.0)
The output of sqlite3_trace_v2() now shows each individual SQL statement run within a trigger.
Add the ability to read from WAL mode databases even if the application lacks write permission on the database and its containing directory, as long as the -shm and -wal files exist in that directory.
Added the rtreecheck() scalar SQL function to the R-Tree extension.
Added the sqlite3_vtab_nochange() and sqlite3_value_nochange() interfaces to help virtual table implementations optimize UPDATE operations.
Added the sqlite3_vtab_collation() interface.
Added support for the “^” initial token syntax in FTS5.
New extensions:
The Zipfile virtual table can read and write a ZIP Archive.
Added the fsdir(PATH) table-valued function to the fileio.c extension, for listing the files in a directory.
The sqlite_btreeinfo eponymous virtual table for introspecting and estimating the sizes of the btrees in a database.
The Append VFS is a VFS shim that allows an SQLite database to be appended to some other file. This allows (for example) a database to be appended to an executable that then opens and reads the database.
Query planner enhancements:
The optimization that uses an index to quickly compute an aggregate min() or max() is extended to work with indexes on expressions.
The decision of whether to implement a FROM-clause subquery as a co-routine or using query flattening now considers whether the result set of the outer query is “complex” (if it contains functions or expression subqueries). A complex result set biases the decision toward the use of co-routines.
The planner avoids query plans that use indexes with unknown collating functions.
The planner omits unused LEFT JOINs even if they are not the right-most joins of a query.
Other performance optimizations:
A smaller and faster implementation of text to floating-point conversion subroutine: sqlite3AtoF().
The Lemon parser generator creates a faster parser.
Use the strcspn() C-library routine to speed up the LIKE and GLOB operators.
Improvements to the command-line shell:
The “.schema” command shows the structure of virtual tables.
Added support for reading and writing SQLite Archive files using the .archive command.
Added the experimental .expert command
Added the “.eqp trigger” variant of the “.eqp” command
Enhance the “.lint fkey-indexes” command so that it works with WITHOUT ROWID tables.
If the filename argument to the shell is a ZIP archive rather than an SQLite database, then the shell automatically opens that ZIP archive using the Zipfile virtual table.
Added the edit() SQL function.
Added the .excel command to simplify exporting database content to a spreadsheet.
Databases are opened using Append VFS when the --append flag is used on the command line or with the .open command.
Enhance the SQLITE_ENABLE_UPDATE_DELETE_LIMIT compile-time option so that it works for WITHOUT ROWID tables.
Provide the sqlite_offset(X) SQL function that returns the byte offset into the database file to the beginning of the record holding value X, when compiling with -DSQLITE_ENABLE_OFFSET_SQL_FUNC.
Bug fixes:
Infinite loop on an UPDATE that uses an OR operator in the WHERE clause. Problem introduced with 3.17.0 and reported on the mailing list about one year later. Ticket 47b2581aa9bfecec.
Incorrect query results when the skip-ahead-distinct optimization is used. Ticket ef9318757b152e3a.
Incorrect query results on a join with a ORDER BY DESC. Ticket 123c9ba32130a6c9.
Inconsistent result set column names between CREATE TABLE AS and a simple SELECT. Ticket 3b4450072511e621
Assertion fault when doing REPLACE on an index on an expression. Ticket dc3f932f5a147771
Assertion fault when doing an IN operator on a constant index. Ticket aa98619ad08ddcab
Hashes:

SQLITE_SOURCE_ID: “2018-01-22 18:45:57 0c55d179733b46d8d0ba4d88e01a25e10677046ee3da1d5b1581e86726f2171d”
SHA3-256 for sqlite3.c: 206df47ebc49cd1710ac0dd716ce5de5854826536993f4feab7a49d136b85069
2017-10-24 (3.21.0)
Take advantage of the atomic-write capabilities in the F2FS filesystem when available, for greatly reduced transaction overhead. This currently requires the SQLITE_ENABLE_BATCH_ATOMIC_WRITE compile-time option.
Allow ATTACH and DETACH commands to work inside of a transaction.
Allow WITHOUT ROWID virtual tables to be writable if the PRIMARY KEY contains exactly one column.
The “fsync()” that occurs after the header is written in a WAL reset now uses the sync settings for checkpoints. This means it will use a “fullfsync” on macs if PRAGMA checkpoint_fullfsync set on.
The sqlite3_sourceid() function tries to detect if the source code has been modified from what is checked into version control and if there are modifications, the last four characters of the version hash are shown as “alt1” or “alt2”. The objective is to detect accidental and/or careless edits. A forger can subvert this feature.
Improved de-quoting of column names for CREATE TABLE AS statements with an aggregate query on the right-hand side.
Fewer “stat()” system calls issued by the unix VFS.
Enhanced the LIKE optimization so that it works with an ESCAPE clause.
Enhanced PRAGMA integrity_check and PRAGMA quick_check to detect obscure row corruption that they were formerly missing. Also update both pragmas so that they return error text rather than SQLITE_CORRUPT when encountering corruption in records.
The query planner now prefers to implement FROM-clause subqueries using co-routines rather using the query flattener optimization. Support for the use of co-routines for subqueries may no longer be disabled.
Pass information about !=, IS, IS NOT, NOT NULL, and IS NULL constraints into the xBestIndex method of virtual tables.
Enhanced the CSV virtual table so that it accepts the last row of input if the final new-line character is missing.
卸下很少使用的“暂存”内存分配器。将其替换为提供 SQLite 的SQLITE_CONFIG_SMALL_MALLOC配置设置 提示应尽可能避免大量内存分配。
将群虚拟表添加到现有的联合虚拟表扩展。
添加了sqlite_dbpage虚拟表,用于提供对页面的直接访问 的数据库文件。源代码内置于合并和 使用 -DSQLITE_ENABLE_DBPAGE_VTAB 编译时选项激活。
添加一种新类型的 fts5vocab 虚拟表 - “实例” - 它提供 以尽可能低的级别直接访问 FTS5 全文索引。
删除在 Windows VFS 中对 rand_s() 的调用,因为它会导致问题 在一些较旧的笔记本电脑上的火狐中。
src/shell.c 源代码 到命令行 shell 不再受版本控制。该文件 现在作为生成过程的一部分生成。
其他微优化可将 CPU 使用率降低约 2.1%。
错误修复:
修复 OSSFuzz 发现的错误断言() 语句。 机票 cb91bf4290c211d
修复 sqlite3_result_pointer() 中模糊的内存泄漏。 机票 7486aa54b968e9b
通过将架构重置推迟到 在查询计划程序完成运行之后。 机票 be436a7f4587ce5
仅在以下情况下使用表达式索引来优化 ORDER BY 或 GROUP BY 整理是正确的。 票证 e20dd54ab0e4383
修复了当表达式在 表达式索引实际上是一个常量。 票证 aa98619ad08ddca
修复 PRAGMA reverse_unordered_selects后可能发生的断言错误。 机票 cb91bf4290c211d
修复使用表值函数的查询可能发生的段错误 在 IN 或 EXISTS 子查询中。 机票 b899b6042f97f5
修复编译特定时潜在的整数溢出问题 可怕的公用表表达式。这是发现的另一个问题 作者:OSSFuzz。办理登机手续 6ee8cb6ae5。
修复了查询损坏的数据库文件时可能出现的越界读取, 谷歌零项目的娜塔莉·西尔瓦诺维奇(Natalie Silvanovich)发现的问题。 入住 04925dee41a21f。
散 列:

SQLITE_SOURCE_ID:“2017-10-24 18:55:49 1a584e499906b5c87ec7d43d4abce641fdf017c42125b083109bc77c4de48827”
SHA3-256 for sqlite3.c: 84c181c0283d0320f488357fc8aab51898370c157601459ebee49d779036fe03
2017-08-24 (3.20.1)
修复新 sqlite3_result_pointer() 接口中潜在的内存泄漏。 票 7486aa54b968e9b5。
散 列:

SQLITE_SOURCE_ID:“2017-08-24 16:21:36 8d3a7ea6c5690d6b7c3767558f4f01b511c55463e3f9e64506801fe9b74dce34”
SHA3-256 for sqlite3.c: 93b1a6d69b48dc39697d1d3a1e4c30b55da0bdd2cad0c054462f91081832954a
2017-08-01 (3.20.0)
更新 sqlite3_errmsg() 返回的错误消息文本,以便某些 错误代码。
添加新的指针传递接口。
对某些扩展进行向后不兼容的更改,以便采取 新的指针传递接口提供改进的安全性的优点:
扩展 FTS5 →需要 sqlite3_bind_pointer() 才能找到 fts5_api指针。
carray(PTR,N) → 需要 sqlite3_bind_pointer() 来设置 PTR 参数。
记住(V,PTR) →需要 sqlite3_bind_pointer() 来设置 PTR 参数。
添加了SQLITE_STMT虚拟表扩展。
添加了完成扩展 - 旨在建议 交互式用户界面的制表符补全。这是一项正在进行的工作。 预计未来版本中会有更多增强功能。
添加了 UNION 虚拟表扩展。
内置的日期和时间功能已得到增强,因此它们可以 用于 CHECK 约束、表达式索引和 WHERE 子句 部分索引,前提是它们不使用“现在”、“本地时间”或 “UTC”关键字。更多信息。
添加了 sqlite3_prepare_v3() 和 sqlite3_prepare16_v3() 接口 带有额外的“prepFlags”参数。
为 sqlite3_prepare_v3() 和 提供SQLITE_PREPARE_PERSISTENT标志 使用它来限制 FTS3、FTS5 和 R 树扩展滥用后备内存。
添加了 PRAGMA secure_delete=FAST 命令。当secure_delete 设置为 FAST,旧内容将被零覆盖,只要这样做 不增加 I/O 量。删除的内容可能仍保留在 自由页面列表,但将从所有 B 树页面中清除。
命令行外壳的增强功能:
使用 COMPLETE 扩展添加对制表符补全的支持,适用于 读取线和线噪声。
添加“.cd”命令。
增强“.schema”命令以显示所有附加的架构 数据库。
增强“.tables”,使其显示所有附加的架构名称 如果名称不是“主要”。
“.import”命令忽略初始 UTF-8 BOM。
在“.dump”命令中添加了“–换行符”选项,导致 U+000a 和 U+000d 字符从字面上输出,而不是使用 replace() 函数进行转义。
查询规划器增强功能:
为 OR 扫描的每个 OR 项生成单独的循环时, 将任何常量 WHERE 表达式移出循环,按原样 为顶级循环完成。
查询规划器检查绑定参数的值以帮助 确定部分索引是否可用。
在两个估计成本相同的计划之间做出决定时,偏差 朝向不使用分拣机的选择。
评估涉及相关子查询的 WHERE 子句约束 最后,希望他们永远不会被评估。
不要对 RHS 上的子查询使用扁平优化 的左连接,如果该子查询从虚拟表中读取数据为 这样做可以防止查询计划程序对子查询的结果创建自动索引,这可能会减慢查询速度。
添加SQLITE_STMTSTATUS_REPREPARE、SQLITE_STMTSTATUS_RUN、 以及 sqlite3_stmt_status() 接口的SQLITE_STMTSTATUS_MEMUSED选项。
为 PRAGMA integrity_check、PRAGMA quick_check和 PRAGMA foreign_key_check提供 PRAGMA 函数。
将 -withoutnulls 选项添加到 TCL 接口评估方法中。
增强sqlite3_analyzer.exe实用程序,使其显示 btree 页面上元数据的字节数。
SQLITE_DBCONFIG_ENABLE_QPSG运行时选项和SQLITE_ENABLE_QPSG编译时选项启用查询计划程序稳定性保证。另请参阅票证 892fc34f173e99d8
其他优化可使使用的 CPU 周期减少 2%。
错误修复:

修复使用平展优化的查询的 sqlite3_column_name() 行为,以便结果与其他查询一致 不使用这种优化的查询,以及PostgreSQL,MySQL, 和 SQLServer。门票 de3403bf5ae.
修复查询计划程序,以便它知道在 WHERE 子句使用 IS 运算符时不使用 LEFT JOIN 右侧表上的自动索引。 修复了 ce68383bf6aba 的问题。
确保查询计划程序知道平展的 LEFT JOIN 的任何列都可以为 NULL 甚至 如果该列标记为“非空”。修复票证 892fc34f173e99d8。
修复在数据库连接上运行时 PRAGMA integrity_check中的罕见误报 附有数据库。机票 a4e06e75a9ab61a12
修复了导致断言错误的错误(由 OSSFuzz 发现),如果某些 使用狡猾的创建表声明。票号 bc115541132爸爸136
散 列:

SQLITE_SOURCE_ID: “2017-08-01 13:24:15 9501e22dfeebdcefa783575e47c60b514d7c2e0cad73b2a496c0bc4b680900a8”
SHA3-256 for sqlite3.c: 79b7f3b977360456350219cba0ba0e5eb55910565eab68ea83edda2f968ebe95
2017-06-17 (3.18.2)
修复了当 IN 运算符为 在 WHERE 子句中使用。 票 61fe9745。
散 列:

SQLITE_SOURCE_ID:“2017-06-17 09:59:36 036ebf729e4b21035d7f4f8e35a6f705e6bf99887889e2dc14ebf2242e7930dd”
SHA3-256 for sqlite3.c: b0bd014f2776b9f9508a3fc6432f70e2436bf54475369f88f0aeef75b0eec93e
2017-06-16 (3.18.1)
修复了与可能导致数据库的auto_vacuum相关的错误 腐败。该错误是在版本 3.16.0 (2017-01-02) 中引入的。 票证 fda22108。
散 列:

SQLITE_SOURCE_ID: “2017-06-16 13:41:15 77bb46233db03a3338bacf7e56f439be3dfd1926ea0c44d252eeafa7a7b31c06”
SHA3-256 for sqlite3.c: 334eaf776db9d09a4e69d6012c266bc837107edc2c981739ef82081cb11c5723
2017-06-08 (3.19.3)
修复了与可能导致数据库的auto_vacuum相关的错误 腐败。该错误是在版本 3.16.0 (2017-01-02) 中引入的。 票证 fda22108。
散 列:

SQLITE_SOURCE_ID: “2017-06-08 14:26:16 0ee482a1e0eae22e08edc8978c9733a96603d4509645f348ebf55b579e89636b”
SHA3-256 for sqlite3.c: 368f1d31272b1739f804bcfa5485e5de62678015c4adbe575003ded85c164bb8
2017-05-25 (3.19.2)
修复了左联展优化中的更多错误。票证 7fde638e94287d2c。
散 列:

SQLITE_SOURCE_ID: “2017-05-25 16:50:27 edb4e819b0c058c7d74d27ebd14cc5ceb2bad6a6144a486a970182b7afe3f8b9”
SHA3-256 for sqlite3.c: 1be0c457869c1f7eba58c3b5097b9ec307a15be338308bee8e5be8570bcf5d1e
2017-05-24 (3.19.1)
修复了左联接拼合优化中的一个错误。门票 cad1ab4cb7b0fc。
删除导致旧版 MSVC 出现问题的多余分号。
散 列:

SQLITE_SOURCE_ID: “2017-05-24 13:08:33 f6d7b988f40217821a382bc298180e9e6794f3ed79a83c6ef5cae048989b3f86”
SHA3-256 for sqlite3.c: 996b2aff37b6e0c6663d0312cd921bbdf6826c989cbbb07dadde5e9672889bca
2017-05-22 (3.19.0)
SQLITE_READ授权方回调被调用一次 列名为空字符串 对于未从中提取列的查询中引用的每个表。
在表达式上使用索引时,请尝试使用表达式值 在索引中可用,而不是加载原始列并重新计算 表达式。
增强展平优化,使其能够展平视图 在左侧联接的右侧。
使用 replace() 代替 char() 转义换行符和回车符 嵌入在命令行外壳的 .dump 输出中的字符串中的字符。
避免在 UPDATE 语句中进行不必要的外键处理,因为 UPDATE 语句不会 触摸受外键约束的列。
在使用索引的 DISTINCT 查询上,尝试跳到下一个非重复查询 使用索引而不是单步执行行的条目(如果适用) 索引可用。
避免在制作时使sqlite3_blob手柄不必要地失效 对不相关表的更改。
Transfer any terms of the HAVING clause that use only columns mentioned in the GROUP BY clause over to the WHERE clause for faster processing.
Reuse the same materialization of a VIEW if that VIEW appears more than once in the same query.
Enhance PRAGMA integrity_check so that it identifies tables that have two or more rows with the same rowid.
Enhance the FTS5 query syntax so that column filters may be applied to arbitrary expressions.
Enhance the json_extract() function to cache and reuse parses of JSON input text.
Added the anycollseq.c loadable extension that allows a generic SQLite database connection to read a schema that contains unknown and/or application-specific collating sequences.
错误修复:

修复了 REPLACE 中可能导致数据库损坏的问题,该问题包含 具有相同 rowid 的两行或多行。修复了票证 f68dc596c4e6018d 的问题。
修复 PRAGMA integrity_check 中导致后续 VACUUM 表现不佳的问题。
修复 PRAGMA foreign_key_check 命令,使其正常工作 没有 ROWID 表的外键。
修复 b 树逻辑中可能导致错误重复答案的错误 对于 IN 运算符查询。票号 61fe9745
不允许在 JSON 中的数字常量中使用前导零。修复了票证 b93be8729a895a528e2。
禁止在 JSON 中的字符串内使用控制字符。修复了票证 6c9b5514077fed34551。
限制 JSON 对象和数组的递归深度以避免 递归下降解析器中的堆栈使用量过多。修复票证 981329adeef51011052。
散 列:

SQLITE_SOURCE_ID:“2017-05-22 13:58:13 28a94eb282822cad1d1420f2dad6bf65e4b8b9062eda4a0b9ee8270b2c608e40”
SHA3-256 for sqlite3.c: c30326aa1a9cc342061b755725eac9270109acf878bc59200dd4b1cea6bc2908
2017-03-30 (3.18.0)
添加了 PRAGMA 优化命令
sqlite_source_id() SQL 函数返回的 SQLite 版本标识符 在SQLITE_SOURCE_ID宏中找到的 sqlite3_sourceid() C API 是 现在是 64 位 SHA3-256 哈希,而不是 40 位 SHA1 哈希。
将 json_patch() SQL 函数添加到 JSON1 扩展中。
增强 LIKE 优化,使其适用于任意表达式 左侧,只要右侧的 LIKE 模式不 以数字或减号开头。
添加了 sqlite3_set_last_insert_rowid() 接口并在 FTS3、FTS4 和 FTS5 扩展,以确保 sqlite3_last_insert_rowid() 接口始终返回合理的值。
增强 PRAGMA integrity_check 和 PRAGMA quick_check,以便它们验证 CHECK 约束。
增强联接的查询计划,以便及早检测空表和 停止而不做不必要的工作。
增强 sqlite3_mprintf() 系列接口和 printf SQL 函数,将整数的逗号分隔符放在千分万分处,如果使用“,”格式修饰符 用于“%”和“d”之间(例如:“%,d”)。
添加了 -DSQLITE_MAX_MEMORY=N 编译时选项。
在命令行 shell 中添加了 .sha3sum dot-command 和 .selftest dot-command。
开始强制执行SQLITE_LIMIT_VDBE_OP。例如,这可用于防止 接受来自 SQL 查询的系统中的预准备语句过大 不受信任的用户。
各种性能改进。
错误修复:

确保正确处理具有排序规则序列的索引表达式。 修复了工单 eb703ba7b50c1a5。
修复“开始…”中的错误日期和时间函数的修饰符。 票号 6097cb92745327a1
修复复杂递归触发器中的潜在段错误,该错误由 作为性能优化的一部分引入的OP_Once操作码中的错误 版本 3.15.0。 票号 06796225f59c057c
在 RBU 扩展中,添加额外的同步操作以避免 电源故障后损坏。
The sqlite3_trace_v2() output for nested SQL statements should always begin with a “–” comment marker.
Hashes:

SQLITE_SOURCE_ID: “2017-03-28 18:48:43 424a0d380332858ee55bdebc4af3789f74e70a2b3ba1cf29d84b9b4bcf3e2e37”
SHA3-256 for sqlite3.c: cbf322df1f76be57fb3be84f3da1fc71d1d3dfdb7e7c2757fb0ff630b3bc2e5d
2017-02-13 (3.17.0)
Approximately 25% better performance from the R-Tree extension.
Uses compiler built-ins (ex: __builtin_bswap32() or _byteswap_ulong()) for byteswapping when available.
Uses the sqlite3_blob key/value access object instead of SQL for pulling content out of R-Tree nodes
Other miscellaneous enhancements such as loop unrolling.
Add the SQLITE_DEFAULT_LOOKASIDE compile-time option.
Increase the default lookaside size from 512,125 to 1200,100 as this provides better performance while only adding 56KB of extra memory per connection. Memory-sensitive applications can restore the old default at compile-time, start-time, or run-time.
Use compiler built-ins __builtin_sub_overflow(), __builtin_add_overflow(), and __builtin_mul_overflow() when available. (All compiler built-ins can be omitted with the SQLITE_DISABLE_INTRINSIC compile-time option.)
Added the SQLITE_ENABLE_NULL_TRIM compile-time option, which can result in significantly smaller database files for some applications, at the risk of being incompatible with older versions of SQLite.
Change SQLITE_DEFAULT_PCACHE_INITSZ from 100 to 20, for improved performance.
Added the SQLITE_UINT64_TYPE compile-time option as an analog to SQLITE_INT64_TYPE.
Perform some UPDATE operations in a single pass instead of in two passes.
Enhance the session extension to support WITHOUT ROWID tables.
Fixed performance problems and potential stack overflows when creating views from multi-row VALUES clauses with hundreds of thousands of rows.
Added the sha1.c extension.
In the command-line shell, enhance the “.mode” command so that it restores the default column and row separators for modes “line”, “list”, “column”, and “tcl”.
Enhance the SQLITE_DIRECT_OVERFLOW_READ option so that it works in WAL mode as long as the pages being read are not in the WAL file.
Enhance the Lemon parser generator so that it can store the parser object as a stack variable rather than allocating space from the heap and make use of that enhancement in the amalgamation.
Other performance improvements. Uses about 6.5% fewer CPU cycles.
Bug Fixes:

Throw an error if the ON clause of a LEFT JOIN references tables to the right of the ON clause. This is the same behavior as PostgreSQL. Formerly, SQLite silently converted the LEFT JOIN into an INNER JOIN. Fix for ticket 25e335f802dd.
Use the correct affinity for columns of automatic indexes. Ticket 7ffd1ca1d2ad4ec.
Ensure that the sqlite3_blob_reopen() interface can correctly handle short rows. Fix for ticket e6e962d6b0f06f46e.
Hashes:

SQLITE_SOURCE_ID: “2017-02-13 16:02:40 ada05cfa86ad7f5645450ac7a2a21c9aa6e57d2c”
SHA1 for sqlite3.c: cc7d708bb073c44102a59ed63ce6142da1f174d1
2017-01-06 (3.16.2)
Fix the REPLACE statement for WITHOUT ROWID tables that lack secondary indexes so that it works correctly with triggers and foreign keys. This was a new bug caused by performance optimizations added in version 3.16.0. Ticket 30027b613b4
Fix the sqlite3_value_text() interface so that it correctly translates content generated by zeroblob() into a string of all 0x00 characters. This is a long-standing issue discovered after the 3.16.1 release by OSS-Fuzz
Fix the bytecode generator to deal with a subquery in the FROM clause that is itself a UNION ALL where one side of the UNION ALL is a view that contains an ORDER BY. This is a long-standing issue that was discovered after the release of 3.16.1. See ticket 190c2507.
Adjust the sqlite3_column_count() API so it more often returns the same values for PRAGMA statements as it did in prior releases, to minimize disruption to applications that might be using that interface in unexpected ways.
Hashes:

SQLITE_SOURCE_ID: “2017-01-06 16:32:41 a65a62893ca8319e89e48b8a38cf8a59c69a8209”
SHA1 for sqlite3.c: 2bebdc3f24911c0d12b6d6c0123c3f84d6946b08
2017-01-03 (3.16.1)
Fix a bug concerning the use of row values within triggers (see ticket 8c9458e7) that was in version 3.15.0 but was not reported until moments after the 3.16.0 release was published.
Hashes:

SQLITE_SOURCE_ID: “2017-01-03 18:27:03 979f04392853b8053817a3eea2fc679947b437fd”
SHA1 for sqlite3.c: 354f6223490b30fd5320b4066b1535e4ce33988d
2017-01-02 (3.16.0)
Uses 9% fewer CPU cycles. (See the CPU performance measurement report for details on how this performance increase was computed.)
Added experimental support for PRAGMA functions.
Added the SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE option to sqlite3_db_config().
Enhance the date and time functions so that the ‘unixepoch’ modifier works for the full span of supported dates.
Changed the default configuration of the lookaside memory allocator from 500 slots of 128 bytes each into 125 slots of 512 bytes each.
Enhanced “WHERE x NOT NULL” partial indexes so that they are usable if the “x” column appears in a LIKE or GLOB operator.
Enhanced sqlite3_interrupt() so that it interrupts checkpoint operations that are in process.
Enhanced the LIKE and GLOB matching algorithm to be faster for cases when the pattern contains multiple wildcards.
Added the SQLITE_FCNTL_WIN32_GET_HANDLE file control opcode.
Added “.mode quote” to the command-line shell.
Added “.lint fkey-indexes” to the command-line shell.
Added the .imposter dot-command to the command-line shell.
Added the remember(V,PTR) SQL function as a loadable extension.
Rename the SQLITE_OMIT_BUILTIN_TEST compile-time option to SQLITE_UNTESTABLE to better reflect the implications of using it.
Bug Fixes:

Fix a long-standing bug in the query planner that caused incorrect results on a LEFT JOIN where the left-hand table is a subquery and the join constraint is a bare column name coming from the left-hand subquery. Ticket 2df0107b.
Correctly handle the integer literal -0x8000000000000000 in the query planner.
Hashes:

SQLITE_SOURCE_ID:“2017-01-02 11:57:58 04ac0b75b1716541b2b97704f4809cb7ef19cccf”
SHA1 for sqlite3.c: e2920fb885569d14197c9b7958e6f1db573ee669
2016-11-28 (3.15.2)
对版本 3.15.0 中引入的行值逻辑进行了多个 bug 修复。
修复恶意构造后附加/分离中的空指针取消引用 语法错误。票证 2f1b168ab4d4844。
修复内存不足后可能发生的崩溃 在内置的 instr() 函数中。
在 JSON 扩展中,修复 JSON 验证程序,使其正确拒绝 字符串中的无效反斜杠转义。
散 列:

SQLITE_SOURCE_ID: “2016-11-28 19:13:37 bbd85d235f7037c6a033a9690534391ffeacecc8”
SHA1 for sqlite3.c: 06d77b42a3e70609f8d4bbb97caf53652f1082cb
2016-11-04 (3.15.1)
添加了SQLITE_FCNTL_WIN32_GET_HANDLE文件控制操作码。
修复 VACUUM 命令,使其将多余的内容溢出到磁盘 而不是将所有内容保存在内存中,并可能导致内存不足 较大的数据库文件出错。这修复了 引入的问题 版本 3.15.0。
修复案例(自 3.8.0 - 2013-08-26 起存在) 其中左联接的 ON 子句中的 OR 连接项 可能会导致不正确的结果。票证 34a579141b2c5ac。
修复了在左连接的 ON 子句中使用行值的情况 可能会导致不正确的结果。票证 fef4bb4bd9185ec8f。
散 列:

SQLITE_SOURCE_ID:“2016-11-04 12:08:49 1136863c76576110e710dd5d69ab6bf347c65e36”
SHA1 for sqlite3.c: e7c26a7be3e431dd06898f8d262c4ef240c07366
2016-10-14 (3.15.0)
添加了对行值的支持。
允许在部分索引的 WHERE 子句中使用确定性 SQL 函数。
在 unix VFS 上添加了“modeof=filename”URI 参数
添加了对SQLITE_DBCONFIG_MAINDBNAME的支持。
添加了清空附加数据库的功能。
命令行外壳的增强功能:
添加“.testcase”和“.check”点命令。
在“.open”点命令中添加了 --new 选项,导致 在清除之前要清除的数据库中任何先前的内容 开放。
增强 fts5vocab 虚拟表以有效地处理“按术语排序”。
其他微优化可将 CPU 使用率降低 7% 以上 在常见工作负载上。此版本中的大多数优化都针对 前端 (sqlite3_prepare_v2())。
错误修复:

乘法运算符现在可以正确检测 64 位整数溢出 并在所有极端情况下提升为浮点数。修复了票证 1ec41379c9c1e400。
正确处理具有冗余唯一索引的列,当这些列 列用于 IN 运算符的 LHS。修复票证 0eab1ac759。
跳过表达式索引中范围查询的 NULL 条目。 修复票证 4baa46491212947。
确保sqlite_sequence中的自动增量计数器 表初始化在“插入…选择” 语句。修复了票证 7b3328086a5c116c 的问题。
确保按限额排序优化 (从入住 559733B09E 开始) 在整数主键上使用 IN 运算符。修复票证 96c1454c
散 列:

SQLITE_SOURCE_ID: “2016-10-14 10:20:30 707875582fcba352b4906a595ad89198d84711d8”
SHA1 for sqlite3.c: fba106f8f6493c66eeed08a2dfff0907de54ae76
2016-09-12 (3.14.2)
改进了对在 winsqlite3.dll 中使用 STDCALL 调用约定的支持。
Fix the sqlite3_trace_v2() interface so that it is disabled if either the callback or the mask arguments are zero, in accordance with the documentation.
Fix commenting errors and improve the comments generated on EXPLAIN listings when the -DSQLITE_ENABLE_EXPLAIN_COMMENTS compile-time option is used.
Fix the “.read” command in the command-line shell so that it understands that its input is not interactive.
Correct affinity computations for a SELECT on the RHS of an IN operator. Fix for ticket 199df4168c.
The ORDER BY LIMIT optimization is not valid unless the inner-most IN operator loop is actually used by the query plan. Fix for ticket 0c4df46116e90f92.
Fix an internal code generator problem that was causing some DELETE operations to no-op. Ticket ef360601
Hashes:

SQLITE_SOURCE_ID: “2016-09-12 18:50:49 29dbef4b8585f753861a36d6dd102ca634197bd6”
SHA1 for sqlite3.c: bcc4a1989db45e7f223191f2d0f66c1c28946383
2016-08-11 (3.14.1)
A performance enhancement to the page-cache “truncate” operation reduces COMMIT time by dozens of milliseconds on systems with a large page cache.
Fix to the --rbu option of sqldiff.
Hashes:

SQLITE_SOURCE_ID: “2016-08-11 18:53:32 a12d8059770df4bca59e321c266410344242bf7b”
SHA1 for sqlite3.c: d545b24892278272ce4e40e0567d69c8babf12ea
2016-08-08 (3.14)

Celebrating the SQLite “π release” with a home-baked pie.
Added support for WITHOUT ROWID virtual tables.
Improved the query planner so that the OR optimization can be used on virtual tables even if one or more of the disjuncts use the LIKE, GLOB, REGEXP, MATCH operators.
Added the CSV virtual table for reading RFC 4180 formatted comma-separated value files.
Added the carray() table-valued function extension.
Enabled persistent loadable extensions using the new SQLITE_OK_LOAD_PERMANENTLY return code from the extension entry point.
Added the SQLITE_DBSTATUS_CACHE_USED_SHARED option to sqlite3_db_status().
Add the vfsstat.c loadable extension - a VFS shim that measures I/O together with an eponymous virtual table that provides access to the measurements.
Improved algorithm for running queries with both an ORDER BY and a LIMIT where only the inner-most loop naturally generates rows in the correct order.
Enhancements to Lemon parser generator, so that it generates a faster parser.
The PRAGMA compile_options command now attempts to show the version number of the compiler that generated the library.
Enhance PRAGMA table_info so that it provides information about eponymous virtual tables.
Added the “win32-none” VFS, analogous to the “unix-none” VFS, that works like the default “win32” VFS except that it ignores all file locks.
The query planner uses a full scan of a partial index instead of a full scan of the main table, in cases where that makes sense.
Allow table-valued functions to appear on the right-hand side of an IN operator.
Created the dbhash.exe command-line utility.
Added two new C-language interfaces: sqlite3_expanded_sql() and sqlite3_trace_v2(). These new interfaces subsume the functions of sqlite3_trace() and sqlite3_profile() which are now deprecated.
Added the json_quote() SQL function to the json1 extension.
Disable the authorizer callback while reparsing the schema.
Added the SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION compile-time option and turned that option on by default when building the command-line shell.
Bug Fixes:

Fix the ALTER TABLE command so that it does not corrupt descending indexes when adding a column to a legacy file format database. Ticket f68bf68513a1c15f
Fix a NULL-pointer dereference/crash that could occurs when a transitive WHERE clause references a non-existent collating sequence. Ticket e8d439c77685eca6.
Improved the cost estimation for an index scan which includes a WHERE clause that can be partially or fully evaluated using columns in the index and without having to do a table lookup. This fixes a performance regression that occurred for some obscure queries following the ORDER BY LIMIT optimization introduced in version 3.12.0.
Hashes:

SQLITE_SOURCE_ID: “2016-08-08 13:40:27 d5e98057028abcf7217d0d2b2e29bbbcdf09d6de”
SHA1 for sqlite3.c: 234a3275d03a287434ace3ccdf1afb208e6b0e92
2016-05-18 (3.13.0)
Postpone I/O associated with TEMP files for as long as possible, with the hope that the I/O can ultimately be avoided completely.
Merged the session extension into trunk.
Added the “.auth ON|OFF” command to the command-line shell.
Added the “–indent” option to the “.schema” and “.fullschema” commands of the command-line shell, to turn on pretty-printing.
Added the “.eqp full” option to the command-line shell, that does both EXPLAIN and EXPLAIN QUERY PLAN on each statement that is evaluated.
Improved unicode filename handling in the command-line shell on Windows.
Improved resistance against goofy query planner decisions caused by incomplete or incorrect modifications to the sqlite_stat1 table by the application.
Added the sqlite3_db_config(db,SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION) interface which allows the sqlite3_load_extension() C-API to be enabled while keeping the load_extension() SQL function disabled for security.
Change the temporary directory search algorithm on Unix to allow directories with write and execute permission, but without read permission, to serve as temporary directories. Apply this same standard to the “.” fallback directory.
Bug Fixes:

Fix a problem with the multi-row one-pass DELETE optimization that was causing it to compute incorrect answers with a self-referential subquery in the WHERE clause. Fix for ticket dc6ebeda9396087
Fix a possible segfault with DELETE when table is a rowid table with an INTEGER PRIMARY KEY and the WHERE clause contains a OR and the table has one or more indexes that are able to trigger the OR optimization, but none of the indexes reference any table columns other than the INTEGER PRIMARY KEY. Ticket 16c9801ceba49.
When checking for the WHERE-clause push-down optimization, verify that all terms of the compound inner SELECT are non-aggregate, not just the last term. Fix for ticket f7f8c97e97597.
Fix a locking race condition in Windows that can occur when two or more processes attempt to recover the same hot journal at the same time.
Hashes:

SQLITE_SOURCE_ID: “2016-05-18 10:57:30 fc49f556e48970561d7ab6a2f24fdd7d9eb81ff2”
SHA1 for sqlite3.c: 9b9171b1e6ce7a980e6b714e9c0d9112657ad552
错误修复向后移植到补丁版本 3.12.2 (2016-04-18):

修复版本 3.12.0 和 3.12.1 中的向后兼容性问题: 声明为“整数”主键的列(周围有引号 数据类型关键字)未被识别为整数主键,这导致了不兼容的数据库文件。 票号 7d7525cb01b68
修复了一个错误(自版本 3.9.0 以来一直存在),如果 PRAGMA reverse_unordered_selects处于打开状态,该错误可能会导致 DELETE 操作漏行。 机票 a306e56ff68b8fa5
修复了代码生成器中的一个错误,该错误可能导致不正确的结果,如果出现以下情况 联接两个或多个虚拟表,并在 连接的外部循环具有 IN 运算符约束。
在确定时正确解释负的“PRAGMA cache_size”值 用于对大量数据进行排序的缓存大小。
错误修复向后移植到补丁版本 3.12.1 (2016-04-08):

修复版本 3.12.0 引入的边界条件错误 这可能会导致在大量使用保存点期间崩溃。 票 7f7f8026eda38。
修复视图,以便它们从 如果可能,定义它们所依据的表。
修复查询计划器,以便 IS 和 IS NULL 运算符能够 以驱动左外连接上的索引。
2016-04-18 (3.12.2)
修复版本 3.12.0 和 3.12.1 中的向后兼容性问题: 声明为“整数”主键的列(周围有引号 数据类型关键字)未被识别为整数主键,这导致了不兼容的数据库文件。 票号 7d7525cb01b68
修复了一个错误(自版本 3.9.0 以来一直存在),如果 PRAGMA reverse_unordered_selects处于打开状态,该错误可能会导致 DELETE 操作漏行。 机票 a306e56ff68b8fa5
修复了代码生成器中的一个错误,该错误可能导致不正确的结果,如果出现以下情况 联接两个或多个虚拟表,并在 连接的外部循环具有 IN 运算符约束。
在确定时正确解释负的“PRAGMA cache_size”值 用于对大量数据进行排序的缓存大小。
散 列:

SQLITE_SOURCE_ID:“2016-04-18 17:30:31 92dc59fd5ad66f646666042eb04195e3a61a9e8e”
SHA1 for sqlite3.c: de5a5898ebd3a3477d4652db143746d008b24c83
2016-04-08 (3.12.1)
修复版本 3.12.0 引入的边界条件错误 这可能会导致在大量使用保存点期间崩溃。 票 7f7f8026eda38。
修复视图,以便它们从 如果可能,定义它们所依据的表。
修复查询计划器,以便 IS 和 IS NULL 运算符能够 以驱动左外连接上的索引。
散 列:

SQLITE_SOURCE_ID: “2016-04-08 15:09:49 fe7d3b75fe1bde41511b323925af8ae1b910bc4d”
SHA1 for sqlite3.c: ebb18593350779850e3e1a930eb84a70fca8c1d1
2016-04-01 (3.9.3)
向后移植简单的查询规划器优化,允许 IS 运算符 以驱动左外连接上的索引。与版本 3.9.2 基线相比没有其他更改。
2016-03-29 (3.12.0)
潜在的颠覆性变化:

SQLITE_DEFAULT_PAGE_SIZE从 1024 增加到 4096。 SQLITE_DEFAULT_CACHE_SIZE从 2000 更改为 -2000,因此 默认情况下使用相同数量的缓存内存。 有关更多信息,请参阅有关版本 3.12.0 页面大小更改的应用说明。
性能增强:

增强了 Lemon 解析器生成器,使其创建更小、更快的 SQL 解析器。
仅当两个或多个附加数据库全部存在时,才创建主日志文件 已修改,未将 PRAGMA 同步设置为 OFF,并且 不要将journal_mode设置为关闭、内存或 WAL。
仅当语句日志文件的大小超过阈值时才创建语句日志文件。 否则,日志将保存在内存中,并且不会发生 I/O。阈值 可以在编译时使用 SQLITE_STMTJRNL_SPILL 或 使用 sqlite3_config(SQLITE_CONFIG_STMTJRNL_SPILL) 的开始时间。
查询计划器能够优化虚拟表上的 IN 运算符,即使 xBestIndex 方法未设置 sqlite3_index_constraint_usage.省略标志 IN 运算符左侧的虚拟表列。
查询规划器现在可以更好地优化 3 路或更高联接中的虚拟表访问,其中对虚拟的约束 表拆分到连接的两个或多个其他表中。
更高效地处理应用程序定义的 SQL 函数,尤其是 在应用程序定义数百或数千个 自定义函数。
查询计划程序在估算成本时考虑 LIMIT 子句 的顺序。
配置脚本(在 unix 上)自动检测 pread() 和 pwrite() 并设置编译时选项以使用这些操作系统 接口(如果可用)。
减少保存架构所需的内存量。
其他其他微优化,以提高性能并减少 内存使用情况。
新功能:

向 sqlite3_db_config() 添加了 SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER 选项,该选项允许 fts3_tokenizer() SQL 函数的双参数版本 在运行时启用或禁用。
将 sqlite3rbu_bp_progress() 接口添加到 RBU 扩展。
PRAGMA defer_foreign_keys=ON 语句现在也禁用对外键的 RESTRICT 操作。
添加了 sqlite3_system_errno() 接口。
添加了SQLITE_DEFAULT_SYNCHRONOUS和SQLITE_DEFAULT_WAL_SYNCHRONOUS编译时选项。SQLITE_DEFAULT_SYNCHRONOUS编译时选项 替换不再受支持的SQLITE_EXTRA_DURABLE选项。
增强了命令行外壳中的“.stats”命令以显示更多内容 有关从 /proc 获取的 I/O 性能的信息(如果可用)。
错误修复:

确保来自多个触发器的 sqlite3_set_auxdata() 值 在单个语句中不要相互干扰。 票证 dc9b1c91。
修复“x IN (SELECT…)”形式的表达式的代码生成器,其中 RHS 上的 SELECT 语句是一个相关的子查询。 票证 5e3c886796e5512e。
修复与 sqlite3_db_readonly() 接口关联的无害 TSAN 警告。
散 列:

SQLITE_SOURCE_ID: “2016-03-29 10:14:15 e9bb4cf40f4971974a74468ef922bdee481c988b”
SHA1 for sqlite3.c: cba2be96d27cb51978cd4a200397a4ad178986eb
2016-03-03 (3.11.1)
改进了 VisualStudio 使用的生成文件和构建脚本。
修复了 FTS5 中“优化”命令可能导致索引损坏的问题。
修复了使用 FTS5 查询损坏时可能发生的缓冲区过度读取 数据库文件。
将 spellfix1 扩展名的最大“范围”值从 6 增加到 30。
SQLITE_SOURCE_ID:“2016-03-03 16:17:53 f047920ce16971e573bc6ec9a48b118c9de2b3a7”
SHA1 for sqlite3.c: 3da832fd2af36eaedb05d61a8f4c2bb9f3d54265
2016-02-15 (3.11.0)
一般改进:

增强的 WAL 模式,以便它有效地处理以下事务 比cache_size大。
添加了 FTS5 详细信息选项。
在 PRAGMA 同步中添加了“额外”选项,该选项执行同步 在 DELETE 模式下取消链接回滚日志时包含目录, 以获得更好的耐用性。默认情况下,SQLITE_EXTRA_DURABLE编译时选项启用 PRAGMA sync=EXTRA。
增强了查询规划器,使其能够使用 作为 OR 优化一部分的覆盖索引。
避免重新计算 NOT NULL 和 CHECK 约束不变 更新语句中的列。
许多微优化,导致一个库 比以前的版本更快。
命令行外壳的增强功能:

默认情况下,外壳现在处于“自动解释”模式。解释命令的输出会自动格式化。
添加了“.vfslist”点命令。
现在打开SQLITE_ENABLE_EXPLAIN_COMMENTS编译时选项 在标准版本中默认打开。
TCL 接口的增强功能:

如果使用“-uri 1”选项打开数据库连接,则“备份”和“还原”命令支持URI文件名。
在 “sqlite3” 命令中添加了 “-sourceid” 选项。
生成文件改进:

改进了配置脚本中的线程检测。
添加从合并压缩包执行 MSVC Windows 构建的功能。
错误修复

修复了 VDBE 临时寄存器之间不正确共享的问题 在模糊情况下可能导致不正确查询结果的协程。票 d06a25c84454a。
修复了 sqlite3_result_subtype() 接口中可能出现的问题 在晦涩的情况下导致 json1 扩展出现问题。 修复了票证 f45ac567eaa9f9。
JSON 字符串中的转义控制字符。修复了票证 ad2559db380abf8 的问题。
在内置中重新启用 xCurrentTime 和 xGetLastError 方法。 Unix VFSes,只要没有定义SQLITE_OMIT_DEPRECATED。
向后兼容性:

由于持续的安全问题,双参数版本 很少使用和鲜为人知的 fts3_tokenizer() 函数是 除非 SQLite 是用SQLITE_ENABLE_FTS3_TOKENIZER编译的,否则禁用。
散 列:

SQLITE_SOURCE_ID: “2016-02-15 17:29:24 3d862f207e3adc00f78066799ac5a8c282430a5f”
SHA1 for sqlite3.c: df01436c5fcfe72d1a95bc172158219796e1a90b
2016-01-20 (3.10.2)
关键错误修复:

3.10.0 版本在 LIKE 运算符中引入了大小写折叠错误,已修复 通过此修补程序版本。票证 80369eddd5c94。
其他杂项错误修复:

修复了使用 -DSQLITE_HAS_CODEC 编译 SQLite 时可能发生的释放后使用问题。
修复构建,使其与 -DSQLITE_OMIT_WAL一起使用。
修复合并的配置脚本,以便 --readline 选项再次工作 在树莓派上。
散 列:

SQLITE_SOURCE_ID:“2016-01-20 15:27:19 17efb4209f97fb4971656086b138599a91a75ff9”
SHA1 for sqlite3.c: f7088b19d97cd7a1c805ee95c696abd54f01de4f
2016-01-14 (3.10.1)
新功能:

添加SQLITE_FCNTL_JOURNAL_POINTER文件控件。
错误修复:

修复了查询规划器中一个 16 个月前的错误,该错误可能会生成不正确的结果 当标量子查询尝试使用块排序优化时。票证cb3aa0641d9a4。
散 列:

SQLITE_SOURCE_ID: “2016-01-13 21:41:56 254419c36766225ca542ae873ed38255e3fb8588”
SHA1 for sqlite3.c: 1398ba8e4043550a533cdd0834bfdad1c9eab0f4
2016-01-06 (3.10.0)
一般改进:

添加了对虚拟表上的 LIKE、GLOB 和 REGEXP 运算符的支持。
将列字段添加到sqlite3_index_info以供 sqlite3_module.xBestIndex 方法。
增强 PRAGMA cache_spill 语句以接受 32 位整数 参数,这是禁止缓存溢出的阈值。
在 unix 上,如果打开了指向数据库文件的符号链接,则相应的 日志文件基于实际文件名,而不是符号链接名称。
在 sqldiff 中添加了“–事务”选项。
添加了 sqlite3_db_cacheflush() 接口。
添加了 sqlite3_strlike() 接口。
使用内存映射 I/O 时,将数据库文件映射为只读,以便杂散指针 和/或应用程序中的数组溢出不会意外修改数据库文件。
添加了实验性sqlite3_snapshot_get()、sqlite3_snapshot_open(), 和 sqlite3_snapshot_free() 接口。这些可能会在 后续版本。
增强日期和时间函数中的“utc”修饰符,使其在以下情况下为无操作 已知日期/时间已采用 UTC。(这不是兼容性中断,因为 在这种情况下,该行为长期以来一直被记录为“未定义”。
在 json 扩展中添加了 json_group_array() 和 json_group_object() SQL 函数。
添加了SQLITE_LIKE_DOESNT_MATCH_BLOBS编译时选项。
许多小的性能优化。
可移植性增强:

解决 HP/UX 上的 HP C 编译器优化器中的符号扩展错误。
命令行外壳的增强功能:

添加了“.更改打开|OFF“和”.vfsinfo“点命令。
在以下情况下在 MBCS 和 UTF8 之间进行转换 在 cmd.exe 中运行在 Windows 上。
生成文件的增强功能:

添加了 --enable-editline 和 --enable-static-shell 选项 到各种自动生成的配置脚本。
省略生成文件中所有“awk”的使用,以使MSVC用户更容易构建。
重要修复:

修复不一致的整数到浮点比较操作 如果在表上创建索引,可能会导致索引损坏 同时包含大整数和浮点值的列 类似的量级。机票 38a97a87a6。
修复查询规划器中可能发生在 格式错误的公用表表达式。
sqldiff 工具中的各种错误修复。
散 列:

SQLITE_SOURCE_ID: “2016-01-06 11:01:07 fd0a50f0797d154fefff724624f00548b5320566”
SHA1 for sqlite3.c: b92ca988ebb6df02ac0c8f866dbf3256740408ac
2015-11-02 (3.9.2)
修复架构解析器,以便它解释某些 (晦涩难懂且格式不正确) 创建与旧版相同的表语句。修复了票证 ac661962a2aeab3c331 的问题
修复可能导致错误查询规划器的问题 由于在子查询中使用自动索引而回答 相关标量子查询的 FROM 子句。修复了票证 8a2adec1。
SQLITE_SOURCE_ID: “2015-11-02 18:31:45 bda77dda9697c463c3d0704014d51627fceee328”
SHA1 for sqlite3.c: 1c4013876f50bbaa3e6f0f98e0147c76287684c1
2015-10-16 (3.9.1)
修复 json1 扩展名,使其无法将 ASCII 表单馈送识别为 空格字符,以符合 RFC-7159。修复工单 57eec374ae1d0a1d
添加一些#ifdef和构建脚本更改,以解决以下编译问题: 出现在 3.9.0 版本之后。
SQLITE_SOURCE_ID: “”2015-10-16 17:31:12 767c1727fec4ce11b83f25b3f1bfcfe68a2c8b02”
SHA1 for sqlite3.c: 5e6d1873a32d82c2cf8581f143649940cac8ae49
2015-10-14 (3.9.0)
政策变更:

SQLite 的版本编号约定已修订为使用 语义版本控制的新兴标准。
新功能和增强功能:

在源代码树和合并中添加了 json1 扩展模块。 使用SQLITE_ENABLE_JSON1编译时选项启用支持。
在合并中添加了全文搜索版本 5 (FTS5),已启用 使用SQLITE_ENABLE_FTS5。FTS5将被视为“实验性”(主题 到不兼容的更改),至少再有一个发布周期。
CREATE VIEW 语句现在接受 视图名称后面的列名称。
添加了对表达式索引的支持。
在 SELECT 语句的 FROM 子句中添加了对表值函数的支持。
添加了对同名虚拟表的支持。
VIEW 现在可以在以下情况下引用未定义的表和函数 最初创建。在以下情况下报告缺少表和函数 视图用于查询。
添加了 sqlite3_value_subtype() 和 sqlite3_result_subtype() 接口(由 json1 扩展使用)。
查询规划器现在能够使用包含以下内容的部分索引 WHERE 子句中的 AND 连接项。
sqlite3_analyzer.exe实用程序已更新以报告 每个 btree 并显示索引的平均扇出和 没有 ROWID 表。
增强了 dbstat 虚拟表,使其可用作表值函数,其中参数是要成为的模式 分析。
其他更改:

sqlite3_memory_alarm() 接口,已弃用,并且 8年无证,改为无证。
重要修复:

修复了 SQLite 加密扩展中的一个严重错误,即 可能导致数据库变得不可读和不可恢复,如果 VACUUM 命令 更改了加密随机数的大小。
在 sqlite3_initialize() 的实现中添加了内存屏障,以帮助确保它是线程安全的。
修复OR优化,使其始终忽略以下子计划 不要使用索引。
不要对源自的术语应用 WHERE 子句下推优化 在左连接的 ON 或 USING 子句中。修复了票证 c2a19d81652f40568c 的问题。
SQLITE_SOURCE_ID: “2015-10-14 12:29:53 a721fc0d89495518fe5612e2e3bbc60befd2e90d”
SHA1 for sqlite3.c: c03e47e152ddb9c342b84ffb39448bf4a2bd4288
2015-07-29 (3.8.11.1)
恢复PRAGMA未记录的副作用cache_size:武力 要分析的数据库架构(如果以前未访问过数据库)。
修复了 sqlite3_changes() 中针对 WITHOUT ROWID 表的长期问题,该问题在 3.8.11 发布后几个小时内报告。
SQLITE_SOURCE_ID: “2015-07-29 20:00:57 cf538e2783e468bbc25e7cb2a9ee64d3e0e80b2f”
SHA1 for sqlite3.c: 3be71d99121fe5b17f057011025bcf84e7cc6c84
2015-07-27 (3.8.11)
添加了实验性 RBU 扩展。请注意,此扩展是实验性的 并可能以不兼容的方式进行更改。
添加了实验性的 FTS5 扩展。请注意,此扩展是实验性的 并可能以不兼容的方式进行更改。
添加了 sqlite3_value_dup() 和 sqlite3_value_free() 接口。
增强 spellfix1 扩展以支持 ON 冲突子句。
IS 运算符现在能够驱动索引。
增强查询规划器以允许对 FROM 子句自动编制索引 由协程实现的子查询。
禁止在公用表表达式中使用“rowid”。
添加了 PRAGMA cell_size_check 命令,以便更好、更早 检测数据库文件损坏。
在 FTS3 中的 matchinfo() 函数中添加了 matchinfo ‘b’ 标志。
改进了数据库文件的模糊测试,修复了发现的问题。
添加模糊检查测试程序并自动运行此程序 在“make test”上使用SQL和数据库测试用例。
添加了静态互斥锁SQLITE_MUTEX_STATIC_VFS1并在 视窗VFS。
对于未运行完成的语句,将调用 sqlite3_profile() 回调(由 sqlite3_reset() 或 sqlite3_finalize())。
增强页面缓存,以便它可以将内存块预分配给 用于初始设置的页面缓存行。设置默认预分配 到 100 页。在常见工作负载上产生大约 5% 的性能提升。
各种微优化使相同的工作量增加 22.3% 相对于先前版本的 CPU 周期数。 SQLite 现在的运行速度是 3.8.0 版本的两倍,是 3.3.9 版的三倍 快到1.14.04版。 (在 speedtest64.c 工作负载上使用缓存研磨进行测量 Ubuntu 4.8 x2 与 gcc <>.<>.<> 和 -Os。您的表现可能会有所不同。
添加了 sqlite3_result_zeroblob64() 和 sqlite3_bind_zeroblob64() 接口。
重要错误修复:

修复创建表为,以便文本类型的列永远不会结束 持有 INT 值。票证 f2ad7de056ab1dc9200
修复创建表为,以便在右侧的 SELECT 语句时不会在sqlite_master表中留下 NULL 条目 中止并显示错误。机票 873cae2b6e25b
修复跳过扫描优化,使其在以下情况下正常工作 OR 优化用于不带 ROWID 表。票号 8fd39115d8f46
修复 sqlite3_memory_used() 和 sqlite3_memory_highwater() 接口 这样他们实际上确实提供了 64 位答案。
散 列:

SQLITE_SOURCE_ID: “2015-07-27 13:49:41 b8e92227a469de677a66da62e4361f099c0b79d0”
SHA1 for sqlite3.c: 719f6891abcd9c459b5460b191d731cd12a3643e
2015-05-20 (3.8.10.2)
修复了版本 3.8.7 引入的索引损坏问题。一个索引 用 TEXT 键可以通过插入到相应的 表(如果表有两个将键值转换为 INTEGER 的嵌套触发器) 并再次返回文本。 票号 34cd55d68e0
SQLITE_SOURCE_ID: “2015-05-20 18:17:19 2ef4f3a5b1d1d0c4338f8243d40a2452cc1f7fe4”
SHA1 for sqlite3.c: 638abb77965332c956dbbd2c8e4248e84da4eb63
2015-05-09 (3.8.10.1)
使 sqlite3_compileoption_used() 响应SQLITE_ENABLE_DBSTAT_VTAB编译时选项。
修复某些版本的 MSVC 上的命令行 shell 中的无害警告。
修复了 dbstat 虚拟表的小问题。
SQLITE_SOURCE_ID: “2015-05-09 12:14:55 05b4b1f2a937c06c90db70c09890038f6c98ec40”
SHA1 for sqlite3.c: 85e4e1c08c7df28ef61bb9759a0d466e0eefbaa2
2015-05-07 (3.8.10)
添加了 sqldiff.exe 实用程序,用于计算两者之间的差异 SQLite 数据库文件。
在 FTS3 的 matchinfo() 函数中添加了 matchinfo y 标志。
改进了 ORDER BY、真空、创建索引、PRAGMA integrity_check 和 PRAGMA quick_check的性能。
修复了在SQL模糊测试时发现的许多晦涩问题。
在接口文档中标识重要对象的所有方法。 (示例)
使美国Fuzzy Lop模糊器成为SQLite测试策略的标准部分。
将“.binary”和“.limits”命令添加到命令行外壳。
在以下情况下使 dbstat 虚拟表成为标准构建的一部分 使用 SQLITE_ENABLE_DBSTAT_VTAB 选项编译。
SQLITE_SOURCE_ID: “2015-05-07 11:53:08 cf975957b9ae671f34bb65f049acf351e650d437”
SHA1 for sqlite3.c: 0b34f0de356a3f21b9dfc761f3b7821b6353c570
2015-04-08 (3.8.9)
添加 VxWorks-7 作为官方支持和测试的平台。
添加了 sqlite3_status64() 接口。
修复内存大小跟踪,以便即使SQLite使用更多内存大小跟踪也可以工作 超过 2GiB 的内存。
添加了 PRAGMA index_xinfo命令。
修复了 sqlite32_blob_read() 和 sqlite3_blob_write() 接口中潜在的 3 位整数溢出问题。
确保预准备语句在扩展时自动重置 SQLITE_BUSY和SQLITE_LOCKED的错误代码,即使在编译时也是如此 使用SQLITE_OMIT_AUTORESET。
更正sqlite3_analyzer.exe实用程序中的错误计数 到没有 ROWID 表。
将“.dbinfo”命令添加到命令行外壳中。
提高使用 OR 运算符的 fts3/4 查询的性能 以及至少一个辅助 FTS 功能。
修复了 fts3 snippet() 函数中导致它省略的错误 以 列中的第一个标记。
SQLITE_SOURCE_ID: “2015-04-08 12:16:33 8a8ffc862e96f57aa698f93de10dee28e69f6e09”
SHA1 for sqlite3.c: 49f1c3ae347e1327b5aaa6c7f76126bdf09c6f42
2015-02-25 (3.8.8.3)
修复可能导致的错误(工单 2326c258d02ead33) 如果部分索引的限定约束出现在 左连接的 ON 子句。
添加了针对 “线路噪声” 命令行外壳的 Unix 版本中的命令行编辑库。
SQLITE_SOURCE_ID: “2015-02-25 13:29:11 9d6c1880fb75660bbabd693175579529785f8a6b”
SHA1 for sqlite3.c: 74ee38c8c6fd175ec85a47276dfcefe8a262827a
2015-01-30 (3.8.8.2)
增强sqlite3_wal_checkpoint_v2(TRUNCATE) 接口,以便截断 WAL 文件,即使没有检查点工作要做。
SQLITE_SOURCE_ID: “2015-01-30 14:30:45 7757fc721220e136620a89c9d28247f28bbbc098”
SHA1 for sqlite3.c: 85ce79948116aa9a087ec345c9d2ce2c1d3cd8af
2015-01-20 (3.8.8.1)
修复了排序逻辑中自版本 3.8.4 以来存在的错误,该错误可能导致 输出在包含 ORDER BY 子句的查询上以错误的顺序显示, 一个 LIMIT 子句,并且在结果集中具有大约 60 个或更多列。 票 f97c4637102a3ae72b79。
SQLITE_SOURCE_ID: “2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55”
SHA1 for sqlite3.c: 33987fb50dcc09f1429a653d6b47672f5a96f19e
2015-01-16 (3.8.8)
新功能:

添加了 PRAGMA data_version 命令,可用于确定 数据库文件已被另一个进程修改。
在 sqlite3_wal_checkpoint_v2() 界面中添加了 SQLITE_CHECKPOINT_TRUNCATE 选项,并进行了相应的增强 到普拉格玛wal_checkpoint。
添加了 sqlite3_stmt_scanstatus() 接口,仅在以下情况下可用 用SQLITE_ENABLE_STMT_SCANSTATUS编译。
增强了 sqlite3_table_column_metadata() 功能,可以在没有 ROWID 表的情况下正常工作,并检查是否存在 如果列名参数为 NULL,则为表。界面现在是 默认情况下也包含在构建中,不需要 SQLITE_ENABLE_COLUMN_METADATA编译时选项。
添加了SQLITE_ENABLE_API_ARMOR编译时选项。
添加了SQLITE_REVERSE_UNORDERED_SELECTS编译时选项。
添加了SQLITE_SORTER_PMASZ编译时选项和SQLITE_CONFIG_PMASZ启动时选项。
在 sqlite3_config() 中添加了 SQLITE_CONFIG_PCACHE_HDRSZ 选项,使应用程序更容易确定适当的 用于SQLITE_CONFIG_PAGECACHE的内存量。
VALUES 子句中的行数不再受SQLITE_LIMIT_COMPOUND_SELECT限制。
添加了 eval.c 可加载扩展,该扩展实现了递归的 eval() SQL 函数 评估 SQL。
性能增强:

减少平衡 b 树所涉及的 memcpy() 操作的数量, 整体性能提升 3.2%。
改进了跳过扫描优化的成本估算。
自动索引优化现在能够生成 部分索引(如果合适)。
错误修复:

确保断电后的耐用性 “PRAGMA journal_mode=TRUNCATE”,在截断后立即调用 fsync() 日志文件。
查询规划器现在可以识别右侧的任何列 左连接的表可以为 NULL,即使该列具有 NOT NULL 约束。在这些情况下,避免尝试优化 NULL 测试。 修复了票证 6f2222d550f5b0ee7ed 的问题。
确保 ORDER BY 将行按升序排列,即使 DISTINCT 运算符是使用降序索引实现的。修复了票证 c5ea805691bfc4204b1cb9e 的问题。
修复在多个线程运行时可能在压力下发生的数据争用 在共享缓存模式下,某些线程正在打开和 关闭连接。
修复美国模糊垂坠发现的晦涩崩溃错误。机票 a59ae93ee990a55。
解决 GCC 优化器错误(适用于 MacOS 4.2 上的 gcc 1.10.7),该错误导致 R-Tree 扩展在使用 -O3 编译时计算不正确的结果。
其他更改:

禁用 strchrnul() C 库例程的使用,除非它是 专门使用 -DHAVE_STRCHRNULL 编译时选项启用。
改进了 likelihood()、possible() 和 unpossible() SQL 提示函数的有效性和准确性。
SQLITE_SOURCE_ID: “2015-01-16 12:08:06 7d68a42face3ab14ed88407d4331872f5b243fdf”
SHA1 for sqlite3.c: 91aea4cc722371d58aae3d22e94d2a4165276905
2014-12-09 (3.8.7.4)
错误修复:添加先前版本中省略的互斥锁。
SQLITE_SOURCE_ID: “2014-12-09 01:34:36 f66f7a17b78ba617acde90fc810107f34f1a1f2e”
SHA1 for sqlite3.c: 0a56693a3c24aa3217098afab1b6fecccdedfd23
2014-12-05 (3.8.7.3)
错误修复:确保缓存的 KeyInfo 对象(内部抽象对 应用程序)在共享缓存模式下操作并频繁关闭时不会过时 并重新打开一些数据库连接,同时将其他数据库连接保留在 同一共享缓存持续打开。票证 e4a18565a36884b00edf。
错误修复:识别 LEFT JOIN 右侧表中的任何列都可以 NULL 即使列具有 NOT NULL 约束。不要应用以下优化: 假设该列永远不会为 NULL。票证 6f2222d550f5b0ee7ed。
SQLITE_SOURCE_ID: “2014-12-05 22:29:24 647e77e853e81a5effeb4c33477910400a67ba86”
SHA1 for sqlite3.c: 3ad2f5ba3a4a3e3e51a1dac9fda9224b359f0261
2014-11-18 (3.8.7.2)
增强 ROLLBACK 命令,以便允许挂起的查询继续运行很长时间 因为架构保持不变。以前,回滚会导致所有挂起的查询 失败并出现SQLITE_ABORT或SQLITE_ABORT_ROLLBACK错误。仍然返回该错误 如果回滚修改了架构。
错误修复:确保OP_Column的 NULL 结果完全完全为 NULL,并且 未设置MEM_Ephem位。 票证 094d39a4c95ee4。
错误修复:sqlite3_mprintf() 中的 %c 格式能够处理大于 70 的精度。
错误修复:不要自动从 SELECT 表单中删除 DISTINCT 关键字 IN 运算符的右侧,因为如果 SELECT 也有必要 包含限制。 票证 db87229497。
SQLITE_SOURCE_ID: “2014-11-18 20:57:56 2ab564bf9655b7c7b97ab85cafc8a48329b27f93”
SHA1 for sqlite3.c: b2a68d5783f48dba6a8cb50d8bf69b238c5ec53a
2014-10-29 (3.8.7.1)
在 PRAGMA journal_mode=TRUNCATE 模式下,在截断后立即调用 fsync() 日志文件,以确保事务在断电时持久。
修复更新字段的 NULL 值时可能发生的断言错误 位于使用“更改表添加列”添加的表的末尾。
不要尝试使用标准 C 库中的 strchrnul() 函数,除非 设置了HAVE_STRCHRNULL编译时选项。
修复了与在 WHERE 子句中使用 rowid 的视图上运行 UPDATE 或 DELETE 相关的几个问题。
SQLITE_SOURCE_ID: “2014-10-29 13:59:56 3b7b72c4685aa5cf5e675c2c47ebec10d9704221”
SHA1 for sqlite3.c: 2d25bd1a73dc40f538f3a81c28e6efa5999bdf0c
2014-10-17 (3.8.7)
性能增强:

许多微优化导致相同数量的工作量增加 20.3% 相对于先前版本的 CPU 周期数。 自版本 3.8.0 以来的累计性能提升为 61%。 (在 speedtest1.c 工作负载上使用缓存研磨进行测量 Ubuntu 13.10 x64 与 gcc 4.8.1 和 -OS。您的表现可能会有所不同。
分拣机可以使用辅助帮助程序线程来提高实时响应。 此功能默认处于关闭状态,可能是 使用 PRAGMA 线程命令或SQLITE_DEFAULT_WORKER_THREADS编译时选项启用。
增强跳过扫描优化,以便它能够跳过索引项 出现在索引的中间,而不仅仅是索引的左侧。
改进了 CAST 运算符的优化。
查询计划程序如何使用sqlite_stat4信息估算计划成本的各种改进。
新功能:

添加了具有 64 位长度参数的新接口:sqlite3_malloc64()、sqlite3_realloc64()、sqlite3_bind_blob64()、sqlite3_result_blob64()、sqlite3_bind_text64() 和 sqlite3_result_text64()。
添加了返回内存分配大小的新接口 sqlite3_msize() 从 sqlite3_malloc64() 及其变体中获得。
在 sqlite3_limit() 和 PRAGMA 线程命令中添加了SQLITE_LIMIT_WORKER_THREADS选项,用于配置可用工作线程数。
spellfix1 扩展允许应用程序选择性地为 每个插入。
添加了用户身份验证扩展。
错误修复:

修复了部分索引实现中可能导致错误错误的 bug 回答是否在子查询或视图中使用部分索引。 票 98d973b8f5。
修复了可能导致以错误方向扫描表的查询计划程序错误 (从而反转输出顺序)当使用 DESC 索引实现 ORDER BY 时 具有相同 GROUP BY 子句的查询上的子句。 门票ba7cbfaedc7e6。
修复了 sqlite3_trace() 中导致它有时无法打印的错误 一个 SQL 语句(如果需要重新准备该语句)。 票证 11d5aa455e0d98f3c1e6a08
修复错误的 assert() 语句。 票号 369d57fb8e5ccdff06f1
测试、调试和分析更改:

使用 “.selecttrace” 显示 ASCII 艺术抽象语法树图 以及命令行 shell 中的“.wheretrace”命令,当使用 SQLITE_DEBUG、SQLITE_ENABLE_SELECTTRACE 和SQLITE_ENABLE_WHERETRACE。还提供 sqlite3TreeViewExpr() 和 sqlite3TreeViewSelect() 入口点,可以使用 调试器,用于在断点处停止时显示分析树。
放弃对SQLITE_ENABLE_TREE_EXPLAIN的支持。选择跟踪机制提供 更多有用的诊断信息。
用于配置辅助设备的命令行 shell 的新选项 内存使用情况:–PageCache、–lookaside 和 --scratch。
SQLITE_SOURCE_ID: “2014-10-17 11:24:17 e4ab094f8afce0817f4074e823fabe59fc29ebb4”
SHA1 for sqlite3.c: 56dcf5e931a9e1fa12fc2d600cd91d3bf9b639cd
2014-08-15 (3.8.6)
在 SQL 解析器中添加了对十六进制整数文本的支持。 (例:0x123abc)
增强了 PRAGMA integrity_check 命令以检测 UNIQUE 和 NOT NULL 约束冲突。
将SQLITE_MAX_ATTACHED的最大值从 62 增加到 125。
将发出SQLITE_PROTOCOL错误之前 WAL 模式下的超时从 1 秒增加到 10 秒。
添加了可能的 (X) SQL 函数。
默认情况下,unicode61 分词器现在包含在 FTS4 中。
当 ANALYZE 跑。
在源代码树中添加了新的可加载扩展源代码文件:fileio.c
将扩展函数 readfile(X) 和 writefile(X,Y)(使用上一个项目符号中的 fileio.c 复制/粘贴的代码)添加到命令行 shell。
将 .fullschema dot-command 添加到命令行 shell。
性能增强:

在 IN 运算符的右侧。
将计算 IN 运算符的功能添加为序列 的比较作为使用表查找的替代方法。使用序列 在可能的情况下实施的比较 更快,例如当右侧的IN运算符 很小和/或经常变化。
查询计划程序现在使用sqlite_stat4信息(由 ANALYZE 创建) 以帮助确定跳过扫描优化是否合适。
确保查询计划程序从不尝试使用自制的瞬态 索引代替架构定义的索引。
其他小调整以提高VDBE代码的质量。
错误修复:

修复了 CREATE UNIQUE INDEX 中的一个错误,该错误在版本 3.8.2 中没有添加 ROWID 支持时引入,该错误允许非唯一 NOT NULL 列 给定一个唯一的索引。 机票 9a6daf340df99ba93c
修复了先前版本中引入的 R-Tree 扩展中的错误, 这可能会导致 在 IN 运算符的左侧。 票证 d2889096e7bdeac6。
修复 sqlite3_stmt_busy() 接口,使其给出正确答案 对于已步进但从未重置的回滚语句。
修复了会导致取消引用空指针的错误 如果具有 DEFAULT 的列是聚合函数,则试图查看其 违约。 票号 3a88d85f36704eebe1
命令行外壳的 CSV 输出现在始终使用 CRNL 用于 行分隔符,避免在 NL 中包含的 NL 前面插入 CR 数据。
修复了 IN 运算符的列关联性问题。 门票 9a8b09f8e6。
修复 ANALYZE 命令,以便它为sqlite_stat4表中的 WITHOUT ROWID 表添加正确的示例。 票 b2fa5424e6fcb15。
SQLITE_SOURCE_ID: “2014-08-15 11:46:33 9491ba7d738528f168657adb43a198238abde19e”
SHA1 for sqlite3.c: 72c64f05cd9babb9c0f9b3c82536d83be7804b1c
2014-06-04 (3.8.5)
添加了对按索引进行部分排序的支持。
增强查询规划器,使其始终首选使用 相对于其他索引的 WHERE 子句术语。
改进了 FTS4 的自动合并命令,以更好地控制索引大小 对于需要大量更新的全文索引。
将 sqlite3_rtree_query_callback() 接口添加到 R-Tree 扩展
添加了新的 URI 查询参数“nolock”和“不可变”。
通过不记住只读的 CHECK 约束来使用更少的内存 数据库连接。
为不带 ROWID 表启用 OR 优化。
呈现形式为“x IN (?)”的表达式(在 IN 运算符右侧的列表)好像它们在哪里“x==?”, 同样优化“x NOT IN (?)”
将“.system”和“.once”命令添加到命令行外壳。
将 SQLITE_IOCAP_IMMUTABLE 位添加到可返回的位集中 VFS的xDeviceFeatures方法。
添加了SQLITE_TESTCTRL_BYTEORDER测试控件。
错误修复:

在没有 FROM 子句的查询中忽略 OFFSET 子句。 票号 07d6a0453d
涉及表单表达式的查询断言错误 “x IN (?票证 e39d032577。
报告的列数据类型不正确。 机票 a8a0d2996a
针对超过的表的查询返回的重复行 16 个索引,每个索引位于单独的列上,并且全部通过 OR 连接的约束使用。 票号 10fb063b11
部分索引导致更新或替换断言错误。 票证 2ea3e9fe63
调用未记录的 SQL 函数 sqlite_rename_parent() 时崩溃 使用空参数。 机票 264b970c43
如果查询具有相同的分组依据,则忽略 ORDER BY。 机票 b75a9ca6b0
group_concat(x,‘’) SQL 函数返回 NULL 而不是空字符串 当所有输入均为空字符串时。 票号 55746f9e65
修复了 VDBE 代码生成器中导致崩溃的错误,该错误在以下情况下导致崩溃 正在插入…其中列数的 SELECT 语句 插入的列数大于目标中的列数 桌子。 票号 e9654505cfd
修复了命令行 shell 中 CSV 导入中的问题,其中如果第一行最左侧的字段 在CSV文件中,大小均为零字节,并且没有引号,没有数据 被导入。
修复了 FTS4 中包含的最左侧列的问题 作为前缀的未编制索引的列名 未编制索引,而不是名称完全匹配的列。
修复 sqlite3_db_readonly() 接口,使其在以下情况下返回 true 由于文件格式写入版本号,数据库是只读的 太大了。
SQLITE_SOURCE_ID: “2014-06-04 14:06:34 b1ed4f2a34ba66c29b130f8d13e9092758019212”
SHA1 for sqlite3.c: 7bc194957238c61b1a47f301270286be5bc5208c
2014-04-03 (3.8.4.3)
为可能导致混合查询的查询结果不正确的问题添加单字符修复 非重复、分组依据 在子查询中,以及排序依据。机票 98825a79ce14。
SQLITE_SOURCE_ID: “2014-04-03 16:53:12 a611fa96c4a848614efe899130359c9f6fb889c3”
SHA1 for sqlite3.c: 310a1faeb9332a3cd8d1f53b4a2e055abf537bdc
2014-03-26 (3.8.4.2)
修复了尝试搜索 数据库文件损坏。
SQLITE_SOURCE_ID: “2014-03-26 18:51:19 02ea166372bdb2ef9d8dfbb05e78a97609673a8e”
SHA1 for sqlite3.c: 4685ca86c2ea0649ed9f59a500013e90b3fe6d03
2014-03-11 (3.8.4.1)
解决 C 预处理器宏冲突,该冲突会破坏某些人的构建 Microsoft Visual Studio 的配置。
在计算跳过扫描优化的成本时,请考虑 需要多次搜索的事实。
SQLITE_SOURCE_ID: “2014-03-11 15:27:36 018d317b1257ce68a92908b05c9c7cf1494050d0”
SHA1 for sqlite3.c: d5cd1535053a50aa8633725e3595740b33709ac5
2014-03-10 (3.8.4)
代码优化和重构以提高性能。
将“.clone”和“.save”命令添加到命令行外壳。
更新命令行 shell 上的横幅,以便在新手用户出现时提醒他们 正在使用临时内存数据库。
修复命令行外壳中的编辑行支持。
添加对使用 sqlite3_test_control() SQLITE_TESTCTRL_VDBE_COVERAGE动词对 VDBE 程序进行覆盖测试的支持。
更新_FILE_OFFSET_BITS宏,以便构建在 QNX 上再次工作。
将 SrcList.nSrc 的数据类型从类型 u8 更改为类型 int 以解决此问题 AIX 上的 C 编译器中存在问题。
在Cygwin上获取扩展加载。
错误修复:修复 char() SQL 函数,使其返回空字符串 而不是使用零参数调用时的“内存不足”错误。
错误修复:DISTINCT 现在可以识别零斑点和所有斑点 0x00字节是一回事。门票 [fccbde530a]
错误修复:计算包含 IS NOT NULL 的查询的正确答案 WHERE 子句中的术语,并且在 WHERE 子句中还包含 OR 项,并且 使用SQLITE_ENABLE_STAT4进行编译。票证 [4c86b126f2]
错误修复:确保在 之间的连接中正确解析“rowid”列 普通表和不带 ROWID 表。票证 [c34d0557f7]
错误修复:确保不并发使用相同的临时寄存器 用于实现包含 ORDER 的复合 SELECT 语句的协程 BY子句,因为这种使用可能会导致错误的答案。票证 [8c63ff0eca]
错误修复:确保“ORDER BY random()”子句不会被优化。票据 [65bdeb9739]
Bug 修复:修复子选择语句中可能发生的名称解析错误 包含在触发器中。门票 [4ef7e3cfca]
错误修复:修复表单的列默认值表达式 “DEFAULT(-(-9223372036854775808))”,以便它们正常工作,初始化 该列到浮点值大约等于 +9223372036854775808.0.
SQLITE_SOURCE_ID: “2014-03-10 12:20:37 530a1ee7dc2435f80960ce4710a3c2d2bfaaccc5”
SHA1 for sqlite3.c: b0c22e5f15f5ba2afd017ecd990ea507918afe1c
2014-02-11 (3.8.3.1)
修复一个错误(票证 4c86b126f2) 这会导致某些带有 OR 子句的查询中缺少行,并且 不是 WHERE 子句中的空运算符,当使用 SQLITE_ENABLE_STAT3 或 SQLITE_ENABLE_STAT4 编译时选项时。
修复导致 VS2013 出现问题的无害编译器警告。
SQLITE_SOURCE_ID: “2014-02-11 14:52:19 ea3317a4803d71d88183b29f1d3086f46d68a00e”
SHA1 for sqlite3.c: 990004ef2d0eec6a339e4caa562423897fe02bf0
2014-02-03 (3.8.3)
添加了对公用表表达式和 WITH 子句的支持。
添加了 printf() SQL 函数。
在第 4 个参数中添加了 SQLITE_DETERMINISTIC 作为可选位到 sqlite3_create_function() 和相关接口,为应用程序提供 能够创建新函数,这些函数可以在以下情况下从内部循环中分解出来 他们不断争论。
添加错误代码SQLITE_READONLY_DBMOVED在开头返回 事务,指示基础数据库文件已重命名 或从SQLite下移出。
允许任意表达式,包括函数调用和子查询,在 ATTACH 的文件名参数。
允许在 SELECT 语句有效的任何位置使用 VALUES 子句。
重新设定 sqlite3_randomness(N,P) 在 N0 调用时使用的 PRNG 种子。 在 unix 上的 fork() 之后自动重新设定种子。
增强 spellfix1 虚拟表,使其可以按 rowid 高效搜索。
性能增强。
改进了运行 EXPLAIN 时 VDBE 字节码显示中的注释。
将“%token_class”指令添加到 Lemon 解析器生成器并使用它来简化 语法。
更改 Lemon 源代码以避免调用 OpenBSD 的 C 库函数 认为危险。(例如:冲刺)。
错误修复:在命令行 shell CSV 导入功能中,不要结束字段 当转义的双引号出现在 CRLN 行的末尾时。
SQLITE_SOURCE_ID: “2014-02-03 13:52:03 e816dd924619db5f766de6df74ea2194f3e3b538”
SHA1 for sqlite3.c: 98a07da78f71b0275e8d9c510486877adc31dbee
2013-12-06 (3.8.2)
更改了浮点值时 CAST 表达式的定义行为 大于 +9223372036854775807 被转换为整数,以便 结果是可能的最大整数 +9223372036854775807,而不是 可能的最小整数 -9223372036854775808。在此更改之后, CAST(9223372036854775809.0 作为 INT) 改为产生 +9223372036854775807 的 -9223372036854775808。←可能不兼容的更改!
添加了对不带 ROWID 表的支持。
将跳过扫描优化添加到查询计划程序。
扩展了虚拟表接口,特别是sqlite3_index_info对象,以允许虚拟表报告其估计值 查询将返回的行数。
更新 R 树扩展以使用增强的虚拟表 接口。
添加SQLITE_ENABLE_EXPLAIN_COMMENTS编译时选项。
增强了启用SQLITE_ENABLE_EXPLAIN_COMMENTS编译时选项时插入到 EXPLAIN 输出中的注释。
VDBE 中的性能增强,尤其是OP_Column操作码的性能增强。
内部循环中的因子常量子表达式输出到初始化代码 在准备好的声明中。
增强了命令行 shell 的“.explain”输出格式,以便缩进循环以更好地显示程序的结构。
增强了命令行外壳的“.timer”功能,使其 除了显示系统和用户时间外,还显示挂钟时间。
SQLITE_SOURCE_ID: “2013-12-06 14:53:30 27392118af4c38c5203a04b8013e1afdb1cebd0d”
SHA1 for sqlite3.c: 6422c7d69866f5ea3db0968f67ee596e7114544e
2013-10-17 (3.8.1)
添加了要使用的 unpossible() 和 prelihood() SQL 函数 作为对查询规划器的提示。
查询规划器的增强功能:
考虑不能与索引一起使用的 WHERE 子句术语的事实 仍然可能减少输出行的数量。
估计表和索引行的大小,并使用最小的适用 B 树 用于完整扫描和“计数()”操作。
添加了soft_heap_limit杂注。
添加了对SQLITE_ENABLE_STAT4的支持
在 sqlite_stat1.stat 字段末尾添加了对“sz=NNN”参数的支持 用于指定表行和索引行的平均长度(以字节为单位)。
避免在 UPDATE 上运行外键约束检查,如果 修改后的列与外键相关联。
添加了SQLITE_MINIMUM_FILE_DESCRIPTOR编译时选项
在Windows上添加了win32-longpath VFS,允许文件名高达32K 字符长度。
日期和时间功能得到增强,以便当前时间 (例如:Julianday(‘now’))对于多个函数调用总是相同的 在同一个 sqlite3_step() 调用中。
添加“totype.c”扩展,实现tointeger()和toreal() SQL 函数。
FTS4 查询能够更好地利用 docid<KaTeX parse error: Double subscript at position 2874: …一个入口点“sqlite3_X_̲init”,其中 “X”基于共…variable”始终绑定为 blob。
添加了用于确定自由列表当前大小的 PRAGMA freelist_count。
PRAGMA auto_vacuum=增量设置现在是永久性的。
将FD_CLOEXEC添加到Unix下所有打开的文件。
修复了 min()/max() 优化中的错误,当应用于 降序指数。
确保 TCL 语言界面在 64 位下正常工作 64 位计算机上的整数。
允许值 -9223372036854775808 在 SQL 中作为整数文本 语句。
在虚拟表中添加“隐藏”列的功能。
对所有对象使用宏SQLITE_PRIVATE(默认为“静态”) 合并中的内部功能。
向 FTS2 添加可插拔标记器和 ICU 标记化支持
其他小错误修复和文档增强功能
2007-06-18 (3.4.0)
修复了在出现SQLITE_BUSY错误时可能导致数据库损坏的错误 发生在显式事务和该事务的中间 后来被提交。票证#2409。
修复了在自动真空模式为 on 和 malloc() 失败跟随 CREATE TABLE 或 CREATE INDEX 语句 它本身遵循事务中的缓存溢出。看 票证#2418。
在大小和 SQLite可以处理的数量。此更改可能会导致 的兼容性问题 极端使用 SQLite 的应用程序,这就是为什么当前 版本是 3.4.0 而不是 3.3.18。
添加了对增量 BLOB I/O 的支持。
添加了 sqlite3_bind_zeroblob() 接口 和 zeroblob() SQL 函数。
添加了对增量真空的支持。
添加了SQLITE_MIXED_ENDIAN_64BIT_FLOAT编译时选项以支持 具有愚蠢字节序的 ARM7 处理器。
从核心库中删除了 sprintf() 和 strcpy() 的所有实例。
在全文搜索扩展中添加了对 Unicode 国际组件 (ICU) 的支持。
在 Windows 操作系统驱动程序中,如果尝试重新获取共享锁 获取独占锁失败。票证 #2354
修复 REPLACE() 函数,以便在第二个参数时返回 NULL。 是一个空字符串。票 #2324。
记录 sqlite3_column_blob() 和相关 API 中类型转换的危害。修复不必要的类型转换。票 #2321。
TRIM() 函数的国际化。票证 #2323
在内存区域之间移动时使用 memmove() 而不是 memcpy() 这可能会重叠。票证 #2334
修复了涉及复合 SELECT 中的子查询的优化器错误,该复合 SELECT 具有 ORDER BY 和 LIMIT 子句。票 #2339。
sqlite3_snprintf如果缓冲区大小为 小于 1。票证 #2341
修复内置的 printf 逻辑,使其打印“NaN”而不是“Inf” 浮点 NaN。票证 #2345
将 BLOB 转换为文本时,请使用主数据库的文本编码。 票证 #2349
在转换到 数值的。票证 #2364
修复了处理 UTF16 代码点0xE000中的错误
匹配 WHERE 约束时考虑显式整理子句 到查询优化器中的索引。票证 #2391
修复查询优化器以正确处理 中的常量表达式 左连接的 ON 子句。票证 #2403
修复查询优化器以处理与 NULL 的 rowid 比较 正确。票证 #2404
修复许多可能由恶意 SQL 引起的潜在段错误 语句。
2007-04-25 (3.3.17)
当数据库头的“write_version”值大于 库理解的内容,使数据库只读而不是 读。
其他小错误修复
2007-04-18 (3.3.16)
修复了在 独特的列。
恢复在 V3.3.14 中添加但在 V3.3.15 中回归的性能改进。
修复了在 上处理 ORDER BY 表达式时出现的问题 子查询中的复合 SELECT 语句。
修复了在 WinCE 上销毁锁时的潜在段错误 多线程环境。
文档更新。
2007-04-09 (3.3.15)
修复了 3.3.14 中引入的导致回滚 创建临时表以使数据库连接保持楔形。
修复了导致在以下情况下返回额外 NULL 行的错误 降序查询因对数据库的更改而中断。
触发器上的 For each 语句子句现在会导致语法 错误。它曾经被默默地忽略了。
修复可能导致的晦涩且相对无害的问题 I/O 错误后的资源泄漏。
对测试套件进行了许多改进。测试覆盖率现已超过 98%
2007-04-02 (3.3.14)
修复错误(工单 #2273) 当 IN 运算符时,可能会导致段错误 用于两列索引的一个术语和右侧 IN 运算符包含一个 NULL。
添加了用于确定扇区大小的新操作系统接口方法 底层媒体:sqlite3OsSectorSize()。
表单语句的新算法 插入到表 1 从表 2 中选择 * 速度更快,碎片更少。真空使用语句 这种形式,因此运行速度更快,碎片整理效果更好。
通过减少磁盘 I/O 增强性能:
在以下情况下,不要读取溢出链的最后一页 删除该行 - 只需将该页面添加到自由列表即可。
不要将要删除的页面存储在 回滚日志。
不要阅读(无意义的)内容 从自由列表中提取的页面。
不要刷新页面缓存(从而避免 缓存重填),除非另一个进程更改基础 数据库文件。
提交时截断而不是删除回滚日志 独占访问模式下的事务,或在提交 TEMP 时 数据库。
新增支持使用“PRAGMA locking_mode=独占”的独占访问模式
对大型缓冲区使用堆空间而不是堆栈空间 寻呼机 - 在具有堆栈空间的嵌入式平台上很有用 局限性。
添加一个生成文件目标“sqlite3.c”,该目标构建包含以下内容的合并 单个文件中的核心 SQLite 库 C 代码。
编译时使库正常工作 带有 GCC 选项“-限制别名”。
删除了残留SQLITE_PROTOCOL错误。
改进了测试覆盖率,修复了其他小错误, 内存泄漏堵塞, 代码重构和/或推荐放在更易于阅读的地方。
2007-02-13 (3.3.13)
在sqlite3_analyzer的输出中添加“碎片”度量。
添加用于显式设置排序规则序列的 COLLATE 运算符 由表达式使用。此功能被视为实验性待定 其他测试。
一个联接最多允许 64 个表 - 旧限制为 32 个。
添加了两个新的实验函数:randomblob() 和 hex()。 它们的预期用途是促进生成 UUID。
修复 PRAGMA count_changes所在的问题 导致使用触发器的表上的更新结果不正确
修复了 ORDER BY 子句优化器中一个错误,用于连接,其中 连接中最左侧的表受 UNIQUE 索引的约束。
修复了 TCL 接口的“复制”方法中的一个错误。
fts1 和 fts2 模块中的错误修复。
2007-01-27 (3.3.12)
修复了 IS NULL 优化中添加的另一个错误 版本 3.3.9。
修复深度嵌套视图上发生的断言错误。
限制 PRAGMA integrity_check生成的输出量。
细微的语法更改,以支持更多种类的编译器。
2007-01-22 (3.3.11)
修复了新 sqlite3_prepare_v2() API 实现中的另一个错误。 我们最终会把它做好…
修复了版本 3.3.9 中添加的 IS NULL 优化中的错误 - 该错误导致某些左联接出现不正确的结果,其中包括 在 WHERE 子句中,右侧表的 IS NULL 约束 左联接。
使 AreFileApisANSI() 成为 WinCE 中的无操作宏,因为 WinCE 不会 支持此功能。
2007-01-09 (3.3.10)
修复新 sqlite3_prepare_v2() API 实现中的错误 这可能导致段错误。
修复 1 秒舍入错误 strftime() 函数
增强 Windows 操作系统层以提供详细的错误代码
解决 win2k 问题,以便 SQLite 可以使用单字符 数据库文件名
user_version和schema_version的编译指示 在结果集中正确设置其列名
文档更新
2007-01-04 (3.3.9)
修复了 pager.c 中的错误,如果两个错误,则可能导致数据库损坏 两个进程都尝试在同一时刻恢复热日志
添加了 sqlite3_prepare_v2() API。
修复了命令行外壳中的“.dump”命令以显示 索引、触发器和视图再次出现。
更改table_info杂注,使其返回默认值的 NULL。 值(如果没有默认值)
支持 win95 文件名中的非 ASCII 字符
查询优化器增强功能:
优化器在使用索引来满足 ORDER BY 方面做得更好 按整数主键排序的子句
使用索引满足 WHERE 子句中的 IS NULL 运算符
修复了导致优化程序错过 OR 优化的错误 机会
优化程序可以更自由地对 FROM 子句中的表进行重新排序 即使在有左连接。
支持扩展加载添加到 WinCE
允许在表定义中的 DEFAULT 子句上使用约束名称
将“.bail”命令添加到命令行外壳
从命令行外壳输出 CSV(逗号分隔值) 更贴近公认的做法
添加了实验性 FTS2 模块
使用 sqlite3_mprintf() 而不是 strdup() 来避免 libc 依赖
VACUUM 使用官方 TEMP 文件夹中的临时文件,而不是 与原始数据库相同的目录
Windows 上临时文件名的前缀从“sqlite”更改为 到“etilqs”。
2006-10-09 (3.3.8)
支持使用 FTS1 模块进行全文搜索(测试版)
添加了 Mac OS X 锁定补丁(测试版 - 默认禁用)
引入扩展错误代码并为各种添加错误代码 各种 I/O 错误。
添加了对创建/删除触发器/视图上是否存在 IF 的支持
修复回归测试套件,使其与 Tcl8.5 配合使用
增强 sqlite3_set_authorizer() 以提供调用 SQL 函数。
新增实验性 API:sqlite3_auto_extension()
各种小错误修复
2006-08-12 (3.3.7)
添加了对虚拟表的支持(测试版)
添加了对动态加载扩展的支持(测试版)
可以为不同的线程调用 sqlite3_interrupt() 例程
添加了匹配运算符。
默认文件格式现在为 1。
2006-06-06 (3.3.6)
在 Windows 上使用病毒扫描程序时效果更好
更快:内存:数据库
修复 UTF-8 到 UTF-16 转换中的模糊段错误
添加了适用于 OS/2 的驱动程序
为聚合查询返回的正确列元信息
“解释查询计划”的增强输出
限制 0 现在适用于子查询
查询优化器中的错误修复和性能增强
正确处理附加和分离中的空文件名
改进了分析器中的语法错误消息
修复 IN 运算符的类型强制规则
2006-04-05 (3.3.5)
检查约束正确使用冲突解决算法。
SUM() 函数在整数溢出时引发错误。
从最左侧的 SELECT 中选择复合查询中的列名 而不是最右边。
sqlite3_create_collation() 函数 向SQLITE_UTF16_ALIGNED旗致敬。
SQLITE_SECURE_DELETE编译时选项会导致删除覆盖 带零的旧数据。
检测 abs() 中的整数溢出。
random() 函数提供 64 位随机性,而不是 只有 32 位。
解析器检测并报告自动机堆栈溢出。
将 round() 函数更改为返回 REAL 而不是 TEXT。
允许左外连接左侧表上的 WHERE 子句项 包含聚合子查询。
跳过文本中的前导空格到数字转换。
各种小错误和文档错别字修复和 性能增强。
2006-02-11 (3.3.4)
修复 Unix 互斥体实现中可能导致 多线程系统上的死锁。
修复 64 位计算机上的对齐问题
添加了全同步编译指示。
修复了可能导致一些异常的左外连接的优化器错误 给出不正确的结果。
SUM 函数检测整数溢出并转换为累加 使用浮点数的近似结果
主机参数名称可以以“@”开头,以便与 SQL Server 兼容。
其他杂项错误修复
2006-01-31 (3.3.3)
删除了对创建索引上的 ON CONFLICT 子句的支持 - 它从不 工作正常,所以这不应该出现任何向后兼容性 问题。
授权方回调现在通知了更改表添加列命令
对 TEMP 数据库模式进行任何更改后,所有预准备语句 已失效,必须使用新的调用重新创建 sqlite3_prepare()
为第一个稳定版本做准备的其他小错误修复 版本 3.3
2006-01-24 (3.3.2 测试版)
错误修复和速度改进。提高测试覆盖率。
对操作系统层接口的更改:互斥锁现在必须是递归的。
停止使用特定于线程的数据来处理内存不足 异常处理
2006-01-16 (3.3.1 测试版)
无数的错误修复
速度改进
数据库连接现在可以由多个线程使用,而不仅仅是 在其中创建它们的线程。
2006-01-11 (3.3.0 测试版)
检查约束
如果存在,则为创建/删除表/索引上的子句。
DESC 指数
更高效的布尔值编码,从而缩小数据库 文件
更具侵略性的SQLITE_OMIT_FLOATING_POINT
分离整数和实数亲和力
为操作系统界面添加了虚拟功能层
添加到 TCL 接口的“存在”方法
改进了对内存不足错误的响应
可以选择在连接之间共享数据库缓存 在同一线程中
可选的读取未提交隔离(而不是默认隔离 可序列化的隔离级别)和表级别锁定,当 数据库连接共享一个公共缓存。
2005-12-19 (3.2.8)
修复了一个晦涩难懂的错误,该错误可能导致数据库损坏 以下异常情况:大型 INSERT 或 UPDATE 语句 是更大的事务的一部分,由于唯一性约束而失败 但包含事务提交。
2005-12-19 (2.8.17)
修复了一个晦涩难懂的错误,该错误可能导致数据库损坏 以下异常情况:大型 INSERT 或 UPDATE 语句 是更大的交易的一部分,由于唯一性约束而失败 但包含事务提交。
2005-09-24 (3.2.7)
GROUP BY 现在认为 NULL 再次相等,因为它应该
现在可以在 Solaris 和 OpenBSD 以及其他 Unix 变体上编译 缺少 fdatasync() 函数
现在再次在 MSVC++6 上编译
修复导致各种晦涩故障的未初始化变量 查询
正确计算受约束在 仅左表
2005-09-17 (3.2.6)
修复了可能导致数据库损坏的错误,如果 VACUUM (或 自动真空)失败,并在 大于 1GiB
LIKE 优化现在适用于具有 COLLATE NOCASE 的列
排序依据和分组依据现在使用有界内存
添加了对 COUNT(DISTINCT expr) 的支持
更改 SUM() 处理 NULL 值的方式以符合 SQL 标准
尽可能使用 fdatasync() 而不是 fsync() 来加速 向上提交略微
在连接中使用 CROSS 关键字可关闭表重新排序 优化
添加了实验性和未记录的“解释查询计划”功能
在 Windows 中使用 unicode API
2005-08-27 (3.2.5)
修复了影响 DELETE 和 UPDATE 语句已更改的错误 超过 40960 行。
更改生成文件,使其不再需要 GNUmake 扩展
修复配置脚本上的 --enable-threadsafe 选项
修复了 IN 左侧时发生的代码生成器错误 运算符是常量,右侧是 SELECT 语句
PRAGMA 同步=off 语句现在禁用同步 除了普通回滚日志之外的主日志文件
2005-08-24 (3.2.4)
修复了上一版本中引入的错误 这可能会导致生成代码时出现段错误 对于复杂的 WHERE 子句。
允许浮点文本以小数点开头或结尾。
2005-08-21 (3.2.3)
添加了对 CAST 运算符的支持
Tcl接口允许将BLOB值传输到用户定义的 功能
在 Tcl 接口中添加了“事务”方法
允许列的默认值调用具有常量的函数 操作
添加了用于收集索引统计信息的 ANALYZE 命令和 在优化器中选取索引时使用这些统计信息
删除对 WHERE 子句
IN 运算符的右侧现在可以是表达式列表 而不仅仅是常量列表
重新设计优化器,以便它能够更好地利用索引
连接中表的顺序会自动调整,以使 更好地利用指数
IN 运算符现在是优化的候选者,即使左侧 侧面不是索引最左边的术语。多个 IN 运算符可以是 与同一索引一起使用。
使用 BETWEEN 和 OR 的 WHERE 子句表达式现在是候选对象 用于优化
添加了“case_sensitive_like”杂注和SQLITE_CASE_SENSITIVE_LIKE 编译时选项,用于将其默认值设置为“on”。
使用索引来帮助处理 GLOB 表达式和 LIKE 表达式 启用case_sensitive_like杂注时
添加了对重音引用的支持,以便与 MySQL 兼容
提高测试覆盖率
数十个小错误修复
2005-06-12 (3.2.2)
添加了 sqlite3_db_handle() 接口
添加了 sqlite3_get_autocommit() 接口
向解析器中添加了一个正则表达式运算符。没有功能可以返回 在标准版本中使用此运算符,但用户可以使用 sqlite3_create_function()
提高速度并减少磁带库占用空间。
修复 64 位体系结构上的字节对齐问题。
许多许多小错误修复和文档更新。
2005-03-29 (3.2.1)
修复新的添加列注释中的内存分配错误。
文档更新
2005-03-21 (3.2.0)
添加了对更改表添加列的支持。
添加了对 ISO-8601 日期/时间字符串中“T”分隔符的支持。
改进了对 Cygwin 的支持。
大量错误修复和文档更新。
2005-03-17 (3.1.6)
修复了插入时可能导致数据库损坏的错误 记录到大约 125 列的表中。
sqlite3_step() 现在更有可能调用繁忙处理程序 并且不太可能返回SQLITE_BUSY。
修复过去在 malloc() 失败后发生的内存泄漏。
2005-03-11 (3.1.5)
Mac OS X 上用于控制与磁盘同步的 ioctl F_FULLFSYNC, 不是F_FULLSYNC。以前的版本有错误。
2005-03-11 (3.1.4)
修复了自动真空中可能导致数据库损坏的错误,如果出现以下情况 创建唯一索引由于违反约束而失败。 仅当 中引入新的自动真空功能时,才会出现此问题 版本 3.1 已打开。
F_FULLSYNC ioctl(目前仅在 Mac OS X 上受支持)已禁用 如果同步杂注设置为“full”以外的其他值。
为将来的版本 3.2 数据库添加其他向前兼容性 文件格式。
修复了 WHERE 子句中 (rowid<‘2’) 中的错误
添加了新的SQLITE_OMIT_…编译时选项
对手册页的更新
从 shell 中删除 strcasecmp() 的使用
Windows DLL 导出符号Tclsqlite_Init和Sqlite_Init
2005-02-19 (3.1.3)
修复了表包含以下内容的数据库上的 VACUUM 问题 自动增量已被删除。
将向前兼容性添加到将来的版本 3.2 数据库文件 格式。
文档更新
2005-02-15 (3.1.2)
修复了可能导致数据库损坏(如果有两个)的错误 打开与同一数据库的连接,一个连接执行 VACUUM 第二个对数据库进行了一些更改。
在 LIMIT 子句中允许 “?” 参数。
修复真空,使其与自动增量一起工作。
修复了 AUTOVACUUM 中可能导致数据库损坏的争用条件
将数字版本号添加到 sqlite3.h 包含文件。
其他小错误修复和性能增强。
2005-02-15 (2.8.16)
修复了可能导致数据库损坏(如果有两个)的错误 打开与同一数据库的连接,一个连接执行 VACUUM 第二个对数据库进行了一些更改。
正确处理 CREATE INDEX 语句中带引号的名称。
修复了 sqlite.h 和 sqlite3.h 之间的命名冲突。
复制表达式时避免过多的堆使用。
其他小错误修复。
2005-02-01 (3.1.1 测试版)
在 TCL 接口中自动缓存准备好的语句
附加和分离以及其他一些操作导致存在 准备好的语句即将过期。
许多小错误修复
2005-01-21 (3.1.0 测试版)
添加了自动真空支持
添加了CURRENT_TIME、CURRENT_DATE和CURRENT_TIMESTAMP
添加了对 EXISTS 子句的支持。
添加了对相关子查询的支持。
在 LIKE 运算符上添加了 ESCAPE 子句。
支持更改表…重命名表…添加
整数主键支持的自动增量关键字
许多SQLITE_OMIT_宏插入以在编译时省略功能 并减少库占用空间。
添加了 REINDEX 命令。
引擎不再查询主表,如果它可以得到 它需要从索引中获得的所有信息。
修复了许多令人讨厌的错误。
2004-10-12 (3.0.8)
添加对延迟、立即和独占事务的支持。
允许在存在以下情况时创建新的用户定义函数 已经有一个或多个预编译的 SQL 语句。
修复 MinGW/MSY 的可移植性问题。
修复了 64 位 Sparc 计算机上的字节对齐问题。
修复外壳的“.import”命令,使其忽略\r 行尾的字符。
shell 中的“csv”模式选项将字符串放在双引号内。
修复文档中的拼写错误。
将代码中的数组常量转换为类型为“const”。
大量代码优化,专门针对 使代码占用空间更小。
2004-09-18 (3.0.7)
BTree 模块使用 malloc() 而不是 不在堆栈中,以便在有限的机器上玩得更好 堆栈空间。
修复了命名冲突,以便版本 2.8 和 3.0 可以 链接并在同一 ANSI-C 源文件中一起使用。
新接口:sqlite3_bind_parameter_index()
添加对以下形式的通配符参数的支持:“?nnn”
修复在 64 位系统上发现的问题。
从 版本 3.0 源代码树。
sqlite3_trace() 回调发生在每个语句之前 执行,而不是在编译语句时执行。
生成文件更新和其他错误修复。
2004-09-02 (3.0.6 测试版)
更好地检测和处理损坏的数据库文件。
如果 sqlite3_step() 接口无法返回SQLITE_BUSY 由于锁定而提交更改
将 LIKE 和 GLOB 的实现合并到一个 模式匹配子例程。
其他代码大小优化和错误修复
2004-08-29 (3.0.5 测试版)
支持“:AAA”样式绑定参数名称。
添加了新的 sqlite3_bind_parameter_name() 接口。
支持 SQL 语句中嵌入的 TCL 变量名 TCL 绑定。
TCL 绑定无需执行转换即可传输数据 到字符串。
在需要之前不会创建 TEMP 表的数据库。
添加指定备用临时文件目录的功能 使用“sqlite_temp_directory”全局变量。
编译时选项 (SQLITE_BUSY_RESERVED_LOCK) 导致繁忙 当存在对保留锁的争用时要调用的处理程序。
各种错误修复和优化
2004-08-09 (3.0.4 测试版)
创建表和删除表现在作为预准备语句正常工作。
修复了真空和唯一索引中的错误。
将“.import”命令添加到命令行外壳。
修复了在尝试时可能导致索引损坏的 bug 删除表的行被挂起的查询阻止。
库大小优化。
其他小错误修复。
2004-07-22 (2.8.15)
这只是一个维护版本。各种小错误已经 添加了修复和一些可移植性增强功能。
2004-07-22 (3.0.3 测试版)
SQLite 3.0 的第二个测试版。
增加对“PRAGMA page_size”的支持,以调整页面大小 数据库。
各种错误修复和文档更新。
2004-06-30 (3.0.2 测试版)
SQLite 3.0的第一个测试版。
2004-06-22 (3.0.1 测试版)
Alpha 版本 - 研究和测试仅供使用 ***
很多错误修复。
2004-06-18 (3.0.0 测试版)
Alpha 版本 - 研究和测试仅供使用 ***
支持国际化,包括 UTF-8、UTF-16 和 用户定义的整理序列。
新的文件格式,典型用途缩小 25% 到 35%。
改进了并发性。
ATTACHed 数据库的原子提交。
从 API 中删除垃圾。
斑点支持。
64 位行。
更多信息。
2004-06-09 (2.8.14)
修复 min() 和 max() 优化器,使其在 FROM 时工作 子句由子查询组成。
忽略 shell 中 “.” 命令末尾的额外空格。
将 sqlite_encode_binary() 和 sqlite_decode_binary() 与 捆绑 图书馆。
TEMP_STORE和DEFAULT_TEMP_STORE的编译指示现在有效。
代码更改以使用OpenWatcom进行干净的编译。
修复 VDBE 堆栈溢出问题与 INSTEAD OF 触发器和 IN 运算符中的空值。
添加全局变量sqlite_temp_directory如果设置,则定义 存储临时文件的目录。
sqlite_interrupt() 与真空配合得很好。
其他小错误修复。
2004-03-08 (2.8.13)
重构部分代码以使代码占用空间 较小。代码现在也快了一点。
sqlite_exec() 现在作为 sqlite_compile() 的包装器实现 和sqlite_step()。
内置的 min() 和 max() 函数现在支持两者之间的差异 数字和文本数据类型。以前,min() 和 max() 总是假设 他们的参数是数字类型。
内置日期/时间函数的新 HH:MM:SS 修饰符。
添加了实验性 sqlite_last_statement_changes() API。固定 last_insert_rowid() 函数,以便它与 触发器。
为数据库加密 API 添加函数原型。
修复几个令人讨厌的错误。
2004-02-08 (2.8.12)
修复了在电源故障时可能会损坏回滚日志的错误 或者外部程序在提交过程中停止。腐败者 日志在回滚时可能导致数据库损坏。
减小尺寸并提高各种模块的速度,尤其是 虚拟机。
允许“ IN

” 作为 “ 在(从<表>中选择 ”。
对 sqlite_mprintf() 例程的优化。
确保 MIN() 和 MAX() 优化在子查询中工作。
2004-01-14 (2.8.11)
修复了 IN 运算符如何处理子查询中的 NULL 的错误。错误 由上一版本引入。
2004-01-14 (2.8.10)
修复由以下事实引起的 Unix 上潜在的数据库损坏问题 每当您关闭()文件时,所有POSIX咨询锁都会被清除。 解决方法是在锁时禁止所有 close() 调用 优秀。
COUNT(
) 的某些极端情况的性能增强。
确保内存中后端在 malloc() 失败时响应正常。
允许从用户定义的 SQL 中调用 sqlite_exec() 功能。
使用“长双精度”提高了浮点转换的准确性。
实验性日期/时间函数中的错误修复。
2004-01-06 (2.8.9)
修复可能导致损坏的 32 位整数溢出问题 数据库中的索引(如果负数较大)(小于 -2147483648) 入到索引数字列中。
修复了多线程 Linux 实现上的锁定问题。
始终使用“.”而不是“”,“作为小数点,即使区域设置 请求“,”。
将 UTC 添加到本地时间到实验日期/时间的转换 功能。
错误修复了日期/时间函数。
2003-12-18 (2.8.8)
修复了 2.8.0 中引入的可能导致 数据库损坏。
修复了不使用索引的 3 向联接的问题
VACUUM 命令现在适用于非回调 API
对“PRAGMA integrity_check”命令的改进
2003-12-04 (2.8.7)
添加了实验性 sqlite_bind() 和 sqlite_reset() API。
如果数据库的名称为空字符串,请打开一个新数据库 在数据库时自动删除的临时文件中 已关闭。
Lemon 生成的解析器中的性能增强
修改了实验日期/时间函数。
不允许在永久表上使用临时索引。
文档更新和拼写错误修复
添加了实验性 sqlite_progress_handler() 回调 API
删除了对 Oracle8 外部联接语法的支持。
允许 GLOB 和 LIKE 运算符作为函数工作。
其他次要文档和生成文件更改和错误修复。
2003-08-22 (2.8.6)
已将 CVS 资源库移至 www.sqlite.org
更新空处理文档。
添加了实验日期/时间函数。
错误修复:正确评估视图的视图,而不出现段错误。
错误修复:防止数据库损坏,如果你丢了 与表同名的触发器。
错误修复:允许在空上真空(无段错误) 设置EMPTY_RESULT_CALLBACKS杂注后的数据库。
错误修复:如果整数值不适合 32 位 int,请将其存储在 一个双倍。
错误修复:确保日志文件目录条目已提交到磁盘 在写入数据库文件之前。
2003-07-22 (2.8.5)
使 LIMIT 适用于复合 SELECT 语句。
限制 0 现在不显示任何行。使用 LIMIT -1 查看所有行。
正确处理整数主键和 浮点数。
修复了新的附加和分离命令中的几个重要错误。
更新了空处理文档。
允许 sqlite_compile() 和 sqlite_step() 中的 NULL 参数。
许多小错误修复
2003-06-29 (2.8.4)
增强了验证索引的“PRAGMA integrity_check”命令。
为新的 ATTACH 和 DETACH 命令添加了授权挂钩。
许多文档更新
许多小错误修复
2003-06-04 (2.8.3)
修复了在以下情况下会损坏表上的索引的问题 对表执行插入或替换或更新或替换 包含一个整数主键加上一个或多个索引。
修复了 Windows 锁定代码中的错误,以便锁定正常工作 当由 Win95 和 WinNT 系统同时访问时。
添加 INSERT 和 UPDATE 语句以引用 “rowid”(或“rowid”或“oid”)列。
其他重要的错误修复
2003-05-17 (2.8.2)
修复了在删除 具有 TEMP 索引的主数据库中的表。
2003-05-17 (2.8.1)
已重新激活 VACUUM 命令,该命令可回收 中未使用的磁盘空间 数据库文件。
添加了 ATTACH 和 DETACH 命令以允许与多个交互 同时的数据库文件。
添加了对 TEMP 触发器和索引的支持。
添加了对内存中数据库的支持。
删除了实验性sqlite_open_aux_file()。它的功能是 包含在新的附加命令中。
更改了“关于冲突”子句的优先顺序,以便 ON START 语句上的冲突子句具有比 关于约束的冲突条款。
许多错误修复和兼容性增强。
2003-02-16 (2.8.0)
修改了日志文件格式,使其更能抵抗损坏 这可能在操作系统崩溃或电源故障后发生。
添加了不使用回调返回数据的新 C/C++ API。
2003-01-25 (2.7.6)
性能改进。图书馆现在快得多。
添加了 sqlite_set_authorizer() API。正式文档有 未编写 - 有关以下说明,请参阅源代码注释 如何使用此功能。
修复了 GLOB 运算符中阻止其工作的错误 使用大写字母。
各种小错误修复。
2002-12-28 (2.7.5)
修复 pager.c 中一个未初始化的变量,它可以(有概率 大约 1/4 十亿)会导致数据库损坏。
2002-12-17 (2.7.4)
数据库文件现在可以增长到最多 2^41 字节。旧限制 为 2^31 字节。
优化程序现在将以相反的方式扫描表,如果这样做会 满足订单…DESC 条款。
现在,即使 相对路径将传递到 sqlite_open() 中。这允许 在 chdir() 之后继续正常运行的库。
VDBE 中的速度改进。
很多小错误修复。
2002-10-31 (2.7.3)
各种编译器兼容性修复。
修复了“expr IN ()”运算符中的错误。
接受括号中的列名。
修复了 VDBE 中的字符串内存管理问题
修复“table_info”编译指示中的错误”
在 Windows DLL 中导出 sqlite_function_type() API 函数
修复窗口下的锁定行为
修复了左外联接中的错误
2002-09-25 (2.7.2)
防止日志文件在大型事务上溢出。
修复了 sqlite_open() 失败时发生的内存泄漏。
遵守 SELECT 的 ORDER BY 和 LIMIT 子句,即使 结果集用于插入。
不要在用于保存 TEMP 表的文件上放置写锁定。
添加了有关 SELECT DISTINCT 以及 SQLite 如何处理 NULL 的文档。
修复了导致数千人性能不佳的问题 的 SQL 语句由单个 sqlite_exec() 调用执行。
2002-08-31 (2.7.1)
修复了版本 2.7.0 中引入的 ORDER BY 逻辑中的错误
C 样式注释现在被分词器接受。
当源是 SELECT 语句时,INSERT 运行速度会快一些。
2002-08-25 (2.7.0)
排序时区分数字值和文本值。 文本值根据 memcmp() 进行排序。数值排序 数字顺序。
通过模拟在 Windows 下允许多个同时读取器 Win95/98/ME 中缺少的读取器/写入器锁。
现在,在尝试启动事务时返回错误,如果 另一个事务已处于活动状态。
2002-08-13 (2.6.3)
添加读取小端和大端数据库的功能。 因此,在SunOS或Mac OS X下创建的数据库可以被读取和写入 在Linux或Windows下,反之亦然。
转换为新网站:http://www.sqlite.org/
允许事务跨越 Linux 线程
处理 GROUP BY 查询的 ORDER BY 子句中的错误修复
2002-07-31 (2.6.2)
COPY 命令读取的文本文件现在可以具有行终止符 LF、CRLF 或 CR。
如果在数据库期间遇到SQLITE_BUSY,则会正确处理 初始化。
修复了更新 TEMP 表上的触发器的问题。
文档更新。
2002-07-19 (2.6.1)
在库中包含响应 RCS 的静态字符串 “ident”命令,其中包含库版本号。
修复了删除 的所有行时发生的断言失败 打开了“count_changes”杂注的表格。
在自动过程中出现问题时,更好的错误报告 2.5.6 到 2.6.0 数据库格式升级。
2002-07-18 (2.6.0)
更改索引的格式以纠正原始设计缺陷 版本为 2.1.0。这是不兼容的 文件格式更改 *** 当版本 2.6.0 或更高版本的 库尝试打开由版本 2.5.6 创建的数据库文件或 早些时候,它会自动且不可逆地转换文件格式。在打开旧数据库文件之前制作备份副本 库的版本 2.6.0。
2002-07-07 (2.5.6)
修复了更多回滚问题。增强测试套件以进行锻炼 广泛的回滚逻辑,以防止将来出现任何问题。
2002-07-06 (2.5.5)
修复了在回滚期间可能导致数据库损坏的 bug。 此错误是由自由列表在 2.4.0 版中引入的 签到的优化[410]。
修复了 VIEW 聚合函数中的错误。
其他小的更改和增强功能。
2002-07-01 (2.5.4)
再次将“AS”关键字设置为可选。
列的数据类型现在显示在 回调。
添加了 sqlite_open_aux_file() API,尽管它仍然是 大多没有记录和测试。
添加了额外的测试用例并修复了一些错误 找到测试用例。
2002-06-25 (2.5.3)
错误修复:由于优化,数据库可能会损坏 这是在版本 2.4.0 中引入的(签入 [410])。问题所在 现在应该修复了。版本 2.4.0 到 2.5.2 的使用是 不推荐。
2002-06-25 (2.5.2)
添加了记录架构的新SQLITE_TEMP_MASTER表 对于临时表,与 SQLITE_MASTER 对临时表执行的方式相同 持久表。
添加了对 ALL 联盟的优化
修复了处理左外连接时的错误
LIMIT 子句现在适用于子选择
排序依据适用于子选择项
有一个新的 TypeOf() 函数用于确定表达式是否 是数字或文本。
自动增量现在适用于从选择插入。
2002-06-19 (2.5.1)
查询优化器现在尝试实现 ORDER BY 子句 使用索引。如果不合适的索引是 可用。
2002-06-17 (2.5.0)
添加了对行触发器的支持。
添加了符合 SQL-92 的空处理。
添加对完整 SQL-92 联接语法和左外联接的支持。
双引号字符串解释为列名而不是文本文本。
解析(但不实现)外键。
分析器、寻呼器和 WHERE 子句代码的性能改进 发电机。
使 LIMIT 子句适用于子查询。(订购方式仍然没有 不过工作。
将“%Q”扩展添加到 sqlite_
_printf()。
错误修复太多,无法提及(请参阅更改日志)。
2002-05-10 (2.4.12)
添加了用于检测何时调用库 API 例程的逻辑 的顺序。
2002-05-08 (2.4.11)
错误修复:未生成结果集中的列名 对于某些(相当复杂)的视图是正确的。这可能会导致 在某些情况下存在段错误。
2002-05-03 (2.4.10)
错误修复:使用复合 SELECT 时生成正确的列标题 作为子查询。
添加了 sqlite_encode_binary() 和 sqlite_decode_binary() 函数 源树。但它们尚未链接到库中。
文档更新。
从 Windows DLL 中导出 sqlite_changes() 函数。
错误修复:不要尝试对查询进行子查询扁平化优化 缺少 FROM 子句。这样做会导致段错误。
2002-04-22 (2.4.9)
修复了导致 SQLITE 预编译二进制文件的错误.EXE 在 Windows 98 下报告“内存不足”。
2002-04-20 (2.4.8)
确保在 命令行管理程序中 .dump 命令的输出。
速度改进:不要对 TEMP 表执行同步更新。
对外壳的许多改进和增强。
使 GLOB 和 LIKE 运算符函数可以重写 由程序员提供。例如,这允许 LIKE 运算符 更改为区分大小写。
2002-04-12 (2.4.7)
添加将 TABLE.* 放入 选择语句。
允许不带 FROM 子句的 SELECT 语句。
添加了 last_insert_rowid() SQL 函数。
不计算 IGNORE 冲突解决发生的行 行计数。
确保 INSERT 的 VALUES 子句中的函数表达式 是正确的。
添加了 sqlite_changes() API 函数以返回数字 在最近一次操作中更改的行。
2002-04-02 (2.4.6)
错误修复:正确处理联接的 WHERE 子句中的项 不包含比较运算符。
2002-04-02 (2.4.5)
错误修复:正确处理 WHERE 子句中出现的函数 的联接。
设置 PRAGMA vdbe_trace=ON 后,正确打印 P3 操作数 值,当它是指向结构的指针而不是指向的指针时 一个字符串。
将显式 NULL 插入整数主键时,将 NULL 值自动转换为唯一键。
2002-03-30 (2.4.4)
允许“查看”作为列名
添加了对 CASE 表达式的支持(来自 Dan Kennedy 的补丁)
将 RPMS 添加到交付中(来自 Doug Henry 的补丁)
修正文档中的拼写错误
将配置管理转移到新的 CVS 存储库 它自己的CVSTrac错误跟踪系统。
2002-03-23 (2.4.3)
修复了将复合 SELECT 用作 选择的 FROM 中的子查询。
sqlite_get_table() 函数现在返回错误,如果 给它两个或多个返回不同列数的 SELECT。
2002-03-20 (2.4.2)
错误修复:修复了 ROWID 为列时发生的断言失败 在视图上的 SELECT 语句中。
错误修复:修复了 VDBE 中未初始化的变量,该变量可能会 断言失败。
使 os.h 头文件在检测编译时更加可靠 对于Windows,当它适用于Unix时。
2002-03-13 (2.4.1)
在 FROM 子句中使用未命名的子查询会导致段错误。
解析器现在坚持在输入之前看到分号或输入的结尾 执行语句。这样可以避免意外灾难,如果 WHERE 关键字在 UPDATE 或 DELETE 语句中拼写错误。
2002-03-11 (2.4.0)
将 sanity_check PRAGMA 的名称更改为 integrity_check 并使其在所有编译中可用。
选择索引列的 min() 或 max(),没有 WHERE 或 GROUP BY 子句作为特殊情况处理,避免了完整的表扫描。
自动生成的 ROWID 现在是顺序的。
不允许命令行 shell 的点命令出现在 真正的 SQL 命令的中间。
修改 Lemon 解析器生成器,以便解析器表 小 4 倍。
添加了对用 C 语言实现的用户定义函数的支持。
添加了对新函数的支持:coalesce()、lower()、upper() 和 random()
添加了对视图的支持。
添加了子查询平展优化器。
修改了B树和寻呼机模块,使磁盘页不 包含真实数据(免费页面)未记录且未记录 当它们发生变化时,从内存写回磁盘。这不 影响数据库完整性,因为 页面不包含实际数据,但它确实进行了大型 INSERT 操作 大约快 2.5 倍,大删除大约快 5 倍。
使CACHE_SIZE的编译指示持久化
添加了同步编译指示
修复了导致更新在事务中失败的错误,当 数据库包含一个临时表。
2002-02-19 (2.3.3)
允许标识符在方括号中引用,以实现兼容性 与 MS-Access。
添加了对 SELECT 的 FROM 子句中的子查询的支持。
在 Windows 下更高效地实现 sqliteFileExists()。 (作者:Joel Luscy)
INSERT 的 VALUES 子句现在可以包含表达式,包括 标量选择子句。
添加了对“将表创建为选择”的支持
错误修复:在单个中创建和删除表 事务不起作用。
2002-02-14 (2.3.2)
错误修复:pager.c 中存在不正确的 assert()。真正的代码是 一切正确(据所知),所以如果你 使用 -DNDEBUG=1 编译。当断言未被禁用时,有 可能是故障。
2002-02-13 (2.3.1)
错误修复:如果“PRAGMA full_column_names=ON;”是 设置,然后你做了一个使用 rowid 的查询,如下所示: “选择 ROWID, * FROM …”。
2002-02-03 (2.3.0)
修复了 INSERT 命令中导致数据消失的严重错误 如果数据源是 SELECT 和 INSERT 到 子句以缺省值以外的某种顺序指定其列。
添加了解决约束冲突的能力是除 中止和回滚。请参阅有关“关于冲突”的文档 条款了解详情。
临时文件现在由操作系统自动删除 关闭时。程序上不再有悬而未决的临时文件 崩溃。(如果操作系统崩溃,fsck 将在重新启动后删除该文件 在 Unix 下。我不知道在Windows下会发生什么。
不遵循 NULL 约束。
COPY 命令将 NULL 放在数据为“\N”的列中。
在 COPY 命令中,反斜杠现在可用于转义换行符。
添加了SANITY_CHECK杂注。
2002-01-28 (2.2.5)
重要错误修复:IN 运算符不起作用,如果 左侧或右侧派生自整数主键。
不要在 sqlite 命令行访问程序的输出中转义反斜杠“\”字符。
2002-01-22 (2.2.4)
SELECT 列列表中 AS 右侧的标签现在可以 用作 WHERE、ORDER BY、GROUP BY 和/或 有条款。
修复了 sqlite 命令的 -分隔符命令行选项中的错误。
修复了将大写字符串与 大于“Z”但小于“a”的字符。
如果 ORDER BY 或 GROUP BY 表达式是常量,则报告错误。
2002-01-16 (2.2.3)
修复 VC++ 7.0 中的警告消息。(来自 nicolas352001 的补丁)
使库线程安全。(代码在那里并且似乎可以工作 但没有被强调。
添加了新的 sqlite_last_insert_rowid() API 函数。
2002-01-14 (2.2.2)
错误修复:当具有索引的临时表时断言失败 与由单独进程创建的永久表同名。
错误修复:更新了包含整数主键和 索引可能会失败。
2002-01-09 (2.2.1)
错误修复:尝试删除带有 WHERE 的表的单行 当不存在这样的 rowid 时,“ROWID=x”的子句会导致错误。
错误修复:将 NULL 作为第三个参数传递给 sqlite_open() 有时会导致核心转储。
错误修复:删除表后跟一个具有相同名称的创建表 在单个事务中导致核心转储。
来自 A. Rottmann 的 Makefile 更新
2001-12-22 (2.2.0)
整数主键类型的列实际上用作主键 表的基础 B 树表示中的键。
发现并修复了几个晦涩难懂、不相关的错误,同时 实现了上一个项目符号的整数主键更改。
添加了将“*”指定为较大列列表的一部分的功能 SELECT 语句的结果部分。例如:“SELECT rowid, * FROM table1;”。
更新注释和文档。
2001-12-15 (2.1.7)
修复了创建临时表中导致 最初在主数据库文件中分配的表 在单独的临时文件中。此错误可能会导致库 遭受断言失败,并可能导致“页面泄漏” 主数据库文件。
修复 b 树子系统中有时可能导致第一个的错误 要在数据库扫描期间重复的表的行。
2001-12-14 (2.1.6)
再次修复锁定机制以防止 sqlite_exec() 返回SQLITE_PROTOCOL 必要。这次的错误是竞争条件 锁定代码。此更改会影响 POSIX 和 Windows 用户。
2001-12-06 (2.1.5)
修复另一个问题(与 2.1.4 中修复的问题无关) 这有时会导致 sqlite_exec() 返回SQLITE_PROTOCOL 必要。这次的错误是 在 POSIX 锁定代码中,并且不应影响 Windows 用户。
2001-12-05 (2.1.4)
有时 sqlite_exec() SQLITE_PROTOCOL会在它 应该SQLITE_BUSY回来的。
对上一个错误的修复发现了一个死锁,这也是 固定。
添加在第二个参数中放置单个 .command 的功能 的 sqlite 外壳
常见问题解答的更新
2001-11-24 (2.1.3)
修复比较运算符的行为 (例如:“<”、“”等) 以便它们与索引中的条目顺序一致。
正确处理大于 SQL 表达式中的整数 机器整数可以表示什么。
2001-11-23 (2.1.2)
支持 64 位体系结构的更改。
修复锁定协议中的错误。
修复了可能(很少)导致数据库成为 由于SQLITE_MASTER损坏,删除表后无法读取 桌子。
更改代码,以便呈现版本 2.1.1 数据库 上述错误无法读取,可由此版本的 库,即使SQLITE_MASTER表是(稍微) 损坏。
2001-11-13 (2.1.1)
错误修复:有时会将任意字符串传递给回调 函数,当列的实际值为 NULL 时。
2001-11-12 (2.1.0)
更改数据记录的格式,以便记录大小不超过 16MB 可以存储。
更改索引的格式以实现更好的查询优化。
实施“限制…抵消…”关于 SELECT 语句的子句。
2001-11-03 (2.0.8)
在 API 函数中选定参数 const。这应该 完全向后兼容。
文档更新
通过限制分拣机的数量来简化 VDBE 的设计 并列表为 1。 实际上,无论如何,使用过的分类器和列表不超过一个。
2001-10-22 (2.0.7)
任何 UTF-8 字符或 ISO8859 字符都可以用作 标识符。
来自 Christian Werner 的补丁,用于改进 ODBC 兼容性和 修复了 round() 函数中的一个错误。
插入一些在 malloc() 失败时经常发生的内存泄漏。 只要 malloc() 工作。
更改某些测试脚本,以便它们在 Windows 上工作 添加到 Unix。
2001-10-19 (2.0.6)
添加了EMPTY_RESULT_CALLBACKS杂注
支持列名和表名中的 UTF-8 和 ISO8859 字符。
错误修复:使用FULL_COLUMN_NAMES杂注计算正确的表名 已打开。
2001-10-15 (2.0.5)
添加了COUNT_CHANGES杂注。
更改FULL_COLUMN_NAMES杂注以帮助 ODBC 驱动程序。
错误修复:“SELECT count( )”为空表返回 NULL。 现在它返回 0。
2001-10-13 (2.0.4)
错误修复:一个晦涩且相对无害的错误导致了以下之一 启用 GCC 优化时失败的测试。此版本 修复了问题。
2001-10-13 (2.0.3)
错误修复:sqlite_busy_timeout() 函数延迟 1000 失败前太久了。
错误修复:如果保存数据库的磁盘断言失败 文件已满或由于其他原因停止接受写入。 添加了新的测试以检测将来的类似问题。
添加了新的运算符:& (bitwise-and) | (bitwise-or)、~(one-complement)、<<(左移)、>>(右移)。
添加了新函数:round() 和 abs()。
2001-10-09 (2.0.2)
修复了锁定协议中的两个错误。(一个是掩盖另一个。
删除了一些导致问题的未使用的“#include” 对于 VC++。
修复了 sqlite.h,以便它可以从C++使用
添加了FULL_COLUMN_NAMES杂注。设置为 “ON” 时,名称 列报告为 TABLE。列,而不仅仅是列。
添加了 TABLE_INFO() 和 INDEX_INFO() 编译指示以帮助支持 ODBC 接口。
添加了对临时表和索引的支持。
2001-10-02 (2.0.1)
从 btree.c 中删除一些C++样式的注释,以便对其进行编译 使用 GCC 以外的编译器。
如果嵌入了外壳,则外壳的“.dump”输出不起作用 数据中任意位置的换行符。这是一个被携带的旧错误 从版本 1.0 向前。要修复它,“.dump”输出不再 使用 COPY 命令。而是生成 INSERT 语句。
扩展表达式语法以支持“expr NOT NULL”(使用 “NOT”和“NULL”)之间的空格,以及“expr NOTNULL” (没有空格)。
2001-09-28 (2.0.0)
自动为 Linux 和 Windows 构建二进制文件并将它们放在 网站。
2001-09-28 (2.0-α-4)
合并 A. Rottmann 的生成文件补丁以使用 LIBTOOL
2001-09-27 (2.0-α-3)
SQLite 现在遵循 CREATE UNIQUE INDEX 中的 UNIQUE 关键字。主要 密钥必须是唯一的。
文件格式更改回 alpha-1 的格式
修复了回滚和锁定行为
2001-09-20 (2.0-α-2)
版本 2.0 的初始版本。重命名库的想法 放弃了“SQLus”,转而保留“SQLite”名称,并且 碰撞主版本号。
重新添加了寻呼机和 btree 子系统。他们现在是唯一的 可用的后端。
删除了 Dbbe 抽象以及 GDBM 和内存驱动程序。
所有代码的版权均被否认。该库现在位于 公有土地。
2001-07-23 (1.0.32)
删除了寻呼机和 btree 子系统。这些将在后续中使用 名为“SQLus”的 SQL 服务器库。
添加使用带引号的字符串作为表名和列名的功能 表达 式。
2001-04-15 (1.0.31)
寻呼机子系统已添加,但尚未使用。
更可靠地处理内存不足错误。
新测试已添加到测试套件。
2001-04-06 (1.0.30)
删除引入的 sqlite_encoding TCL 变量 在以前的版本中。
将选项 -encoding 和 -tcl-uses-utf 添加到 sqlite TCL 命令中。
添加测试以确保 tclsqlite 是使用 Tcl 标头编译的 匹配的文件和库。
2001-04-05 (1.0.29)
该库现在假定数据存储为 UTF-8,如果 --enable-utf8 提供了用于配置的选项。默认行为是假设 ISO8859-X,一如既往。这只会对 LIKE 和 GLOB 运算符以及 LENGTH 和 SUBSTR 函数。
如果库未针对 UTF-8 和 Tcl 库进行配置 是内部使用 UTF-8 的较新版本之一, 然后从 UTF-8 转换为 iso8859 和 再次返回是在 TCL 接口内完成的。
2001-04-04 (1.0.28)
添加了对事务的有限支持。此时,事务 将在 GDBM 后端执行表锁定。尚无支持) 用于回滚或原子提交。
添加了引用 与每个表的每一行相关联的唯一随机整数键。
向回归套件中添加了其他测试以涵盖新的 ROWID 功能和下面提到的 TCL 接口错误。
对 Lemon 解析器生成器的更改,以帮助它在以下情况下更好地工作 使用 MSVC 编译。
由Oleg Oleinick识别的TCL界面中的错误修复。
2001-03-20 (1.0.27)
执行 DELETE 和 UPDATE 时,用于写入记录的库 要删除或更新为临时文件的记录数。 这将更改,以便记录编号保存在内存中。
不带 WHILE 子句的 DELETE 命令只是删除数据库 磁盘中的文件,而不是遍历和删除记录 通过记录。
2001-03-20 (1.0.26)
在Windows上修复了一个严重的错误。Windows用户应该升级。 对 Unix 没有影响。
2001-03-15 (1.0.25)
修改测试脚本以识别依赖于系统的测试 负载和处理器速度和 警告用户其中一个(罕见)测试失败 不一定意味着库出现故障。没有更改 法典。
2001-03-14 (1.0.24)
修复导致的错误 UPDATE 命令在“malloc(0)”返回的系统上失败 零。该问题不会出现在Windows,Linux或HPUX上,但确实出现 导致库在 QNX 上失败。
2001-02-20 (1.0.23)
修复了Mark Muranwski的一个不相关(和次要)错误。算法 用于确定将“内存:”数据库的临时文件放置在哪里 工作不太正常。
2001-02-19 (1.0.22)
之前的修复不太正确。这个似乎效果更好。
2001-02-19 (1.0.21)
当 WHERE 子句包含 WHERE 时,UPDATE 语句不起作用 一些可以使用指数和其他术语来满足的术语 不能。固定的。
2001-02-11 (1.0.20)
将开发更改合并到主干中。今后的工作 使用 BTree 文件结构将使用单独的 CVS 源代码树。这 CVS 树将继续仅支持 SQLite 的 GDBM 版本。
2001-02-06 (1.0.19)
修复导致问题的奇怪(但有效)C 声明 为 QNX。没有逻辑更改。
2001-01-04 (1.0.18)
发生错误时打印有问题的 SQL 语句。
在 CREATE TABLE 语句中,约束之间不需要逗号。
在外壳中添加了“-echo”选项。
对注释的更改。
2000-12-10 (1.0.17)
重写了 sqlite_complete() 以使其更快。
对其他代码进行细微调整,使其运行得更快一些。
添加了针对 sqlite_complete() 和内存泄漏的新测试。
2000-11-28 (1.0.16)
文档更新。主要是修复错别字和拼写错误。
2000-10-23 (1.0.15)
文档更新
从 vdbe.c 的内部循环中删除了一些健全性检查代码 以帮助库运行得更快一些。代码只是 如果使用 -DNDEBUG 编译,则删除。
2000-10-19 (1.0.14)
添加了一个“memory:”后端驱动程序,该驱动程序将其数据库存储在 内存中哈希表。
2000-10-19 (1.0.13)
将 GDBM 驱动程序分解为一个单独的文件,以备不时之需 以添加新驱动程序。
允许数据库的名称以驱动程序类型为前缀。 目前,唯一的驱动程序类型是“gdbm:”。
2000-10-17 (1.0.12)
修复了导致核心转储的逐个错误 新 sqlite_…printf() 例程的 ‘%q’ 格式指令。
添加了 sqlite_interrupt() 接口。
在 shell 中,sqlite_interrupt当 用户按 Control-C
修复了 sqlite_exec() 的一些实例 返回错误的错误代码。
2000-10-11 (1.0.10)
添加了有关如何针对 Windows95/98 进行编译的说明。
删除了一些未使用的变量。等。
2000-10-09 (1.0.9)
添加了 sqlite
…_printf() 接口例程。
修改了 sqlite shell 程序以使用新接口 例 程。
修改了 sqlite shell 程序以打印 内置SQLITE_MASTER表(如果显式请求)。
2000-09-30 (1.0.8)
开始在 TCL 界面上编写文档。
2000-09-29 (未发布)
添加了 sqlite_get_table() 接口
由于上述更改,更新了文档。
修改了 sqlite 外壳以使用新的 sqlite_get_table() API 为了打印表列表 在多列中,类似于“LS”打印文件名的方式。
修改了 sqlite 外壳以在 在“.schema”命令的输出中结束每个 CREATE 语句。
2000-09-21 (未发布)
更改 tclsqlite “eval” 方法以返回结果列表,如果 未指定回调脚本。
更改 tclsqlite.c 以使用 Tcl_Obj 接口
将 tclsqlite.c 添加到 libsqlite.a 库中
2000-09-14 (1.0.5)
将浮点值的打印格式从“%g”更改为“%.15g”。
更改了比较功能,以便指数表示法中的数字 (例如:1.234E+05)按数字顺序排序。
2000-08-28 (1.0.4)
添加了函数 length() 和 substr()。
修复了 sqlite shell 程序中导致的错误 输出模式为“列”且第一行时的核心转储 的数据包含空值。
2000-08-22 (1.0.3)
在 sqlite shell 中,打印“数据库以只读方式打开”消息 到 stderr 而不是 stdout。
在 sqlite shell 中,现在在初始启动时打印版本号。
将 sqlite_version[] 字符串常量添加到库中
生成文件更新
错误修复:为以下内容生成了不正确的 VDBE 代码 环境:对包含 WHERE 子句的索引表的查询 右侧有一个子查询的 IN 运算符。
2000-08-18 (1.0.1)
修复配置脚本中的错误。
对网站的细微修改。
2000-08-17 (1.0)
更改 sqlite 程序,使其可以读取 它缺少写入权限的数据库。(它曾经 如果无法写入,则拒绝所有访问。
2000-08-09
将回车视为空格。
2000-08-08
在“sqlite”中为“.table”命令添加了模式匹配 命令外壳。
2000-08-04
文档更新
在 Tcl 接口中添加了“忙”和“超时”方法
2000-08-03
文件格式版本号存储在 sqlite_master.tcl 中 多次。这是无害的,但没有必要。现已修复。
2000-08-02
索引的文件格式略有更改,以便正常工作 围绕有时可能出现 GDBM 的低效率,当 存在具有许多具有相同键的条目的大型索引。** 不兼容的更改 **
2000-08-01
解析器的堆栈在很长的 UPDATE 语句上溢出。 此问题现已修复。
2000-07-31
完成 VDBE 教程。
添加了有关编译到 WinNT 的文档。
修复 WinNT 的配置程序。
修复了 HPUX 的配置问题。
2000-07-29
结果的列名上的标签更好。
2000-07-28
添加了 sqlite_busy_handler() 和 sqlite_busy_timeout() 接口。
2000-06-23
开始编写 VDBE 教程。
2000-06-21
清理注释和变量名称。对文档的更改。 代码没有功能更改。
2000-06-19
UPDATE 语句中的列名区分大小写。 此错误现已修复。
2000-06-18
添加了串联字符串运算符 (||)
2000-06-12
在 SQL 解释器中添加了 fcnt() 函数。fcnt() 函数 返回已发生的数据库“Fetch”操作数。 此函数设计用于测试脚本,以验证 查询高效且经过适当优化。Fcnt() 没有其他 据我所知,有用的目的。
添加了更多利用新 fcnt() 函数的测试。 新的测试没有发现任何新问题。
2000-06-08
添加了许多新的测试用例
修复添加测试用例时发现的一些错误
开始添加大量新文档
2000-06-06
添加了复合选择运算符:联合、联合全部、相交和除外
添加了对在表达式中使用 (选择 …) 的支持
添加了对 IN 和 BETWEEN 运算符的支持
添加了对 GROUP BY 和 HAVE 的支持
NULL 值现在作为 NULL 指针报告给回调 而不是空字符串。
2000-06-03
添加了对表列默认值的支持。
提高测试覆盖率。修复了 改进的测试。
2000-06-02
所有要通过更新、插入或删除修改的数据库文件都是 现在在对任何文件进行任何更改之前锁定。 这使得访问变得安全(我认为) 来自多个进程的同一数据库同时进行。
代码看起来很稳定,所以我们现在称之为“beta”。
2000-06-01
更好地支持文件锁定,以便两个或多个进程 (或线程) 可以同时访问同一数据库。需要做更多的工作 不过,这个领域。
2000-05-31
添加了对聚合函数的支持(例如:COUNT(
)、MIN(…)) 到 SELECT 语句。
添加了对选择不同…
2000-05-30
添加了 LIKE 运算符。
添加了一个 GLOB 运算符:类似于 LIKE,但它使用 Unix shell 通配符而不是“%” 和 SQL 的“_”通配符。
添加了以PostgreSQL模式化的COPY命令,以便SQLite 现在可以读取pg_dump数据库转储实用程序的输出 的PostgreSQL。
添加了在底层数据库上调用 gdbm_reorganize() 函数的 VACUUM 命令 文件。
还有很多很多错误修复…
2000-05-29
Alpha 代码的首次公开发布

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值