SQLite从出生到现在(发布历史记录)(二十二)

返回:SQLite—系列文章目录   

上一篇:从 SQLite 3.5.9 迁移到 3.6.0(二十一)

下一篇:SQLite—系列文章目录   

引言:

SQLite拥有别人无法比拟的装机量,究竟什么成就了SQLite呢,本文将SQLite的历史版本记录粗列一下,供各位朋友参详如何做一个高质量的程序的引文,也许下一个爆款的软件就是您参与的项目。SQLite拥有超过225个API,本系列文章将深入介绍 SQLite C/C++ 数据库接口的基础知识,包括如何连接和打开 SQLite 数据库、执行查询和事务管理、提取查询结果集等等,帮助开发者更好地了解和使用 SQLite 数据库接口。

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

2024-03-12 (3.45.2)

修复了 3.35.0 版增强功能 3a 引入的 UPSERT 错误 (2021-03-12),该错误可能导致索引与其表不同步。论坛主题 919c6579c8。
缩小 NOT NULL 强度降低优化的范围 在版本 3.35.0 (2021-03-12) 中新增为第 8e 项。优化 在某些不起作用的情况下尝试,导致 查询结果不正确。论坛主题 440f2a2f17。
其他琐碎的更正和编译器警告修复已经出现 自上一个补丁版本以来。有关详细信息,请参阅时间表。
哈希值:
SQLITE_SOURCE_ID:“2024-03-12 11:06:23 d8cd6d49b46a395b13955387d05e9e1a2a47e54fb99f3c9b59835bbefad6af77”
适用于 sqlite3.c 的 SHA3-256:bd76ad2dc9cde151e469e86627a7e8753aa8ef1a6f657c5a80ba48324b53226b

2024-01-30 (3.45.1)

还原 JSON BLOB 输入 bug,并承诺支持 后续版本,以实现向后兼容性。
修复 PRAGMA integrity_check 命令,使其以只读方式工作 包含 FTS3 和 FTS5 表的数据库。这样就解决了一个问题 在版本 3.44.0 中引入,但直到 3.45.0 版本之后才被发现。
修复了与处理损坏的 JSONB 输入相关的问题:
防止在将损坏的 JSONB 转换为文本时出现指数运行时。
修复了在转换时可能读取 JSONB blob 末尾的一个字节的问题 将损坏的 JSONB 转换为文本。
使用 jfuzz 增强测试,以防止将来出现任何 JSONB 问题,例如 如上所述。
修复了一个长期存在的 bug,即读取几个字节后会超过 访问狡猾损坏的数据库时,可能会出现内存映射段 使用内存映射数据库。
修复了一个长期存在的 bug,其中 NULL 指针取消引用可能发生在 字节码引擎,由于为类生成的字节码不正确 特意设计用于强调查询规划器的 SQL 语句 但除此之外毫无意义。
哈希值:
SQLITE_SOURCE_ID: 2024-01-30 16:01:20 e876e51a0ed5c5b3126f52e532044363a014bc594cfefa87ffb5b82257cc467a
适用于 sqlite3.c 的 SHA3-256:0474604df9e1b69a5544295dd046aad954749279780d557da80f44b958100295

2024-01-15 (3.45.0)

添加了应用程序定义的 SQL 函数的 SQLITE_RESULT_SUBTYPE 属性。 所有调用 sqlite3_result_subtype() 的应用程序定义的 SQL 函数都必须注册到此新属性。 如果不这样做,可能会导致对 sqlite3_result_subtype() 的调用 表现得像一个无操作者。使用 -DSQLITE_STRICT_SUBTYPE=1 进行编译会导致 如果未SQLITE_RESULT_SUBTYPE的函数尝试调用 sqlite3_result_subtype(),则会引发 SQL 错误。使用 -DSQLITE_STRICT_SUBTYPE=1 是每个应用程序的推荐编译时选项,它使 使用亚型。
JSON SQL 函数的增强功能:
所有 JSON 函数都将重写为使用新的内部解析树 格式称为 JSONB。新的解析树格式是可序列化的 因此可以存储在数据库中,以避免不必要的重新解析 每当使用 JSON 值时。
新版本的 JSON 生成函数会生成二进制 JSONB 的 JSON 文本。
json_valid() 函数添加了一个可选的第二个参数, 指定第一个参数“格式正确”的含义。
将 FTS5 tokendata 选项添加到 FTS5 虚拟表中。
现在默认启用SQLITE_DIRECT_OVERFLOW_READ优化。 在编译时使用 -DSQLITE_DIRECT_OVERFLOW_READ=0 禁用它。
查询计划器改进:
不要让传递约束优化欺骗 查询规划器在使用范围约束时较好相等 约束可用。 (论坛帖子 2568d1f6e6。
查询计划器现在可以更好地忽略 ANALYZE 标识为低质量的索引。 (论坛帖子 6f0958b03b。
将SQLITE_MAX_PAGE_COUNT的默认值从 1073741824 增加到 4294967294.
CLI 的增强功能:
改进了 Windows 上 UTF-8 内容的显示
自动检测“.dump”脚本的播放并做出适当的 对“.dbconfig 防御关闭”等设置的更改和 “.dbconfig dqs_dll打开”。
哈希值:
SQLITE_SOURCE_ID: 2024-01-15 17:01:13 1066602b2b1976fe58b5150777cced894af17c803e068f5918390d6915b46e1d
适用于 sqlite3.c 的 SHA3-256:f56d8e5e8c61d87b957f1cc60b3042c134d7bc0ca3aba002e6999e8f0af310a3

2023-11-24 (3.44.2)

修复了 3.44.1 中的修复程序(上面的第 15 项)引入的 CLI 错误。
修复了 FTS5 中仅在内部模糊测试期间发现的问题 标记 3.44.1 版本后的几分钟。
修复模糊程序在第二天发现的不完整的 assert() 语句 以前的版本。
修复了 GCC 16 调试版本中出现的几个无害编译器警告。
哈希值:
SQLITE_SOURCE_ID: 2023-11-24 11:41:44 ebead0e7230cd33bcec9f95d2183069565b9e709bf745c9b5db65cc0cbf92c0f
适用于 sqlite3.c 的 SHA3-256:bd70b012e2d1b3efa132d905224cd0ab476a69b892f8c6b21135756ec7ffbb13

2023-11-22 (3.44.1)

更改 CLI,使其在 Windows 上使用 UTF-16 进行控制台 I/O。这 在旧的 Windows7 计算机上正确显示 Unicode 文本。
其他晦涩难懂的错误修复。
哈希值:
SQLITE_SOURCE_ID: 2023-11-22 14:18:12 d295f48e8f367b066b881780c98bdf980a1d550397d5ba0b0e49842c95b3e8b4
适用于 sqlite3.c 的 SHA3-256:e359dc502a73f3a8ad8e976a51231134d25cb93ad557a724dd92fe0c5897113a

2023-11-01 (3.44.0)

聚合函数现在可以在最后一个函数之后包含 ORDER BY 子句 参数。函数的参数按以下顺序进行处理 指定。这对于 string_agg() 和 json_group_array() 等函数可能很重要。
添加对 concat() 和 concat_ws() 标量 SQL 函数的支持, 兼容 PostgreSQL、SQLServer 和 MySQL。
添加对 string_agg() 聚合 SQL 函数的支持,兼容 使用 PostgreSQL 和 SQLServer。
strftime() SQL 函数上的新转换字母: %e %F %I %k %l %p %P %R %T %u
添加新的 C 语言 API:sqlite3_get_clientdata() 和 sqlite3_set_clientdata()。
现在,当 CREATE TABLE 语句出现时,会引发许多与 CREATE TABLE 相关的错误 本身是运行的,而不是推迟到表第一次实际运行时 使用。
PRAGMA integrity_check 命令现在验证 使用新的 xIntegrity 方法在各种内置虚拟表中的内容。 这适用于 FTS3、FTS4、FTS5、RTREE 和 GEOPOLY 扩展。
SQLITE_DBCONFIG_DEFENSIVE设置现在阻止打开 PRAGMA writable_schema。以前writable_schema可以打开,但会 实际上不允许架构是可写的。现在它根本无法打开。
将内置的 FTS3、FTS4、FTS5、RTREE 和 GEOPOLY 虚拟表标记为SQLITE_VTAB_INNOCUOUS,以便可以在 高安全性部署。
PRAGMA case_sensitive_like 语句已弃用,因为它在 架构包含 LIKE 运算符可能会导致数据库损坏的报告 平价 PRAGMA integrity_check.
现在,无论何时,默认情况下都会启用 SQLITE_USE_SEH(结构化异常处理) SQLite是使用Microsoft C编译器构建的。可以使用以下方法禁用它 -DSQLITE_USE_SEH=0
查询规划器优化:
在部分索引扫描中,如果 WHERE 子句暗示表的常量值 列,将该表列的出现次数替换为常量。这 增加了部分指数成为覆盖指数的可能性。
禁用视图扫描优化(在版本 3.42.0 - 第 1c 项中添加) 因为它导致了多次性能回归。取而代之的是,减少 DISTINCT 子查询的估计行计数增加了 8 倍。
SQLite现在对底层硬件是否执行运行时检测 支持精度大于“double”的“long double”,并使用适当的 浮点例程,具体取决于它发现的内容。
适用于 Windows 的 CLI 现在默认使用 UTF-8 作为两个输入 并在支持它的平台上输出。--no-utf8 选项可用 禁用 UTF8 支持。
哈希值:
SQLITE_SOURCE_ID: 2023-11-01 11:23:50 17129ba1ff7f0daf37100ee82d507aef7827cf38de1866e2633096ae6ad8130
适用于 sqlite3.c 的 SHA3-256:d9e6530096136067644b1cb2057b3b0fa51070df99ec61971f73c9ba6aa9a36e

2023-10-10 (3.43.2)

修复了几个晦涩难懂的 UAF 错误和一个晦涩难懂的内存泄漏。
省略标准库中的 sprintf() 函数的使用 在 CLI 中,因为这现在在某些平台上会生成警告。
避免将双精度转换为无符号长整数,如 某些平台无法正确进行此类转换。
哈希值:
SQLITE_SOURCE_ID: 2023-10-10 12:14:04 4310099cce5a487035fa535dd3002c59ac7f1d1bec68d7cf317fd3e769484790
适用于 sqlite3.c 的 SHA3-256:e17a3dc69330bd109256fb5a6e2b3ce8fbec48892a800389eb7c0f8856703161

2023-09-11 (3.43.1)

修复 sum()、avg() 和 total() 聚合函数处理无穷大的方式的回归。
修复了 json_array_length() 函数中的一个 bug,该 bug 在 参数直接来自 json_remove()。
修复了 omit-unused-subquery-columns 优化(在 在版本 3.42.0 中),以便在子查询是 其中一只手臂是 DISTINCT 而另一只手臂不是的化合物。
其他小修复。
哈希值:
SQLITE_SOURCE_ID: 2023-09-11 12:01:27 2d3a40c05c49e1a49264912b1a05bc2143ac0e7c3df588276ce80a4cbc9bd1b0
sqlite3.c 的 SHA3-256: 391af0a4755e31ae8b29776a4a060b678823ffe4c4db558567567c688a578589

2023-08-24 (3.43.0)

添加对无内容删除 FTS5 索引的支持。这是一个品种 的 FTS5 全文搜索索引,省略了存储正在编制索引的内容 同时还允许删除记录。
日期和时间功能的增强功能:
添加了 ±YYYY-MM-DD HH:MM:SS.SSS 形式的新时移修饰符。
添加了 timediff() SQL 函数。
添加了 octet_length(X) SQL 函数。
添加了 sqlite3_stmt_explain() API。
查询规划器增强功能:
泛化 LEFT JOIN 强度降低优化,使其有效 也适用于 RIGHT 和 FULL 连接。将其重命名为 OUTER JOIN strength reduction。
增强 OUTER JOIN 强度折减优化中的定理证明器 这样它返回的假阴性更少。
十进制扩展名的增强功能:
新函数 decimal_pow2(N) 返回整数 N 的 N 次幂 2 介于 -20000 和 +20000 之间。
新函数 decimal_exp(X) 的工作方式类似于 decimal(X),只是它返回 指数表示法的结果 - 末尾带有“e+NN”。
如果 X 是浮点值,则 decimal(X) 函数现在执行完整的 将该值扩展为精确的十进制等价物。
JSON 处理的性能增强使性能提高了 2 倍 改进了对大型 JSON 字符串的某些类型的处理。
新的 makefile 目标 “verify-source” 检查,以确保没有 源代码树中的意外更改。(仅适用于规范源代码 - 不适用于预编译的合并压缩包。
添加了启用结构化 SQLITE_USE_SEH 编译时选项 在 Windows 上处理作为 WAL 模式处理一部分的内存映射 shm 文件时的异常处理。此选项已启用 默认情况下,使用 Makefile.msc 在 Windows 上构建时。
VFS for unix 现在假定 nanosleep() 系统调用是 除非使用 -DHAVE_NANOSLEEP=0 进行编译,否则可用。
哈希值:
SQLITE_SOURCE_ID: 2023-08-24 12:36:59 0f80b798b3f4b81a7bb4233c58294edd0f1156f36b6ecf5ab8e83631d468778c
适用于 sqlite3.c 的 SHA3-256:a6fc5379891d77b69a7d324cd24a437307af66cfdc3fef5dfceec3c82c8d4078

2023-05-16 (3.42.0)

添加 FTS5 secure-delete 命令。此选项会导致所有取证痕迹 删除内容时从 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 的增强功能:
添加 --unsafe-testing 命令行选项。如果没有此选项,一些 dot-commands(例如:“.testctrl”)现在被禁用,因为这些命令 仅用于测试,如果使用不当可能会导致故障。
允许命令“.log打开”和“.log关闭”,即使在 --safe 模式下也是如此。
“--”作为命令行参数表示所有后续参数 以“-”开头被解释为正常的非选项参数。
魔术参数 “:inf” 和 “:nan” 绑定到浮点文字 分别为 Infinity 和 NaN。
--utf8 命令行选项省略所有 to-or from 的转换 用于交互式会话的 Windows 控制台上的 MBCS 和集 此类会话期间 UTF-8 I/O 的控制台代码页。 --utf8 选项在所有其他平台上都是无操作的。
添加应用程序定义的 SQL 函数具有相同名称的功能 作为连接关键字:CROSS、FULL、INNER、LEFT、NATURAL、OUTER 或 RIGHT。
PRAGMA integrity_check 的增强功能:
当 NaN 值存储在 NOT NULL 列中时,检测并引发错误。
改进的错误消息输出在以下情况下识别 b 树的根页 在 B 树中发现错误。
允许将会话扩展配置为捕获来自 缺少显式 ROWID 的表。
在日期和时间函数中添加了亚秒修饰符。
传入 sqlite3_sleep() 的负值从此解释为 0。
JSON 数组和对象的最大递归深度从 2000 降低 到 1000。
扩展了内置的 printf() 函数,因此逗号选项现在可以使用 除了整数转换之外,还有浮点转换。
其他 bug 修复和性能优化
哈希值:
SQLITE_SOURCE_ID: 2023-05-16 12:36:15 831d0fb2836b71c9bc51067c49fee4b8f18047814f2ff22d817d25195cf350b0
适用于 sqlite3.c 的 SHA3-256: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
适用于 sqlite3.c 的 SHA3-256:c83f68b7aac1e7d3ed0fcdb9857742f024449e1300bfb3375131a6180b36cf7c

2023-03-10 (3.41.1)

提供编译时选项 -DHAVE_LOG2=0 和 -DHAVE_LOG10=0 以使 SQLite 能够 在省略标准库函数 log2()和 log10()的系统上编译。
确保列 t1.x 的数据类型在 “将表 T1 创建为 SELECT CAST(7 作为 INT) 作为 X;”仍然是 INT 而不是 NUM, 为了历史兼容性。
增强 PRAGMA integrity_check,以检测何时在末尾出现额外的字节 索引记录。
修复用户社区上报的各种晦涩难懂的bug。有关详细信息,请参阅更改时间表。
哈希值:
SQLITE_SOURCE_ID: 2023-03-10 12:13:52 20399f3eda5ec249d147ba9e48da6e87f969d7966a9a896764ca437ff7e737ff
适用于 sqlite3.c 的 SHA3-256: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()创建的内存中数据库现在报告其 filename 为空字符串,而不是“x”。
对 CLI 的更改:
添加新的 base64()和 base85()SQL 函数
使用 SQLITE_ENABLE_STMT_SCANSTATUS 编译时,使用新的 sqlite3_stmt_scanstatus_v2()接口增强了 EXPLAIN QUERY PLAN 输出。
“.scanstats est”命令在配置文件中提供查询计划器估计值。
继续提示指示输入当前是否位于 字符串文字、标识符文字、注释、触发器定义等。
增强 --safe 命令行选项以禁止危险的 SQL 函数。
现在,默认情况下,CLI 禁用双引号字符串错误功能 建立。传统用例可以在运行时使用 “.dbconfig dqs_dml打开”和“.dbconfig dqs_ddl打开” 命令。
增强 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。
解析器现在忽略右侧子查询周围的多余括号 ,因此 SQLite 现在在这方面的工作方式与 PostgreSQL 相同。 以前,SQLite 将子查询视为具有隐含“LIMIT 1”的表达式。
向 sqlite3_file_control()API 添加了 SQLITE_FCNTL_RESET_CACHE 选项。
Makefile 改进:
新的生成文件目标“sqlite3r.c”构建了一个合并,其中包括 恢复扩展。
新的 makefile 以 “devtest” 和 “releasetest” 为目标,用于运行 在办理登机手续之前进行快速发育测试,并进行完整的测试 分别进行释放测试。
其他性能增强。
哈希值:
SQLITE_SOURCE_ID: 2023-02-21 18:09:37 05941c2a04037fc3ed2ffae11f5d2260706f89431f463518740f72ada350866d
适用于 sqlite3.c 的 SHA3-256:02bd9e678460946810801565667fdb8f0c29c78e51240512d2e5bb3dbdee7464

2022-12-28 (3.40.1)

将 --safe 命令行选项修复到 CLI,以便它正确地禁止 使用 writefile() 等 SQL 函数,这可能会导致有害的副作用。
修复了 memsys5 替代内存分配器中潜在的无限循环。这 该错误是由版本 3.39.0 中的性能优化引入的。
各种其他晦涩难懂的修复。
哈希值:
SQLITE_SOURCE_ID: 2022-12-28 14:03:47 df5c253c0b3dd24916e4ec7cf77d3db5294cc9fd45ae7b9c5e82ad8197f38a24
适用于 sqlite3.c 的 SHA3-256:4d6800e9032ff349376fe612e422b49ba5eb4e378fac0b3e405235d09dd366ab
2022-11-16 (3.40.0)
添加对将 SQLite 编译为 WASM 并在 Web 浏览器中运行它的支持。注意:WASM 构建及其接口 被视为“测试版”,如果需要,可能会进行细微的更改 出现。我们预计将完成下一个版本的界面。
添加可能能够恢复某些内容的恢复扩展 从损坏的数据库文件。
查询规划器增强功能:
识别包含超过 63 列的表上的覆盖索引,其中 查询中使用第 63 列以外的列和/或 由索引引用。
在可行的情况下,提取表达式索引中包含的表达式的值,而不是重新计算表达式。
NOT NULL 和 IS NULL 运算符(及其等效运算符)避免 从磁盘加载大型字符串和 BLOB 值的内容。
避免具体化对其执行完全扫描的视图 正好一次。在计算视图的行时使用和丢弃这些行。
允许平展作为 的右操作数的子查询 聚合查询中的 LEFT JOIN。
添加了一个名为 sqlite3_filename 的新 typedef,用于表示 数据库文件的名称。各种接口是 修改为使用新的 typedef 而不是“char*”。此接口 更改应该完全向后兼容,尽管这可能会导致 (无害)编译器警告时重建某些旧应用程序。
添加 sqlite3_value_encoding() 接口。
安全性增强:SQLITE_DBCONFIG_DEFENSIVE增强为禁止 更改schema_version。schema_version 在防御模式下变为只读。
PRAGMA integrity_check声明的增强功能:
具有 TEXT 相关性的非 STRICT 表中的列不应包含数值。
非 STRICT 表中具有 NUMERIC 相关性的列不应 包含可转换为数字的 TEXT 值。
验证 WITHOUT ROWID 表的行顺序是否正确。
增强 VACUUM INTO 语句,使其遵循 PRAGMA 同步设置。
增强 sqlite3_strglob() 和 sqlite3_strlike() API,以便它们能够 接受其字符串参数的 NULL 指针,并且仍然生成一个合理的 结果。
提供新的SQLITE_MAX_ALLOCATION_SIZE编译时选项来限制 内存分配的大小。
更改 SQLite 内置伪随机数生成器 (PRNG) 使用的算法 从 RC4 到 Chacha20。
允许两个或多个索引具有相同的名称,只要它们都在 单独的架构。
其他性能优化可使 CPU 周期减少约 1% 用于典型工作负载。
哈希值:
SQLITE_SOURCE_ID: 2022-11-16 12:10:08 89c459e766ea7e9165d0beeb124708b955a4950d0f4792f457465d71b158d318
适用于 sqlite3.c 的 SHA3-256:ab8da6bc754642989e67d581f26683dc705b068cea671970f0a7d32cfacbad19

2022-09-29 (3.39.4)

修复 Windows 上的构建,使其与 -DSQLITE_OMIT_AUTOINIT 配合使用
修复 btree 均衡器中长期存在的问题,在极少数情况下,该问题可能 如果应用程序使用应用程序定义的页面缓存,则会导致数据库损坏。
增强SQLITE_DBCONFIG_DEFENSIVE,以便在触发器正文中的一个或多个语句写入 CREATE TRIGGER 语句时禁止 CREATE TRIGGER 语句 到影子表中。
修复内存分配的大小计算中可能存在的整数溢出问题 在 FTS3 中。
修复了 ICU 扩展中对 sqlite3_set_auxdata() 接口的误用。
哈希值:
SQLITE_SOURCE_ID: 2022-09-29 15:55:41 a29f9949895322123f7c38fbe94c649a9d6e6c9cd0c3b41c96d694552f26b309
适用于 sqlite3.c 的 SHA3-256: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
适用于 sqlite3.c 的 SHA3-256:2fc273cf8032b601c9e06207efa0ae80eb73d5a1d283eb91096c815fa9640257

2022-07-21 (3.39.2)

修复查询计划器中与重新排列关联的性能回归 存在 LEFT JOIN 时 FROM 子句术语的顺序。
针对 CVE-2022-35737、Chromium 错误1343348和1345947、论坛帖子 3607259d3c 和 内部测试发现的其他小问题。
哈希值:
SQLITE_SOURCE_ID: 2022-07-21 15:24:47 698edb77537b67c41adc68f9b892db56bcf9a55e00371a61420f3ddd668e6603
适用于 sqlite3.c 的 SHA3-256:bffbaafa94706f0ed234f183af3eb46e6485e7e2c75983173ded76e0da805f11

2022-07-13 (3.39.1)

修复使用包含复合物的视图的查询的错误结果 SELECT,其中只有一个臂包含 RIGHT JOIN,而视图不包含 包含视图的查询的第一个 FROM 子句术语。论坛帖子 174AFEAE5734D42d。
修复了一些无害的编译器警告。
修复了 ALTER TABLE RENAME 长期存在的问题,该问题只会出现 如果 sqlite3_limit(SQLITE_LIMIT_SQL_LENGTH) 设置为非常小的值。
修复了 FTS3 中一个长期存在的问题,该问题只有在使用 SQLITE_ENABLE_FTS3_PARENTHESIS编译时选项。
修复构建,以便在 SQLITE_DEBUG 和 SQLITE_OMIT_WINDOWFUNC 编译时选项都提供时有效 同时。
修复 REGEXP 扩展的初始前缀优化,使其正常工作 即使前缀包含需要 3 字节 UTF8 的字符,也可以正确 编码。
增强sqlite_stmt虚拟表,以便它缓冲其所有输出。
哈希值:
SQLITE_SOURCE_ID: 2022-07-13 19:41:41 7c16541a0efb3985578181171c9f2bb3fdc4bad6a2ec85c6e31ab96f3eff201f
适用于 sqlite3.c 的 SHA3-256:6d13fcf1c31133da541d1eb8a83552d746f39b81a0657bd4077fed0221749511

2022-06-25 (3.39.0)

添加(早就应该)对 RIGHT 和 FULL OUTER JOIN 的支持。
添加新的二进制比较运算符 IS NOT DISTINCT FROM 和 IS DISTINCT FROM,它们等效于 IS 和 IS NOT,以便与 PostgreSQL 和 SQL 标准。
从 sqlite3_vtab_distinct() 接口添加一个新的返回代码(值“3”),该返回码指示同时具有 DISTINCT 和 ORDER BY 的查询 第。
添加了 sqlite3_db_name() 接口。
unix os 接口解析数据库中的所有符号链接 filenames 为数据库创建一个规范名称,然后 文件已打开。 如果 SQLITE_OPEN_NOFOLLOW 标志与 sqlite3_open_v2() 或类似标志一起使用,则如果路径的任何元素是 符号链接。
将实例化视图推迟到实例化 是实际需要的,从而避免了物化转向时不必要的工作 永远不要使用。
现在允许在任何聚合查询中使用 SELECT 语句的 HAVING 子句, 甚至没有 GROUP BY 子句的查询。
许多微优化共同将 CPU 周期缩短了约 2.3%。
哈希值:
SQLITE_SOURCE_ID: 2022-06-25 14:57:57 14e166f40dbfa6e055543f8301525f2ca2e96a02a57269818b9e69e162e98918
适用于 sqlite3.c 的 SHA3-256:d9c439cacad5e4992d0d25989cfd27a4c4f59a3183c97873bc03f0ad1aa78b7a

2022-05-06 (3.38.5)

修复了 3.38.4 版本的 CLI 中的一个错误。
哈希值:
SQLITE_SOURCE_ID: 2022-05-06 15:25:27 78d9c993d404cdfaa7fdd2973fa1052e3da9f66215cff9c5540ebe55c407d9fe
适用于 sqlite3.c 的 SHA3-256:b05ef42ed234009b4b3dfb36c5f5ccf6d728da80f25ee560291269cf6cfe635f

2022-05-04 (3.38.4)

修复了版本添加的 Bloom 过滤器下拉优化中的字节码问题 3.38.0 中,字节码中的错误导致字节码引擎输入 下拉优化遇到 NULL 键时的无限循环。论坛主题 2482b32700384a0f。
其他小补丁。请参阅时间线 详。
哈希值:
SQLITE_SOURCE_ID: 2022-05-04 15:45:55 d402f49871152670a62f4f28cacb15d814f2c1644e9347ad7d258e562978e45e
适用于 sqlite3.c 的 SHA3-256:e6a50effb021858c200e885664611ed3c5e949413ff2dca452ac7ee336b9de1d

2022-04-27 (3.38.3)

修复了查询计划器在优化自动索引方面过于激进的情况 和Bloom-filter结构,使用不适当的ON子句条款来限制 automatic-index 或 Bloom 过滤器的大小,并导致 输出。论坛主题 0d3200f4f3bcd3a3。
其他小补丁。请参阅时间线 详。
哈希值:
SQLITE_SOURCE_ID: 2022-04-27 12:03:15 9547e2c38a1c6f751a77d4d796894dec4dc5d8f5d79b1cd39e1ffc50df7b3be4
适用于 sqlite3.c 的 SHA3-256:d4d66feffad66ea82073fbb97ae9c84e3615887ebc5168226ccee28d82424517

2022-03-26 (3.38.2)

修复了用户发现的问题 新的 Bloom 过滤器优化 这可能会导致在使用 WHERE 执行 LEFT JOIN 时出现错误答案 子句约束,表示右表上的一列 LEFT JOIN 为 NULL。请参阅论坛主题 031e262a89b6a9d2。
其他小补丁。请参阅时间线 详。
哈希值:
SQLITE_SOURCE_ID: 2022-03-26 13:51:10 d33c709cc0af66bc5b6dc6216eba9f1f0b40960b9ae83694c986fbf4c1d6f08f
适用于 sqlite3.c 的 SHA3-256:0fbac6b6999f894184899431fb77b9792324c61246b2a010d736694ccaa6d613

2022-03-12 (3.38.1)

修复了可能导致以下问题的新 Bloom 滤镜优化问题 一些晦涩难懂的查询会得到错误的答案。
修复日期和时间函数的 localtime 修饰符,以便 它保留小数秒。
修复 sqlite_offset SQL 函数,使其即使正常工作 在极端情况下,例如当参数是虚拟列或 视图的列。
修复虚拟表上的行值 IN 运算符约束,以便它们 即使虚拟表实现依赖于字节码,也能正常工作 筛选不满足约束的行。
对 assert() 语句、测试用例和文档的其他小修复。 有关详细信息,请参阅源代码时间线。
哈希值:
SQLITE_SOURCE_ID: 2022-03-12 13:37:29 38c210fdd258658321c85ec9c01a072fda3ada94540e3239d29b34dc547a8cbc
适用于 sqlite3.c 的 SHA3-256:262ba071e960a8a0a6ce39307ae30244a2b0dc9fe1c4c09d0e1070d4353cd92c

2022-02-22 (3.38.0)

添加了 -> 和 ->> 运算符,以便更轻松地处理 JSON。 新的运算符与 MySQL 和 PostgreSQL 兼容。
JSON 函数现在是内置的。不再需要 使用 -DSQLITE_ENABLE_JSON1 编译时选项启用 JSON 支持。默认情况下,JSON 处于打开状态。使用 新的 -DSQLITE_OMIT_JSON 编译时选项。
日期和时间功能的增强功能:
添加了 unixepoch() 函数。
添加了自动修饰符和 julianday 修饰符。
将 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 增强功能:
列式输出模式得到增强,可以正确处理选项卡 和嵌入在文本中的换行符。
添加了“--wrap N”、“--wordwrap on”和“--quote”等选项 到列式输出模式。
添加了 .mode qbox 别名。
.import 命令会自动消除列名的歧义。
使用新的 sqlite3_error_offset() 接口提供更好的 错误消息。
查询规划器增强功能:
使用 Bloom 筛选器加快大型分析查询的速度。
使用平衡合并树计算 UNION 或 UNION ALL 复合具有 ORDER BY 子句的 SELECT 语句。
将 ALTER TABLE 语句更改为静默忽略 sqlite_schema 表中当 PRAGMA writable_schema=ON时不解析的条目。
哈希值:
SQLITE_SOURCE_ID: 2022-02-22 18:58:40 40fa792d359f84c3b9e9d6623743e1a59826274e221df1bde8f47086968a1bab
适用于 sqlite3.c 的 SHA3-256:a69af0a88d59271a2dd3c846a3e93cbd29e7c499864f6c0462a3b4160bee1762

2022-01-06 (3.37.2)

修复引入的 bug 在版本 3.35.0 (2021-03-12) 中,如果在 PRAGMA temp_store=MEMORY 模式下回滚 SAVEPOINT,可能会导致数据库损坏, 并进行其他更改,然后提交外部事务。入住 73c2b50211d3ae26
修复了 ON DELETE CASCADE 和 ON UPDATE CASCADE 的长期问题 其中用于实现级联更改的字节码缓存 本地 DDL 更改后未重置。办理登机手续 5232c9777fe4fb13.
不应影响生产版本的其他次要修复。
哈希值:
SQLITE_SOURCE_ID: 2022-01-06 13:25:41 872ba256cbf61d9290b571c0e6d82a20c224ca3ad82971edc46b29818d5d17a0
适用于 sqlite3.c 的 SHA3-256:1bb01c382295cba85ec4685cedc52a7477cdae71cc37f1ad0f48719a17af1e1e

2021-12-30 (3.37.1)

修复了版本 3.35.0 的 UPSERT 增强功能引入的 bug,该 bug 可能会导致为一些晦涩但有效的字节码生成不正确的字节码 SQL,可能会导致 NULL 指针取消引用。
修复了读取损坏的数据库文件时 FTS5 中可能发生的 OOB 读取问题。
改进了 CLI 中 --safe 选项的健壮性。
对 assert() 语句和测试用例的其他小修复。
哈希值:
SQLITE_SOURCE_ID: 2021-12-30 15:30:28 378629bf2ea546f73eee84063c5358439a12f7300e433f18c9e1bddd948dea62
适用于 sqlite3.c 的 SHA3-256:915afb3f29c2d217ea0c283326a9df7d505e6c73b40236f0b33ded91f812d174

2021-11-27 (3.37.0)

STRICT 表提供了数据类型管理的规范样式, 对于喜欢这种东西的开发人员。
添加包含 CHECK 约束的列或包含 NOT NULL 约束的生成列时, ALTER TABLE ADD COLUMN 现在检查新约束 数据库中预先存在的行,并且仅在没有约束的情况下继续 被侵犯。
添加了 PRAGMA table_list 语句。
CLI 增强功能:
添加 .connection 命令,允许 CLI 保留多个数据库 连接同时打开。
添加 --safe 命令行选项,该选项禁用可能导致副作用的 dot-commands 和 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
适用于 sqlite3.c 的 SHA3-256:a202a950ab401cda052e81259e96d6e64ad91faaaaf5690d769f64c2ab962f27

2021-06-18 (3.36.0)

改进了 EXPLAIN QUERY PLAN 输出,使其更易于 理解。
标记开头的字节顺序标记被跳过,就好像它们 是空白。
尝试访问 VIEW 或子查询的 rowid 时都会引发错误。 以前,VIEW 的 rowid 是不确定的,通常为 NULL。 -DSQLITE_ALLOW_ROWID_IN_VIEW 编译时选项可用于还原 需要它的应用程序的旧行为。
sqlite3_deserialize() 和 sqlite3_serialize() 接口现在是 默认启用。-DSQLITE_ENABLE_DESERIALIZE编译时选项是 不再需要。相反,有一个新的 -DSQLITE_OMIT_DESERIALIZE 编译时选项来省略这些接口。
“memdb”VFS 现在允许在 同一进程中的多个数据库连接,只要 数据库名称以“/”开头。
退出 EXISTS-to-IN 优化(SQLite 3.35.0 更改日志中的第 8b 项) 因为发现它更频繁地减慢查询速度而不是加快查询速度。
改进常量传播优化,使其在 非联接查询。
REGEXP 扩展名是 现在包含在 CLI 构建中。
哈希值:
SQLITE_SOURCE_ID: 2021-06-18 18:36:39 5c9a6c06871cb9fe42814af9c039eb6da5427a6ec28f187af7ebfb62eafa66e5
适用于 sqlite3.c 的 SHA3-256:2a8e87aaa414ac2d45ace8eb74e710935423607a8de0fafcb36bbde5b952d157

2021-04-19 (3.35.5)

修复了新的 ALTER TABLE DROP COLUMN 功能中的缺陷,这些缺陷可能 损坏数据库文件。
修复了可能导致不正确的模糊查询优化器问题 查询结果。
哈希值:
SQLITE_SOURCE_ID: 2021-04-19 18:32:05 1b256d97b553a9611efca188a3d995a2fff712759044ba480f9a0c9e98fae886
适用于 sqlite3.c 的 SHA3-256:e42291343e8f03940e57fffcf1631e7921013b94419c2f943e816d3edf4e1bbe

2021-04-02 (3.35.4)

修复了查询计划器优化中的缺陷,该缺陷由 上文第8b项。票证 de7db14784a08053。
修复了新 RETURNING 语法中的缺陷。工单编号:132994c8b1063bfb。
修复新的 RETURNING 功能,以便在以下情况之一引发错误 RETURNING 子句中的术语引用未知表 默默地忽略这个错误。
修复与聚合函数处理关联的断言 被下推优化错误触发。
哈希值:
SQLITE_SOURCE_ID: 2021-04-02 15:20:15 5d4c65779dab868b285519b19e4cf9d451d50c6048f06f653aa701ec212df45e
sqlite3.c 的 SHA3-256:528b8a26bf5ffd4c7b4647b5b799f86e8fb1a075f715b87a414e94fba3d09dbe

2021-03-26 (3.35.3)

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

2021-03-17 (3.35.2)

修复了 3.35.0 版中引入的 appendvfs.c 扩展中的问题。
确保日期/时间功能没有参数(生成 取决于当前时间的响应)被视为非确定性函数。工单编号:2c6c8689fb5f3d2f
修复了 sqldiff 实用程序中与以下问题有关的问题 虚拟表定义中不寻常的空格字符。
限制 3.35.0 发布,这样它就不会尝试创建太多新的子查询。 有关详细信息,请参阅论坛主题 140a67d3d2。
哈希值:
SQLITE_SOURCE_ID: 2021-03-17 19:07:21 ea80f3002f4120f5dcee76e8779dfdc88e1e096c5cdd06904c20fd26d50c3827
适用于 sqlite3.c 的 SHA3-256:e8edc7b1512a2e050d548d0840bec6eef83cc297af1426c34c0ee8720f378a11

2021-03-15 (3.35.1)

修复了新 DROP COLUMN 中的一个 bug 用于索引和索引中引用的列时的功能 定义。
改进 CLI 中 .dump 命令的内置文档。
哈希值:
SQLITE_SOURCE_ID: 2021-03-15 16:53:57 aea12399bf1fdc76af43499d4624c3afa17c3e6c2459b71c195804bb98def66a
适用于 sqlite3.c 的 SHA3-256:fc79e27fd030226c07691b7d7c23aa81c8d46bc3bef5af39060e1507c82b0523

2021-03-12 (3.35.0)

添加了内置的 SQL 数学函数 ()。(需要 -DSQLITE_ENABLE_MATH_FUNCTIONS 编译时选项。
添加了对 ALTER TABLE DROP COLUMN 的支持。
泛化 UPSERT:
允许按顺序计算多个 ON CONFLICT 子句,
最后的 ON CONFLICT 子句可以省略冲突目标,并且 但仍然使用 DO UPDATE。
在 DELETE、INSERT 和 UPDATE 语句上添加对 RETURNING 子句的支持。
在包含非常大的数据库上运行 VACUUM 时使用更少的内存 TEXT 或 BLOB 值。不再需要保存整个文本 或内存中的 BLOB。
在以下情况下添加对 MATERIALIZED 和 NOT MATERIALIZED 提示的支持 指定公共表表达式。默认行为为 以前是 NOT MATERIALIZED,但现在更改为 MATERIALIZED for 多次使用的 CTE。
修改了 SQLITE_DBCONFIG_ENABLE_TRIGGER 和 SQLITE_DBCONFIG_ENABLE_VIEW 设置,以便它们仅控制触发器和视图 在主数据库架构或附加数据库架构中,而不是在 TEMP 架构。始终允许 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”命令,以便将 destination 参数 以“|”开头(表示输出被重定向到管道中),然后 参数不需要引用。
Bug修复:
修复了在处理 语法不正确的 SELECT 语句与相关的 WHERE 子句和“HAVING 0”子句。(也在 3.34.1 补丁版本中修复。
修复了 3.33.0 版 IN-operator 优化中可能导致错误答案的 bug。
修复 LIKE 运算符的错误答案,如果模式以“%”结尾并且存在 是“ESCAPE '_'”子句。
哈希值:
SQLITE_SOURCE_ID: 2021-03-12 15:10:09 acd63062eb06748bfe9e4886639e4f2b54ea6a496a83f10716abbaba4115500b
适用于 sqlite3.c 的 SHA3-256:73a740d881735bef9de7f7bce8c9e6b9e57fe3e77fa7d76a6e8fc5c262fbaedf

2021-01-20 (3.34.1)

修复了在同时使用两者处理子查询时潜在的释放后使用错误 一个相关的 WHERE 子句和一个“HAVING 0”子句,其中父子句 query 是一个聚合。
修正文档拼写错误
修复扩展中的小问题。
哈希值:
SQLITE_SOURCE_ID: 2021-01-20 14:10:07 10e20c0b43500cfb9bbc0eaa061c57514f715d87238f4d835880cd846b9ebd1f
适用于 sqlite3.c 的 SHA3-256:799a7be90651fc7296113b641a70b028c142d767b25af1d0a78f93dcf1a2bf20

2020-12-01 (3.34.0)

添加了 sqlite3_txn_state() 接口,用于报告当前 数据库连接的事务状态。
增强递归公共表表达式以支持两个或多个 SQL Server 完成的递归项,因为这有助于使针对图形的查询更易于编写和更快地执行。
改进了有关 CHECK 约束失败的错误消息。
CLI 增强功能:
.read dot-command 现在除了接受管道之外,还接受管道 文件名。
在 .dump dot-command 中添加了选项 --data-only 和 --nosys。
在 .schema dot-command 中添加了 --nosys 选项。
表名引号对 .import dot-command 有效。
generate_series(START,END,STEP) 表值函数 扩展现在内置在 CLI 中。
.databases dot-command 现在显示每个数据库的状态 文件由 sqlite3_db_readonly() 和 sqlite3_txn_state() 确定。
添加了设置 .mode 选项卡的 --tabs 命令行选项。
如果文件命名为其参数,则 --init 选项会报告错误 无法打开。--init 选项现在也支持 --bail 选项。
查询计划器改进:
改进了对运行 DISTINCT 运算符的成本估算。
使用多列索引执行 UPDATE 或 DELETE 时,其中 索引中只有少数几列对 索引查找,推迟做主表查找,直到终究 WHERE 子句约束已评估,如果 约束可以由索引的未使用的后续项来覆盖, 从而避免不必要的主表查找。
新的OP_SeekScan操作码用于提高 当后面的列受到约束时,多列索引查找 由 IN 运算符。
BEGIN IMMEDIATE 和 BEGIN EXCLUSIVE 命令现在甚至可以工作 如果一个或多个附加的数据库文件是只读的。
增强了 FTS5 以支持卦象索引。
改进了 WAL 模式锁定基元在以下情况下的性能 有数百个连接都在访问同一个数据库文件 立即。
增强了 carray() 表值函数以包含单个参数 使用辅助 sqlite3_carray_bind() 接口绑定的表单。
substr() SQL 函数现在也可以称为 “substring()” 与 SQL Server 的兼容性。
语法图现在被实现为 Pikchr 脚本并呈现 作为 SVG,以提高易读性和易于维护。
哈希值:
SQLITE_SOURCE_ID: 2020-12-01 16:14:00 a26b6597e3ae272231b96f9982c3bcc17ddec2f2b6eb4df06a224b91089fed5b
sqlite3.c 的 SHA3-256:fbd895b0655a337b2cd657675f314188a4e9fe614444cc63dfeb3f066f674514

2020-08-14 (3.33.0)

支持遵循 PostgreSQL 语法的 UPDATE FROM。
将数据库文件的最大大小增加到 281 TB。
扩展了 PRAGMA integrity_check 语句,以便可以选择 仅限于验证单个表及其索引,而不是 整个数据库文件。
添加了用于执行任意精度十进制算术的十进制扩展名。
增强了 ieee754 扩展,用于处理 IEEE 754 binary64 数字。
CLI 增强功能:
添加了四种新的输出模式:“box”、“json”、“markdown”、” 和“表”。
“列”输出模式自动将列扩展到 包含最长的输出行并自动转动 “.header”,如果之前未设置。
“quote”输出模式支持“.separator”
十进制扩展名和 ieee754 扩展名内置于 CLI 中
查询计划器改进:
添加查找 使用 INDEXED BY 的查询的全索引扫描查询计划,以前会因“无查询解决方案”而失败。
做得更好 检测缺失、不完整和/或狡猾的sqlite_stat1数据,并生成良好的查询计划,尽管 误传。
改进了“SELECT min(x) FROM t WHERE y IN (?,?,?)”等查询的性能 假设 t(x,y) 上的索引。
在 WAL 模式下,如果写入器崩溃并使 shm 文件不一致 状态,后续事务现在能够恢复 SHM 文件,即使 有活动的读取事务。在此增强功能之前,shm 文件恢复 这种情况将导致SQLITE_PROTOCOL错误。
哈希值:
SQLITE_SOURCE_ID: 2020-08-14 13:23:32 fca8dc8b578f215a969cd899336378966156156154710873e68b3d9ac5881b0ff3f
适用于 sqlite3.c 的 SHA3-256:d00b7fffa6d33af2303430eaf394321da2960604d25a4471c7af566344f2abf9

2020-06-18 (3.32.3)

修复了各种小错误,包括对票证 8f157e8010b22af0、9fb26d37cefaba40、e367f31901ea8700、b706351ce2ecf59a、7c6d876f84e6e7e2 和 c8d3b9f0a750a529 的修复。
哈希值:
SQLITE_SOURCE_ID: 2020-06-18 14:00:33 7ebdfa80be8e8e73324b8d66b3460222eb74c7e9dfd655b48d6ca7e1933cc8fd
适用于 sqlite3.c 的 SHA3-256:b62b77ee1c561a69a71bb557694aaa5141f1714c1ff6cc1ba8aa8733c92d4f52

2020-06-04 (3.32.2)

修复了字节码引擎中长期存在的 bug,该 bug 可能导致 COMMIT 命令报告成功,而实际上它失败了 提交。工单 810dc8038872e212
哈希值:
SQLITE_SOURCE_ID: 2020-06-04 12:58:43 ec02243ea6ce33b090870ae55ab8aa2534b54d216d45c4aa2fdbb00e86861e8c
适用于 sqlite3.c 的 SHA3-256:f17a2a57f7eebc72d405f3b640b4a49bcd02364a9c36e04feeb145eccafa3f8d

2020-05-25 (3.32.1)

修复了两个长期存在的 bug,这些 bug 允许恶意 SQL 语句 使运行 SQLite 的进程崩溃。这些错误已公布 在 3.32.0 版本发布后约 24 小时由第三方提供,但 不特定于 3.32.0 版本。
其他次要编译器警告修复等等。
哈希值:
SQLITE_SOURCE_ID: 2020-05-25 16:19:56 0c1fcf4711a2e66c813aed38cf41cd3e2123ee8eb6db98118086764c4ba83350
适用于 sqlite3.c 的 SHA3-256:f695ae21abf045e4ee77980a67ab2c6e03275009e593ee860a2eabf840482372

2020-05-22 (3.32.0)

添加了对使用 PRAGMA analysis_limit 命令进行近似 ANALYZE 的支持。
添加了字节码虚拟表。
将校验和 VFS 填充码添加到运行时可加载的集合中 包含在源代码树中的扩展。
添加了 iif() SQL 函数。
INSERT 和 UPDATE 语句现在始终在计算 CHECK 约束之前应用列亲和性。此错误修复可以在 理论,给非正统的遗留数据库带来问题 CHECK 约束要求 INSERT 的输入类型 与声明的列类型不同。有关更多信息,请参阅工单 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
适用于 sqlite3.c 的 SHA3-256: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
适用于 sqlite3.c 的 SHA3-256: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(),这些 API 对专用扩展很有用。
添加 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 的功能。
后备内存分配器经过增强,可支持两个独立的内存 每个池中具有不同大小分配的池。这允许更多内存 由旁观覆盖的分配,同时减少 每个连接的堆内存使用量从 120KB 降至 48KB。
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
适用于 sqlite3.c 的 SHA3-256:a5fca0b9f8cbf80ac89b97193378c719d4af4b7d647729d8df9c0c0fca7b1388

2019-10-10 (3.30.1)

修复了查询扁平化程序中可能导致段错误的 bug 用于对聚合函数使用新的 FILTER 子句的嵌套查询。 工单 1079ad19993d13fa
Cherrypick 修复了自 3.30.0 以来发现的其他晦涩难懂的问题 释放
哈希值:
SQLITE_SOURCE_ID: 2019-10-10 20:19:45 18db032d058f1436ce3dea84081f4ee5a0f2259ad97301d43c426bc7f3df1b0b
适用于 sqlite3.c 的 SHA3-256:f96fafe4c110ed7d77fc70a7d690e5edd1e64fefb84b3b5969a722d885de1f2d

2019-10-04 (3.30.0)

添加对聚合函数的 FILTER 子句的支持。
在 ORDER BY 子句中添加对 NULLS FIRST 和 NULLS LAST 语法的支持。
增强了index_info和index_xinfo编译指示,以提供 有关 WITHOUT ROWID 表的磁盘表示形式的信息。
添加 sqlite3_drop_modules() 接口,允许应用程序 禁用自动加载的虚拟表,而这些虚拟表不会自动加载 需要。
改进了 CLI 中的 .recover dot-command,以便 它从损坏的数据库文件中恢复更多内容。
增强 RBU 扩展以支持表达式上的索引。
更改架构解析器,以便在出现以下任何错误时出错 sqlite_master表的 type、name 和 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编译时选项现在是无操作的。
哈希值:
SQLITE_SOURCE_ID: 2019-10-04 15:03:17 c20a35336432025445f9f7e289d0cc3e4003fb17f45a4ce74c6269c407c6e09f
适用于 sqlite3.c 的 SHA3-256: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
适用于 sqlite3.c 的 SHA3-256:d9a5daf7697a827f4b2638276ce639fa04e8e8bb5fd3a6b683cfad10f1c81b12

2019-04-16 (3.28.0)

增强的窗口功能:
添加对 EXCLUDE 子句的支持。
添加对窗口链接的支持。
添加对 GROUPS 框架的支持。
添加对“<expr> PRECEDING”的支持,以及 “<expr> FOLLOWING”边界 在 RANGE 帧中。
添加了新的 sqlite3_stmt_isexplain(S) 接口,用于确定 准备好的语句是否是 EXPLAIN。
增强了 VACUUM INTO,使其适用于只读数据库。
新的查询优化:
在 ESCAPE 关键字出现以下情况时启用 LIKE 优化 存在并且 PRAGMA case_sensitive_like 已打开。
在由部分索引驱动的查询中,避免不必要的 对部分的 WHERE 子句中指定的约束进行测试 index,因为我们知道约束必须始终为真。
TCL接口的增强功能:
在函数方法中添加了 -returntype 选项。
添加了新的 bind_fallback 方法。
CLI 的增强功能:
添加了对绑定参数和 .parameter 命令的支持。
修复 readfile() 函数,使其返回 空 BLOB,而不是在以下情况下引发内存不足错误 读取空文件。
修复 writefile() 函数,以便当它 沿着新文件的路径创建新目录,它给它们 Umask 权限,而不是与文件相同的权限。
更改 .archive 命令中的 --update 选项,使其跳过 已在存档中且未更改的文件。添加 新的 --insert 选项,其工作方式类似于 --update 曾经工作过。
添加了 fossildelta.c 扩展,该扩展可以创建、应用和解构 RBU 扩展使用的 Fossil 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() 的双参数版本接受指向 tokenizer 方法对象,即使没有 sqlite3_db_config(SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER) 设置 如果第二个参数是绑定参数
改进了对损坏的数据库文件的鲁棒性。
其他性能增强功能
建立了官方 SQLite 源代码树的 Git 镜像。 SQLite 的规范源代码使用 https://sqlite.org/src 的 Fossil DVCS 进行维护。 可以在 https://github.com/sqlite/sqlite 处看到 Git 镜像。
哈希值:
SQLITE_SOURCE_ID: 2019-04-16 19:49:53 884b4b7e502b4e991677b53971277adfaf0a04a284f8e483e2553d0f83156b50
适用于 sqlite3.c 的 SHA3-256:411efca996b65448d9798eb203d6ebe9627b7161a646f5d00911e2902a57b2e9

2019-02-25 (3.27.2)

修复了 IN 运算符中由 已尝试在 3.27.0 版中进行优化。票务 df46dfb631f75694
修复了误用窗口函数时导致崩溃的 bug。工单编号:4feb3159c6bc3f7e33959。
修复各种文档拼写错误
哈希值:
SQLITE_SOURCE_ID: bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7
适用于 sqlite3.c 的 SHA3-256:1dbae33bff261f979d0042338f72c9e734b11a80720fb32498bae9150cc576e7

2019-02-08 (3.27.1)

修复查询优化器中的一个 bug:两者之间的不利交互 OR 优化和尝试使用值的优化 直接从表达式索引中读取,而不是重新计算 表达。 工单 4e8e4857d32d401f
哈希值:
SQLITE_SOURCE_ID: 2019-02-08 13:17:39 0eca3dd3d38b31c92b49ca2d311128b74584714d9e7de895b1a6286ef959a1dd
适用于 sqlite3.c 的 SHA3-256:11c14992660d5ac713ea8bea48dc5e6123f26bc8d3075fe5585d1a217d090233

2019-02-07 (3.27.0)

添加了 VACUUM INTO 命令
如果使用双引号字符串文本,则在错误日志上发出SQLITE_WARNING消息。
sqlite3_normalized_sql() 接口适用于任何准备好的语句 使用 sqlite3_prepare_v2() 或 sqlite3_prepare_v3() 创建。它不是 为了使用 sqlite3_normalized_sql(),需要将 sqlite3_prepare_v3() 与 SQLITE_PREPARE_NORMALIZE 一起使用。
在 FTS3 和 FTS5 中添加了 remove_diacritics=2 选项。
在 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” 和 “--readonly BOOLEAN” 选项。
CLI 的增强功能,主要用于支持测试和调试 SQLite库本身:
添加对“.open --hexdb”的支持。这 “dbtotxt”实用程序 用于生成“hexdb”文本的程序被添加到 源代码树。
在“.open --deserialize”上添加对“--maxsize N”选项的支持。
添加“--memtrace”命令行选项,以显示所有内存分配 和解除分配。
在具有 SQLITE_DEBUG 的构建上添加“.eqp trace”选项,以启用 带有缩进和 PRAGMA vdbe_trace的字节码程序列表都在一步到位。
添加“.progress”命令进行访问 sqlite3_progress_handler() 接口。
将“--async”选项添加到“.backup”命令中。
添加选项 “--expanded”, “--normalized”, “--plain”, “--profile”, “--row”, “--stmt”和“--close”添加到“.trace”命令。
提高了对针对恶意 SQL 运行的可靠性 恶意损坏的数据库。
Bug修复:
不要使用部分索引对 IN 运算符执行表扫描。 工单编号:1d958d90596593a774。
修复查询扁平化程序,使其适用于包含以下内容的查询 使用窗口函数的子查询。 工单 709fcd17810f65f717
确保 ALTER TABLE 修改嵌入在 WITH 中的表名和列名 属于视图和触发器的子句。
修复了阻止在表值周围使用括号的解析器 bug 功能。
修复了表达式索引的 OR 优化问题。 工单 d96eba87698a428c1d。
修复了 LEFT JOIN 强度折减优化的问题,其中优化 由于 IS NOT NULL 运算符而应用不当。 工单编号:5948e09b8c415bc45d。
修复 REPLACE 命令,使其不再能够偷偷摸摸地执行 将 NULL 值添加到 NOT NULL 列中,即使 NOT NULL 列具有默认值 值为 NULL。 票证 e6f1f2e34dceeb1ed6
修复了在相关子查询中使用的窗口函数时出现的问题。 票号 d0866b26f83e9c55e3
修复 ALTER TABLE RENAME COLUMN 命令,使其适用于表 具有冗余 UNIQUE 约束。 票务 bc8d94f0fbd633fd9a
修复了导致 zeroblob 值在插入到 使用表达式索引的表。 票务 bb4bdb9f7f654b0bb9
哈希值:
SQLITE_SOURCE_ID:“2019-02-07 17:02:52 97744701c3bd414e6c9d7182639d8c2ce7cf124c4fce625071ae65658ac61713 "
适用于 sqlite3.c 的 SHA3-256: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_xinfo,其工作方式与 PRAGMA table_info 相同,只是它还显示虚拟表中的隐藏列。
添加了 explain 虚拟表作为运行时可加载扩展。
向查询计划器添加限制计数器,以防止某些病态 SQL 输入的 sqlite3_prepare() 时间过长。
添加了编译时对 sqlite3_normalized_sql() 接口的支持 与SQLITE_ENABLE_NORMALIZE。
增强的触发器,以便它们可以使用表值函数 存在于定义触发器的架构以外的架构中。
CLI 的增强功能:
改进了“.help”命令。
SQLITE_HISTORY环境变量(如果存在), 指定命令行编辑历史记录文件的名称
与打开新数据库关联的 --deserialize 选项会导致 要读入内存并使用 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”
适用于 sqlite3.c 的 SHA3-256:72c08830da9b5d1cb397c612c0e870d7f5eb41a323b41aa3d8aa5ae9ccedb2c4

2018-11-05 (3.25.3)

禁止在递归部分使用 window 函数 a CTE。票号:e8275b415a2f03bee
修复了虚拟表上 typeof() 和 length() 的行为。工单编号: 69d642332d25aa3b7315a6d385
加强对故意损坏的数据库文件的防御。
修复了查询规划器中的问题,该问题在行值表达式出现时导致 与具有冗余列的 PRIMARY KEY 一起使用。工单编号:1a84668dcfdebaf12415d
修复查询规划器,使其对 IS NOT NULL 运算符正常工作 在带有 SQLITE_ENABLE_STAT4 编译时选项的 LEFT JOIN 的 ON 子句中。65eb38f6e46de8c75e188a17ec
哈希值:
SQLITE_SOURCE_ID:“2018-11-05 20:37:38 89e099fbe5e13c33e683bef07361231ca525b88f7907be7092058007b75036f2”
适用于 sqlite3.c 的 SHA3-256:45586e4df74de3a43f3a1f8c7a78c3c3f02edce01af7d10cafe68bb94476a5c5

2018-09-25 (3.25.2)

添加 PRAGMA legacy_alter_table=ON 命令,该命令会导致 “ALTER TABLE RENAME”命令的行为与SQLite版本3.24.0中的行为相同 及更早版本:对触发器主体内重命名的表的引用 并且视图不会更新。这个新的编译指示提供了兼容性 解决那些预期较旧的、不稳定的行为的旧程序 的 ALTER TABLE RENAME。
修复了导致 使用涉及窗口函数的复杂表达式时出现故障 视图内部。
修复了各种其他编译器警告和相关的小问题 具有晦涩难懂的配置。
哈希值:
SQLITE_SOURCE_ID:“2018-09-25 19:08:10 fb90e7189ae6d62e77ba3a308ca5d683f90bbe633cf681865365b8e92792d1c7”
sqlite3.c 的 SHA3-256:34c23ff91631ae10354f8c9d62fd7d65732b3d7f3acfd0bbae31ff4a62fe28af

2018-09-18 (3.25.1)

在 3.25.0 版本中向 ALTER TABLE 添加了额外的健全性检查 有时会引发假阳性 当被修改的表具有触发器时 更新虚拟表。误报导致 ALTER TABLE 回滚,从而保持架构不变。 票号 b41031ea2b537237。
3.25.0 版本中对字节码中无尽循环的修复 与 ORDER BY LIMIT 优化关联不起作用 一些涉及窗口函数的查询。额外的更正 是必需的。工单 510cde277783b5fb
哈希值:
SQLITE_SOURCE_ID:“2018-09-18 20:20:44 2ac9003de44da7dafa3fbb1915ac5725a9275c86bf2f3b7aa19321bf1460b386”
适用于 sqlite3.c 的 SHA3-256:1b2302e7a54cc99c84ff699a299f61f069a28e1ed090b89e4430ca80ae2aab06

2018-09-15 (3.25.0)

添加对窗口函数的支持
增强了 ALTER TABLE 命令:
添加对重命名表中列的支持,使用 ALTER TABLE 表将 COLUMN oldname 重命名为 newname。
修复表重命名功能,以便它也更新引用 添加到触发器和视图中的重命名表。
查询优化器改进:
避免在聚合查询中加载不必要的列 不在聚合函数中,并且不是其中的一部分 的 GROUP BY 子句。
IN-early-out 优化:在 多列索引和 IN 运算符用于列 除了最左边的列,则如果没有行匹配 第一个 IN 值,检查以确保存在 将列匹配到右侧,然后继续执行 下一个 IN 值。
使用传递属性尝试传播常量 WHERE 子句中的值。例如,convert “a=99 AND b=a”变为“a=99 AND b=99”。
在 unix VFS 中的每个 inode 上使用单独的互斥锁,而不是 在它们之间共享一个互斥锁,以实现更好的并发性 在多线程环境中。
增强 PRAGMA integrity_check 命令以改进检测 页面上的问题 freelist.
在命令行 shell 的“.dump”命令中输出无穷大为 1e999。
添加了SQLITE_FCNTL_DATA_VERSION文件控件。
添加了 Geopoly 模块
Bug修复:
ORDER BY LIMIT 优化可能导致无限循环 在准备好的语句的字节码下非常晦涩难懂 情况 下 由于查询优化器中的一些小缺陷的汇合。 修复工单 9936b2fa443fec03ff25
在 UPSERT 上,当约束检查的顺序重新排列时, 确保插入内容上的关联转换 在任何约束检查之前发生。修复了工单 79cad5e4b2e219dd197242e9e。
避免在 CLI 的 “.eqp full” 逻辑关闭后,对 CLI 的 “.stats on” 命令使用准备好的语句。修复了工单 7be932dfa60a8a6b3b26bcf76。
LIKE 优化生成了不正确的字节码,因此 得到错误的答案 如果左边的操作数具有数字亲和力,而右边的操作数具有数字亲和力 pattern 为 '/%',或者如果模式以 ESCAPE 字符开头。 修复工单 c94369cae9b561b1f996d0054b
哈希值:
SQLITE_SOURCE_ID:“2018-09-15 04:01:47 b63af6c3bd33152742648d5d2e8dc5d5fcbcdd27df409272b6aea00a6f761760”
适用于 sqlite3.c 的 SHA3-256:989e3ff37f2b5eea8e42205f808ccf0ba86c6ea6aa928ad2c011f33a108ac45d
2018-06-04 (3.24.0)
添加对 PostgreSQL 样式 UPSERT 的支持。
添加对 r 树表中辅助列的支持。
添加 C 语言 API,用于发现 SQLite:sqlite3_keyword_count()、sqlite3_keyword_name() 和 sqlite3_keyword_check()。
为基于 sqlite3_str 对象的动态字符串添加 C 语言 API。
增强 ALTER TABLE,使其将“true”和“false”识别为 DEFAULT 的有效参数。
将排序器引用优化添加为编译时选项。 仅当使用 SQLITE_ENABLE_SORTER_REFERENCES 编译时才可用。
改进 EXPLAIN QUERY PLAN 原始输出的格式,以便 它提供了有关查询计划和 计划各个组成部分之间的关系。
向 sqlite3_db_config() API 添加了 SQLITE_DBCONFIG_RESET_DATABASE 选项。
CLI 增强功能:
自动截获原始 EXPLAIN QUERY PLAN 输出,并将其重新格式化为 ASCII 艺术图。
以“#”开头且不在中间的行 SQL 语句被解释为注释。
在“.backup”命令中添加了 --append 选项。
添加了“.dbconfig”命令。
性能:
UPDATE 避免了不必要的低级磁盘写入,当内容 的数据库文件实际上不会更改。 例如,“UPDATE t1 SET x=25 WHERE y=?”不会产生额外的 磁盘 I/O(如果列 x 中的值已为 25)。同样地 对跨多个页面的记录执行 UPDATE 时,仅 实际更改的页面子集将写入磁盘。 这只是低级性能优化,不会 影响 TRIGGER 或其他更高级别的 SQL 的行为 结构。
使用 ORDER BY 和 LIMIT 的查询现在会尝试避免计算 不可能低于 LIMIT 的行。这可以大大 改进了 ORDER BY LIMIT 查询的性能,尤其是当 LIMIT 相对于不受限制的输出行数而言较小。
允许继续进行 OR 优化 即使 OR 表达式也已转换为 IN 表达。OR 优化的用法现在也更清楚地显示在 EXPLAIN QUERY PLAN 输出中。
查询规划器更积极地对视图和子查询使用自动索引 无法创建持久性索引。
在适当的情况下,使用 R-Tree 扩展中的一次性 UPDATE 和 DELETE 查询计划。
LEMON 生成的解析器中的性能改进。
Bug修复:
对于 LEFT JOIN 的右侧表,计算值 表达式,而不是加载预先计算的值 从表达式索引中取出,因为表达式索引可能 不包含正确的值。工单编号: 7fa8049685b50b5aeb0c2
不要尝试使用 WHERE 子句中的术语来启用 对 LEFT JOIN 的右侧表进行索引查找。票务 4ba5abf65c5b0f9a96a7a
修复了打开失败错误后可能发生的内存泄漏 在 CSV 虚拟表中
修复了一个长期存在的问题,即 AUTOINCREMENT 使用的 sqlite_sequence 表上的架构损坏可能导致 崩溃。工单编号:d8dc2b3a58cd5dc2918a1
修复 json_each() 函数,使其返回 当输入为简单值时,其“fullkey”列上的有效结果 而不是数组或对象。
哈希值:
SQLITE_SOURCE_ID:“2018-06-04 19:24:41 c7ee0833225bfd8c5ec2f9bf62b97c4e04d03bd9566366d5221ac8fb199a87ca”
适用于 sqlite3.c 的 SHA3-256:0d384704e1c66026228336d1e91771d295bf688c9c44c7a44f25a4c16c26ab3c

2018-04-10 (3.23.1)

修复了新的 LEFT JOIN 强度降低优化中的两个问题。 门票 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”
适用于 sqlite3.c 的 SHA3-256:65750d1e506f416a0b0b9dd22d171379679c733e3460549754dc68c92705b5dc

2018-04-02 (3.23.0)

在以下情况下添加 sqlite3_serialize() 和 sqlite3_deserialize() 接口 使用SQLITE_ENABLE_DESERIALIZE编译时选项。
将 TRUE 和 FALSE 识别为常量。(为了兼容性,如果有 存在名为“true”或“false”的列,则标识符引用 列而不是布尔常量。
支持运算符 IS TRUE、IS FALSE、IS NOT TRUE 和 IS NOT FALSE。
在 sqlite3_db_status() 中添加了 SQLITE_DBSTATUS_CACHE_SPILL 选项 报告已发生的缓存溢出次数。
内置 printf 实现上的“alternate-form-2”标志 (“!”) 现在导致字符串替换来测量 字符而不是字节。
如果虚拟表实现中的 xColumn 方法返回 使用 sqlite3_result_error() 的错误消息,然后给出该错误 消息优先于内部生成的消息。
向 CLI 添加了 -A 命令行选项,以便更轻松地管理 SQLite 存档文件。
添加对 INSERT OR REPLACE、INSERT OR IGNORE 和 UPDATE OR REPLACE 的支持 在 Zipfile 虚拟表中。
增强 sqlite3changeset_apply() 接口,使其得到强化 抵御来自故意损坏的变更集对象的攻击。
添加了 sqlite3_normalize() 扩展函数。
查询优化器增强功能:
改进 omit-left-join 优化,使其在以下情况下有效 右侧表是 UNIQUE,但不一定不是 NULL。
改进下推优化,使其适用于许多 LEFT 连接。
添加 LEFT JOIN 强度降低优化,以转换 LEFT 如果 WHERE 子句中存在术语,则 JOIN 转换为普通 JOIN 这将防止 LEFT JOIN 的额外全 NULL 行 出现在输出集中。
避免在 AUTOINCREMENT 表更新为小于 sqlite_sequence 的 rowid 时对 表进行不必要的写入 最大。
Bug修复:
修复分析器以接受有效的行值语法。 工单 7310e2fb3d046a5
修复查询计划器,使其考虑 子表达式中表值函数的参数 WHERE 子句。 票证 80177f0c226ff54
修复了复杂 OR 连接的 WHERE 和 STAT4 的错误结果。 票证 ec32177c99ccac2
修复了由于自动 数据类型转换。 工单 343634942dd54ab
FTS4 中的断言错误。 工单编号:d6ec09eccf68cfc
行值中小于运算符的结果不正确。 票号 f484b65f3d62305
始终将非零浮点值解释为 TRUE,即使 整数部分为零。 工单编号:36fae083b450e3a
修复了 fileio.c 扩展名的 fsdir(PATH) 表值函数中的问题, 如果将 fsdir() 表用作内部表,则会导致段错误 的联接。邮件列表上报告的问题,并通过签入 7ce4e71c1b7251be 修复
发出错误,而不是断言错误或空指针 当 sqlite_master 表损坏时取消引用,以便 sqlite_sequence表根页面实际上是一个 btree-index 页面。入住 525deb7a67fbd647
修复 ANALYZE 命令,以便它计算表的统计信息 其名称以“SQLite”开头。入住 0249d9aecf69948d
OSSFuzz检测到的问题的其他修复:
修复了 VACUUM 上损坏的数据库文件可能存在的无限循环。 入住 27754b74ddf64
禁止触发器和视图的 WITH 子句中的参数。 入住 b918d4b4e546d
修复了行值处理中潜在的内存泄漏问题。 入住 2df6bbf1b8ca8
改进了 replace() SQL 函数的性能,适用于以下情况 在兆字节大小的字符串上有许多替换,试图 避免OSSFuzz在测试过程中超时。 入住 fab2c2b07b5d3
在sqlite_master表时提供适当的错误消息 包含一个 CREATE TABLE AS 语句。以前,这会导致 断言错误或空指针取消引用。OSSFuzz发现的问题 在GDAL项目上。入住 d75e67654aa96
删除了不正确的 assert() 语句。办理登机手续 823779d31eb09cda.
修复了对 INTEGER PRIMARY KEY 使用 LIKE 优化时出现的问题。办理登机手续 b850dd159918af56.
哈希值:
SQLITE_SOURCE_ID:“2018-04-02 11:04:16 736b53f57f70b23172c30880186dce7ad9baa3b74e3838cae5847cffb98f5cd2”
适用于 sqlite3.c 的 SHA3-256:4bed3dc2dc905ff55e2c21fd2725551fc0ca50912a9c96c6af712a4289cb24fa

2018-01-22 (3.22.0)

sqlite3_trace_v2() 的输出现在显示每个单独的 SQL 语句 在触发器内运行。
添加从 WAL 模式数据库读取数据的功能,即使应用程序 缺少对数据库及其包含目录的写入权限,只要 -shm 和 -wal 文件存在于该目录中。
在 R-Tree 扩展中添加了 rtreecheck() 标量 SQL 函数。
添加了 sqlite3_vtab_nochange() 和 sqlite3_value_nochange() 接口 以帮助虚拟表实现优化 UPDATE 操作。
添加了 sqlite3_vtab_collation() 接口。
添加了对 FTS5 中“^”初始标记语法的支持。
新扩展:
Zipfile 虚拟表可以读取和写入 ZIP 存档。
在fileio.c扩展中添加了fsdir(PATH)表值函数, 用于列出目录中的文件。
sqlite_btreeinfo同名虚拟表,用于反省和估计 数据库中的 btree。
追加 VFS 是一个 VFS 填充码,它允许将 SQLite 数据库附加到其他一些数据库 文件。这允许(例如)将数据库追加到 然后打开并读取数据库的可执行文件。
查询规划器增强功能:
使用索引快速计算 aggregate min() 或 max() 被扩展为使用表达式的索引。
决定是否实现 FROM 子句子查询 作为协程或使用查询平展现在考虑是否 外部查询的结果集为“复杂”(如果它 包含函数或表达式子查询)。复杂的结果 set 偏向于使用协程的决策。
计划器避免使用具有未知数的索引的查询计划 整理函数。
计划器会省略未使用的 LEFT 联接,即使它们不是 查询的最右边联接。
其他性能优化:
更小、更快速的文本到浮点的实现 转换子例程:sqlite3AtoF()。
Lemon 解析器生成器创建更快的解析器。
使用 strcspn() C 库例程来加速 LIKE 和 GLOB 运算符。
对命令行 shell 的改进:
“.schema”命令显示虚拟表的结构。
添加了对读取和写入 SQLite 存档文件的支持 .archive 命令。
添加了实验性的 .expert 命令
添加了“.eqp”命令的“.eqp trigger”变体
增强“.lint fkey-indexes”命令,使其适用于 WITHOUT ROWID 表。
如果 shell 的 filename 参数是 ZIP 存档,而不是 一个 SQLite 数据库,然后 shell 会自动打开该 ZIP 使用 Zipfile 虚拟表进行存档。
添加了 edit() SQL 函数。
添加了 .excel 命令以简化导出 数据库内容添加到电子表格中。
在以下情况下,使用追加 VFS 打开数据库 --append 标志用于命令行或与 .open 命令。
增强SQLITE_ENABLE_UPDATE_DELETE_LIMIT编译时选项,以便 它适用于 WITHOUT ROWID 表。
提供返回的 sqlite_offset(X) SQL 函数 数据库文件中到记录开头的字节偏移量 当使用 -DSQLITE_ENABLE_OFFSET_SQL_FUNC 编译时,保持值 X。
Bug修复:
在 WHERE 子句中使用 OR 运算符的 UPDATE 上的无限循环。 问题在 3.17.0 中引入并在邮件列表中报告 一年后。工单编号:47b2581aa9bfecec。
当前跳过非重复优化时查询结果不正确 使用。 工单 ef9318757b152e3a。
使用 ORDER BY DESC 联接的查询结果不正确。工单编号:123c9ba32130a6c9。
CREATE TABLE AS 之间的结果集列名不一致 和一个简单的 SELECT。工单编号:3b4450072511e621
对表达式的索引执行 REPLACE 时出现断言错误。 票务 dc3f932f5a147771
在常量索引上执行 IN 运算符时出现断言错误。 票务编号: aa98619ad08ddcab
哈希值:
SQLITE_SOURCE_ID:“2018-01-22 18:45:57 0c55d179733b46d8d0ba4d88e01a25e10677046ee3da1d5b1581e86726f2171d”
适用于 sqlite3.c 的 SHA3-256:206df47ebc49cd1710ac0dd716ce5de5854826536993f4feab7a49d136b85069

2017-10-24 (3.21.0)

利用 F2FS 文件系统中的原子写入功能(如果可用),用于 大大降低了事务开销。这目前需要 SQLITE_ENABLE_BATCH_ATOMIC_WRITE 编译时选项。
允许 ATTACH 和 DETACH 命令在事务中工作。
如果 PRIMARY KEY 允许 WITHOUT ROWID 虚拟表可写 只包含一列。
在 WAL 重置中写入标头后发生的“fsync()” 现在使用检查点的同步设置。这意味着它将使用 如果 PRAGMA checkpoint_fullfsync打开,则在 Mac 上显示“fullfsync”。
sqlite3_sourceid() 函数尝试检测源代码是否具有 已从签入版本控制的内容进行了修改,如果有 修改时,版本哈希的最后四个字符显示为 “alt1”或“alt2”。目的是检测意外和/或粗心 编辑。伪造者可以破坏此功能。
改进了 CREATE TABLE AS 语句的列名取消引用 右侧的聚合查询。
unix VFS 发出的 “stat()” 系统调用更少。
增强了 LIKE 优化,使其与 ESCAPE 子句一起使用。
增强的 PRAGMA integrity_check 和 PRAGMA quick_check,用于检测晦涩难懂的 他们以前缺少的行损坏。同时更新两个编译指示 以便他们在遇到错误文本而不是SQLITE_CORRUPT时返回错误文本 记录中的损坏。
查询规划器现在更喜欢使用协程实现 FROM 子句子查询,而不是使用查询扁平化器优化。支持 子查询的协程使用可能不再被禁用。
传递有关 !=、IS、IS NOT、NOT NULL 和 IS NULL 约束的信息 到虚拟表的 xBestIndex 方法中。
增强了 CSV 虚拟表,使其接受 如果缺少最后一个换行符,请输入。
移除很少使用的“暂存”内存分配器。将其替换为提供 SQLite 的 SQLITE_CONFIG_SMALL_MALLOC 配置设置 提示应尽可能避免过大的内存分配。
将 swarm 虚拟表添加到现有的联合虚拟表扩展中。
添加了sqlite_dbpage虚拟表,用于提供对页面的直接访问 数据库文件。源代码内置于合并中,并且 使用 -DSQLITE_ENABLE_DBPAGE_VTAB 编译时选项激活。
添加一种新类型的 fts5vocab 虚拟表 - “instance” - 提供 在尽可能低的级别直接访问 FTS5 全文索引。
删除对 Windows VFS 中 rand_s() 的调用,因为它会导致问题 在一些较旧的笔记本电脑上的 Firefox 中。
src/shell.c 源代码 命令行 shell 不再受版本控制。该文件 现在作为构建过程的一部分生成。
其他微优化可将 CPU 使用率降低约 2.1%。
Bug修复:
修复 OSSFuzz 发现的 assert() 语句错误。 工单 cb91bf4290c211d
修复了 sqlite3_result_pointer() 中一个模糊的内存泄漏。 工单 7486aa54b968e9b
通过将架构重置推迟到 查询计划器运行完毕后。 门票 be436a7f4587ce5
仅使用 indexes-on-expressions 来优化 ORDER BY 或 GROUP BY,如果出现以下情况 COLLATE是正确的。 购票编号:e20dd54ab0e4383
修复了当表达式在 index-on-expressions 实际上是一个常量。 票务编号:aa98619ad08ddca
修复了 PRAGMA reverse_unordered_selects后可能发生的断言错误。 工单 cb91bf4290c211d
修复了使用表值函数的查询可能发生的段错误 在 IN 或 EXISTS 子查询中。 票号 b899b6042f97f5
修复了编译特定时潜在的整数溢出问题 可怕的公共表表达式。这是发现的另一个问题 由 OSSFuzz 提供。办理登机手续 6ee8cb6ae5.
修复了查询损坏的数据库文件时可能出现的越界读取问题, Google Project Zero 的 Natalie Silvanovich 检测到的问题。 办理入住手续 04925dee41a21f.
哈希值:
SQLITE_SOURCE_ID:“2017-10-24 18:55:49 1a584e499906b5c87ec7d43d4abce641fdf017c42125b083109bc77c4de48827”
适用于 sqlite3.c 的 SHA3-256:84c181c0283d0320f488357fc8aab51898370c157601459ebee49d779036fe03

2017-08-24 (3.20.1)

修复了新 sqlite3_result_pointer() 接口中潜在的内存泄漏。 工单编号:7486aa54b968e9b5。
哈希值:
SQLITE_SOURCE_ID:“2017-08-24 16:21:36 8d3a7ea6c5690d6b7c3767558f4f01b511c55463e3f9e64506801fe9b74dce34”
适用于 sqlite3.c 的 SHA3-256:93b1a6d69b48dc39697d1d3a1e4c30b55da0bdd2cad0c054462f91081832954a

2017-08-01 (3.20.0)

更新某些 sqlite3_errmsg() 返回的错误消息文本 错误代码。
添加新的指针传递接口。
对某些扩展进行向后不兼容的更改,以便采取 新指针传递接口提供的改进安全性的优点:
扩展 FTS5 →需要 sqlite3_bind_pointer() 来查找 fts5_api指针。
carray(PTR,N) →需要 sqlite3_bind_pointer() 来设置 PTR 参数。
remember(V,PTR) →需要 sqlite3_bind_pointer() 来设置 PTR 参数。
添加了SQLITE_STMT虚拟表扩展。
添加了 COMPLETION 扩展 - 旨在建议 交互式用户界面的 Tab-completions。这是一项正在进行的工作。 预计在未来的版本中会有进一步的增强功能。
添加了 UNION 虚拟表扩展。
内置的日期和时间功能已得到增强,因此可以 用于 CHECK 约束、表达式索引和 WHERE 子句 部分索引,前提是它们不使用 'now'、'localtime' 或 “UTC”关键字。更多信息。
添加了 sqlite3_prepare_v3() 和 sqlite3_prepare16_v3() 接口 替换为额外的“prepFlags”参数。
为 sqlite3_prepare_v3() 提供 SQLITE_PREPARE_PERSISTENT 标志,并 使用它来限制 FTS3、FTS5 和 R-Tree 扩展对后备内存的滥用。
添加了 PRAGMA secure_delete=FAST 命令。当secure_delete是 设置为 FAST,只要这样做,旧内容就会被零覆盖 不增加 I/O 的数量。已删除的内容可能仍会持续存在 可用页面列表,但将从所有 B 树页面中清除。
命令行 shell 的增强功能:
使用 COMPLETION 扩展添加对 Tab 句补全的支持,用于 readline 和 linenoise。
添加“.cd”命令。
增强“.schema”命令以显示所有附加的架构 数据库。
增强“.tables”,使其显示所有附加的架构名称 如果名称不是“main”。
“.import”命令忽略初始 UTF-8 BOM。
在“.dump”命令中添加了“--newlines”选项,以导致 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 接口 eval 方法中。
增强sqlite3_analyzer.exe实用程序,使其显示 btree 页面上元数据的字节数。
SQLITE_DBCONFIG_ENABLE_QPSG run-time 选项和 SQLITE_ENABLE_QPSG compile-time 选项启用查询计划器稳定性保证。另请参阅工单 892fc34f173e99d8
其他优化可使使用的 CPU 周期减少 2%。
Bug修复:
修复使用扁平化优化的查询的 sqlite3_column_name() 行为,以便结果与其他结果一致 不使用该优化的查询,以及 PostgreSQL、MySQL、 和 SQLServer。工单 de3403bf5ae。
修复查询计划器,以便它知道如果 WHERE 子句使用 IS 运算符,则不要在 LEFT JOIN 的右侧表上使用自动索引。 修复了 ce68383bf6aba.
确保查询规划器知道,平展的 LEFT JOIN 的任何列都可以为 NULL,甚至 如果该列标记为“NOT NULL”。修复了票证 892fc34f173e99d8。
修复了在数据库连接上运行时 PRAGMA integrity_check 中罕见的误报问题 与附加的数据库。购票 a4e06e75a9ab61a12
修复OSSFuzz发现的导致断言错误的bug(如果确定) 使用狡猾的 CREATE TABLE 声明。票务 bc115541132dad136
哈希值:
SQLITE_SOURCE_ID:“2017-08-01 13:24:15 9501e22dfeebdcefa783575e47c60b514d7c2e0cad73b2a496c0bc4b680900a8”
sqlite3.c 的 SHA3-256: 79b7f3b977360456350219cba0ba0e5eb55910565eab68ea83edda2f968ebe95

2017-06-17 (3.18.2)

修复了当 IN 运算符 在 WHERE 子句中使用。 票证编号:61fe9745。
哈希值:
SQLITE_SOURCE_ID:“2017-06-17 09:59:36 036ebf729e4b21035d7f4f8e35a6f705e6bf99887889e2dc14ebf2242e7930dd”
适用于 sqlite3.c 的 SHA3-256:b0bd014f2776b9f9508a3fc6432f70e2436bf54475369f88f0aeef75b0eec93e

2017-06-16 (3.18.1)

修复了与可能导致数据库的 auto_vacuum 关联的 bug 腐败。此错误是在版本 3.16.0 (2017-01-02) 中引入的。 票证 fda22108。
哈希值:
SQLITE_SOURCE_ID:“2017-06-16 13:41:15 77bb46233db03a3338bacf7e56f439be3dfd1926ea0c44d252eeafa7a7b31c06”
适用于 sqlite3.c 的 SHA3-256:334eaf776db9d09a4e69d6012c266bc837107edc2c981739ef82081cb11c5723

2017-06-08 (3.19.3)

修复了与可能导致数据库的 auto_vacuum 关联的 bug 腐败。此错误是在版本 3.16.0 (2017-01-02) 中引入的。 票证 fda22108。
哈希值:
SQLITE_SOURCE_ID:“2017-06-08 14:26:16 0ee482a1e0eae22e08edc8978c9733a96603d4509645f348ebf55b579e89636b”
适用于 sqlite3.c 的 SHA3-256: 368f1d31272b1739f804bcfa5485e5de62678015c4adbe575003ded85c164bb8

2017-05-25 (3.19.2)

修复了 LEFT JOIN 扁平化优化中的更多错误。工单编号:7fde638e94287d2c。
哈希值:
SQLITE_SOURCE_ID:“2017-05-25 16:50:27 edb4e819b0c058c7d74d27ebd14cc5ceb2bad6a6144a486a970182b7afe3f8b9”
适用于 sqlite3.c 的 SHA3-256:1be0c457869c1f7eba58c3b5097b9ec307a15be338308bee8e5be8570bcf5d1e

2017-05-24 (3.19.1)

修复了 LEFT JOIN 扁平化优化中的一个 bug。工单 cad1ab4cb7b0fc。
删除导致旧版本的 MSVC 出现问题的多余分号。
哈希值:
SQLITE_SOURCE_ID:“2017-05-24 13:08:33 f6d7b988f40217821a382bc298180e9e6794f3ed79a83c6ef5cae048989b3f86”
适用于 sqlite3.c 的 SHA3-256:996b2aff37b6e0c6663d0312cd921bbdf6826c989cbbb07dadde5e9672889bca

2017-05-22 (3.19.0)

SQLITE_READ授权方回调调用一次 列名为空字符串 对于查询中引用的每个表,其中不提取任何列。
在表达式上使用索引时,请尝试使用表达式值 在索引中可用,而不是加载原始列并重新计算 表达式。
增强拼合优化,使其能够拼合视图 在 LEFT JOIN 的右侧。
使用 replace() 而不是 char() 来转义换行符和回车符 嵌入在命令行 shell 的 .dump 输出中的字符串中的字符。
避免在 UPDATE 语句中进行不必要的外键处理,因为 触摸受外键约束的列。
在使用索引的 DISTINCT 查询上,尝试跳到下一个 distinct 查询 使用索引而不是单步执行行的条目,如果 索引可用。
避免在制作时sqlite3_blob句柄不必要地失效 对不相关表的更改。
传输 HAVING 子句中仅使用 将 GROUP BY 子句替换为 WHERE 子句,以便加快处理速度。
如果 VIEW 出现的次数超过 一旦在同一查询中。
增强 PRAGMA integrity_check,以便识别具有两个 或具有相同 rowid 的更多行。
增强 FTS5 查询语法,以便列筛选器可以应用于任意表达式。
增强 json_extract() 函数以缓存和重用 JSON 的解析 输入文本。
添加了 anycollseq.c 可加载扩展,该扩展允许将通用 SQLite 数据库连接到 读取包含未知和/或的架构 特定于应用程序的排序序列。
Bug修复:
修复了 REPLACE 中可能导致数据库损坏的问题,该问题包含 具有相同 rowid 的两行或多行。修复了票证 f68dc596c4e6018d。
修复了 PRAGMA integrity_check 中导致后续 VACUUM 性能欠佳的问题。
修复 PRAGMA foreign_key_check 命令,使其能够正常工作 WITHOUT ROWID 表上的外键。
修复了 b 树逻辑中可能导致错误重复答案的 bug 用于 IN 运算符查询。票证编号:61fe9745
不允许在 JSON 中的数字常量中使用前导零。修复了工单 b93be8729a895a528e2。
禁止在 JSON 的字符串中使用控制字符。修复了票证 6c9b5514077fed34551。
限制 JSON 对象和数组的递归深度,以避免 递归下降解析器中的堆栈使用量过多。修复了工单 981329adeef51011052。
哈希值:
SQLITE_SOURCE_ID:“2017-05-22 13:58:13 28a94eb282822cad1d1420f2dad6bf65e4b8b9062eda4a0b9ee8270b2c608e40”
适用于 sqlite3.c 的 SHA3-256:c30326aa1a9cc342061b755725eac9270109acf878bc59200dd4b1cea6bc2908

2017-03-30 (3.18.0)

添加了 PRAGMA optimize 命令
sqlite_source_id() SQL 函数返回的 SQLite 版本标识符 sqlite3_sourceid() C API 在 SQLITE_SOURCE_ID 宏中找到的是 现在是 64 位 SHA3-256 哈希,而不是 40 位 SHA1 哈希。
在 JSON1 扩展中添加了 json_patch() SQL 函数。
增强 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 查询 不受信任的用户。
各种性能改进。
Bug修复:
确保正确处理具有排序规则序列的索引表达式。 修复了票证 eb703ba7b50c1a5。
修复了“开始...”中的一个错误日期和时间函数的修饰符。 工单编号:6097cb92745327a1
修复复杂递归触发器中的潜在段错误,该错误由 作为性能优化的一部分引入的 OP_Once 操作码中的错误 版本 3.15.0。 票务:06796225f59c057c
在 RBU 扩展中,添加额外的同步操作以避免 电源故障后损坏。
嵌套 SQL 语句的 sqlite3_trace_v2() 输出应始终以 带有“--”注释标记。
哈希值:
SQLITE_SOURCE_ID:“2017-03-28 18:48:43 424a0d380332858ee55bdebc4af3789f74e70a2b3ba1cf29d84b9b4bcf3e2e37”
适用于 sqlite3.c 的 SHA3-256:cbf322df1f76be57fb3be84f3da1fc71d1d3dfdb7e7c2757fb0ff630b3bc2e5d

2017-02-13 (3.17.0)

R-Tree 扩展的性能提高了约 25%。
使用编译器内置(例如:__builtin_bswap32() 或 _byteswap_ulong()) 用于 byteswapping(如果可用)。
使用sqlite3_blob键/值访问对象而不是 SQL 用于从 R-Tree 节点中提取内容
其他其他增强功能,例如循环展开。
添加 SQLITE_DEFAULT_LOOKASIDE 编译时选项。
将默认后备大小从 512,125 增加到 1200,100 因为这提供了更好的性能,同时只增加了 56KB 每个连接的额外内存。内存敏感 应用程序可以恢复旧的 默认为 compile-time、start-time 或 run-time。
使用编译器内置 __builtin_sub_overflow()、__builtin_add_overflow()、 和 __builtin_mul_overflow() (如果可用)。(所有编译器 内置函数可以通过SQLITE_DISABLE_INTRINSIC编译时省略 选项。
添加了 SQLITE_ENABLE_NULL_TRIM 编译时选项,该选项 对于某些人来说,可能会导致数据库文件明显变小 应用程序,冒着与旧应用程序不兼容的风险 SQLite 的版本。
将SQLITE_DEFAULT_PCACHE_INITSZ从 100 更改为 20,用于 改进了性能。
添加了 SQLITE_UINT64_TYPE 编译时选项作为 模拟到SQLITE_INT64_TYPE。
在单次传递中执行一些 UPDATE 操作,而不是 分两遍。
增强会话扩展以支持 WITHOUT ROWID 表。
修复了性能问题和潜在的堆栈溢出问题 从多行 VALUES 子句创建视图时 数十万行。
添加了 sha1.c 扩展名。
在命令行 shell 中,增强“.mode”命令,使其 恢复模式“line”的默认列和行分隔符, “list”、“column” 和 “tcl”。
增强SQLITE_DIRECT_OVERFLOW_READ选项,使其正常工作 在 WAL 模式下,只要正在读取的页面不在 WAL 文件中。
增强 Lemon 解析器生成器,使其可以将解析器对象存储为堆栈变量,而不是 从堆中分配空间,并在 合并。
其他性能改进。CPU 周期减少约 6.5%。
Bug修复:
如果 LEFT JOIN 的 ON 子句引用表,则引发错误 在 ON 子句的右侧。这与以下行为相同 PostgreSQL。以前,SQLite 静默地转换了 LEFT JOIN 进入 INNER JOIN。修复工单 25e335f802dd。
对自动索引列使用正确的关联性。工单 7ffd1ca1d2ad4ec。
确保 sqlite3_blob_reopen() 接口可以正确 处理短行。修复了工单 e6e962d6b0f06f46e。
哈希值:
SQLITE_SOURCE_ID:“2017-02-13 16:02:40 ada05cfa86ad7f5645450ac7a2a21c9aa6e57d2c”
sqlite3.c 的SHA1:cc7d708bb073c44102a59ed63ce6142da1f174d1

2017-01-06 (3.16.2)

修复缺少二级索引的 WITHOUT ROWID 表的 REPLACE 语句,以便 它可以与触发器和外键一起正常工作。这是一个新错误 由版本 3.16.0 中添加的性能优化引起。 工单编号:30027b613b4
修复 sqlite3_value_text() 接口,使其正确 将 zeroblob() 生成的内容转换为包含 all 的字符串 0x00字符。这是一个长期存在的问题,在 OSS-Fuzz 发布的 3.16.1
修复字节码生成器以处理 FROM 子句中的子查询 这本身就是一个 UNION ALL,其中 UNION ALL 的一侧是一个视图 包含 ORDER BY。这是一个长期存在的问题 在 3.16.1 发布后发现。请参阅工单190c2507。
调整 sqlite3_column_count() API,使其更频繁地返回相同的内容 与先前版本中一样,PRAGMA 语句的值为 最大程度地减少对可能正在使用它的应用程序的中断 以意想不到的方式接口。
哈希值:
SQLITE_SOURCE_ID:“2017-01-06 16:32:41 a65a62893ca8319e89e48b8a38cf8a59c69a8209”
sqlite3.c 的 SHA1:2bebdc3f24911c0d12b6d6c0123c3f84d6946b08

2017-01-03 (3.16.1)

修复了有关在触发器中使用行值的 bug(请参阅票证 8c9458e7) 这是在 3.15.0 版本中,但直到 3.16.0 之后才报告 发布。
哈希值:
SQLITE_SOURCE_ID:“2017-01-03 18:27:03 979f04392853b8053817a3eea2fc679947b437fd”
sqlite3.c 的SHA1:354f6223490b30fd5320b4066b1535e4ce33988d

2017-01-02 (3.16.0)

CPU 周期减少 9%。(请参阅 CPU 性能测量报告 有关如何计算此性能提升的详细信息。
添加了对 PRAGMA 函数的实验性支持。
在 sqlite3_db_config() 中添加了 SQLITE_DBCONFIG_NO_CKPT_ON_CLOSE 选项。
增强日期和时间功能,使“unixepoch”修饰符正常工作 支持的日期的完整范围。
将后备内存分配器的默认配置从 500 个插槽,每个插槽 128 个字节,125 个插槽,每个插槽 512 字节。
增强了“WHERE x NOT NULL”部分索引,以便在以下情况下可用 “x”列出现在 LIKE 或 GLOB 运算符中。
增强了 sqlite3_interrupt(),以便它中断检查点操作 正在进行中。
增强了 LIKE 和 GLOB 匹配算法,使其更快 适用于模式包含多个通配符的情况。
添加了SQLITE_FCNTL_WIN32_GET_HANDLE文件控制操作码。
在命令行 shell 中添加了“.mode quote”。
将“.lint fkey-indexes”添加到命令行 shell。
将 .imposter dot-command 添加到命令行 shell。
添加了 remember(V,PTR) SQL 函数作为可加载的扩展。
将 SQLITE_OMIT_BUILTIN_TEST compile-time 选项重命名为 SQLITE_UNTESTABLE,以更好地反映使用它的含义。
Bug修复:
修复了查询计划器中导致结果不正确的长期 bug 在左手表是子查询和连接约束的 LEFT JOIN 上 是来自左侧子查询的裸列名称。工单编号:2df0107b。
在查询计划器中正确处理整数文本 -0x8000000000000000。
哈希值:
SQLITE_SOURCE_ID:“2017-01-02 11:57:58 04ac0b75b1716541b2b97704f4809cb7ef19cccf”
sqlite3.c 的 SHA1:e2920fb885569d14197c9b7958e6f1db573ee669

2016-11-28 (3.15.2)

对版本 3.15.0 中引入的行值逻辑进行了多个错误修复。
修复了恶意构造后 ATTACH/DETACH 中的 NULL 指针取消引用的问题 语法错误。工单编号:2f1b168ab4d4844。
修复内存不足情况后可能发生的崩溃 在内置的 instr() 函数中。
在 JSON 扩展中,修复 JSON 验证程序,使其正确拒绝 无效的反斜杠在字符串中转义。
哈希值:
SQLITE_SOURCE_ID:“2016-11-28 19:13:37 bbd85d235f7037c6a033a9690534391ffeacecc8”
sqlite3.c 的SHA1:06d77b42a3e70609f8d4bbb97caf53652f1082cb

2016-11-04 (3.15.1)

添加了SQLITE_FCNTL_WIN32_GET_HANDLE文件控制操作码。
修复 VACUUM 命令,使其将多余的内容溢出到磁盘上 而不是将所有内容保存在内存中,并可能导致内存不足 较大的数据库文件出错。这修复了 版本 3.15.0。
修正案例(自 3.8.0 - 2013-08-26 起) 其中 LEFT JOIN 的 ON 子句中的 OR 连接项 可能会导致不正确的结果。工单编号:34a579141b2c5ac。
修复了在 LEFT JOIN 的 ON 子句中使用行值的情况 可能会导致不正确的结果。工单:fef4bb4bd9185ec8f。
哈希值:
SQLITE_SOURCE_ID:“2016-11-04 12:08:49 1136863c76576110e710dd5d69ab6bf347c65e36”
sqlite3.c 的SHA1:e7c26a7be3e431dd06898f8d262c4ef240c07366

2016-10-14 (3.15.0)

添加了对行值的支持。
允许在部分索引的 WHERE 子句中使用确定性 SQL 函数。
在 unix VFS 上添加了 “modeof=filename” URI 参数
添加了对SQLITE_DBCONFIG_MAINDBNAME的支持。
添加了对 ATTACH-ed 数据库进行 VACUUM 的功能。
命令行 shell 的增强功能:
添加 “.testcase” 和 “.check” dot-commands。
在 “.open” dot-command 中添加了 --new 选项,导致 数据库中要清除的任何先前内容 开放。
增强 fts5vocab 虚拟表以有效地处理“ORDER BY term”。
其他微优化可将 CPU 使用率降低 7% 以上 在常见工作负载上。此版本中的大多数优化都是在 前端 (sqlite3_prepare_v2())。
Bug修复:
乘法运算符现在可以正确检测 64 位整数溢出 并在所有极端情况下提升为浮点。修复了工单 1ec41379c9c1e400。
正确处理具有冗余唯一索引的列,当这些 列用于 IN 运算符的 LHS。修复了票证 0eab1ac759。
跳过表达式索引中范围查询的 NULL 条目。 修复了工单 4baa46491212947。
确保 AUTOINCREMENT 计数器在 sqlite_sequence 表在“INSERT ...选择” 语句。修复了工单 7b3328086a5c116c。
确保 ORDER BY LIMIT 优化 (从办理登机手续 559733B09E) 与 INTEGER PRIMARY KEY 上的 IN 运算符配合使用。修复工单 96c1454c
哈希值:
SQLITE_SOURCE_ID:“2016-10-14 10:20:30 707875582fcba352b4906a595ad89198d84711d8”
sqlite3.c 的 SHA1:fba106f8f6493c66eeed08a2dfff0907de54ae76

2016-09-12 (3.14.2)

改进了对在 winsqlite3.dll 中使用 STDCALL 调用约定的支持。
修复 sqlite3_trace_v2() 接口,以便在 根据文档,callback 或 mask 参数为零。
修复评论错误并改进在 EXPLAIN 列表上生成的评论 使用 -DSQLITE_ENABLE_EXPLAIN_COMMENTS 编译时选项时。
修复命令行 shell 中的“.read”命令,使其理解 它的输入不是交互式的。
正确计算 IN 运算符的 RHS 上的 SELECT 的亲和力。 修复了票证 199df4168c。
ORDER BY LIMIT 优化无效,除非最内层的 IN 运算符 循环实际上由查询计划使用。修复 票证 0C4DF46116E90F92。
修复了导致某些 DELETE 操作的内部代码生成器问题 到无操作。工单 ef360601
哈希值:
SQLITE_SOURCE_ID:“2016-09-12 18:50:49 29dbef4b8585f753861a36d6dd102ca634197bd6”
sqlite3.c 的 SHA1:bcc4a1989db45e7f223191f2d0f66c1c28946383

2016-08-11 (3.14.1)

页面缓存“截断”操作的性能增强 在具有 大页面缓存。
修复了 sqldiff 的 --rbu 选项。
哈希值:
SQLITE_SOURCE_ID:“2016-08-11 18:53:32 a12d8059770df4bca59e321c266410344242bf7b”
sqlite3.c 的SHA1:d545b24892278272ce4e40e0567d69c8babf12ea

2016-08-08 (3.14)

庆祝SQLite的“π发布” 配上自制的馅饼。
添加了对 WITHOUT ROWID 虚拟表的支持。
改进了查询规划器,以便 OR 优化可以 在虚拟表上使用,即使一个或多个分离 使用 LIKE、GLOB、REGEXP和 MATCH 运算符。
添加了用于读取 RFC 4180 格式逗号分隔的 CSV 虚拟表 值文件。
添加了 carray() 表值函数扩展。
使用扩展中的新SQLITE_OK_LOAD_PERMANENTLY返回代码启用持久可加载扩展 入口点。
在 sqlite3_db_status() 中添加了 SQLITE_DBSTATUS_CACHE_USED_SHARED 选项。
添加 vfsstat.c 可加载扩展 - 测量 I/O 的 VFS 填充码 以及一个同名的虚拟表,提供对测量的访问。
改进了使用 ORDER BY 和 LIMIT 运行查询的算法,其中 只有最里面的循环会自然地以正确的顺序生成行。
增强了 Lemon 解析器生成器,使其生成一个 更快的解析器。
PRAGMA compile_options 命令现在尝试显示版本号 生成库的编译器。
增强 PRAGMA table_info,以便它提供有关同名虚拟表的信息。
添加了“win32-none”VFS,类似于“unix-none”VFS,其工作方式类似于 默认的“win32”VFS,但它忽略所有文件锁。
查询规划器使用对部分索引的完全扫描,而不是 在有意义的情况下,对主表进行全面扫描。
允许表值函数出现在 IN 运算符的右侧。
创建了dbhash.exe命令行实用程序。
添加了两个新的 C 语言接口:sqlite3_expanded_sql() 和 sqlite3_trace_v2()。这些新接口包含了 sqlite3_trace() 和 sqlite3_profile() 的函数,这些函数现已弃用。
在 json1 扩展中添加了 json_quote() SQL 函数。
在解析架构时禁用授权方回调。
添加了 SQLITE_ENABLE_UNKNOWN_SQL_FUNCTION 编译时选项并打开了它 默认情况下,在构建命令行 shell 时启用选项。
Bug修复:
修复 ALTER TABLE 命令,以便在向旧文件格式数据库添加列时不会损坏降序索引。票务 f68bf68513a1c15f
修复了在传递 WHERE 时可能发生的 NULL 指针取消引用/崩溃的问题 子句引用不存在的排序规则序列。工单编号:e8d439c77685eca6。
改进了包含 WHERE 子句的索引扫描的成本估算 可以使用索引中的列进行部分或全部评估,而不使用 必须进行表查找。这修复了发生的性能回归 对于引入的 ORDER BY LIMIT 优化后的一些晦涩难懂的查询 在版本 3.12.0 中。
哈希值:
SQLITE_SOURCE_ID:“2016-08-08 13:40:27 d5e98057028abcf7217d0d2b2e29bbbcdf09d6de”
sqlite3.c 的 SHA1:234a3275d03a287434ace3ccdf1afb208e6b0e92

2016-05-18 (3.13.0)

尽可能长时间地推迟与 TEMP 文件关联的 I/O,希望 最终可以完全避免 I/O。
已将会话扩展合并到中继中。
添加了“.auth ON|OFF“命令添加到命令行 shell。
在 的 “.schema” 和 “.fullschema” 命令中添加了 “--indent” 选项 命令行 shell,用于打开 pretty-printing。
在命令行 shell 中添加了“.eqp full”选项,该选项对每个要计算的语句执行 EXPLAIN 和 EXPLAIN QUERY PLAN。
改进了 Windows 上命令行 shell 中的 unicode 文件名处理。
改进了对由以下原因引起的愚蠢的查询计划器决策的抵抗力 应用程序对sqlite_stat1表的修改不完整或不正确。
添加了 sqlite3_db_config(db,SQLITE_DBCONFIG_ENABLE_LOAD_EXTENSION) 接口 它允许启用 sqlite3_load_extension() C-API,同时保持 load_extension() SQL 函数处于禁用状态以确保安全。
更改 Unix 上的临时目录搜索算法,以允许具有 写入和执行权限,但没有读取权限,作为临时 目录。将此相同的标准应用于 “.” 回退目录。
Bug修复:
修复了多行单通道 DELETE 优化的问题,该优化是 导致它使用自引用子查询计算不正确的答案 WHERE 子句。修复工单 dc6ebeda9396087
当 table 是具有 INTEGER PRIMARY KEY 的 rowid 表且 WHERE 子句包含 OR 和 表具有一个或多个能够触发 OR 优化的索引, 但除 INTEGER PRIMARY KEY 之外,没有任何索引引用任何表列。 工单编号:16c9801ceba49。
检查 WHERE 子句下推优化时,请验证所有术语 的复合内部 SELECT 是非聚合的,而不仅仅是最后一项。修复了票证 f7f8c97e97597。
修复了 Windows 中两个或多个进程时可能发生的锁定争用情况 尝试同时恢复同一热日志。
哈希值:
SQLITE_SOURCE_ID:“2016-05-18 10:57:30 fc49f556e48970561d7ab6a2f24fdd7d9eb81ff2”
sqlite3.c 的SHA1:9b9171b1e6ce7a980e6b714e9c0d9112657ad552
向后移植到补丁版本 3.12.2 (2016-04-18) 中的错误修复:
修复了版本 3.12.0 和 3.12.1 中的向后兼容性问题: 声明为“INTEGER”PRIMARY KEY (括有引号) datatype 关键字)未被识别为 INTEGER PRIMARY KEY,这会导致数据库文件不兼容。 工单编号: 7d7525cb01b68
修复了一个 bug(从版本 3.9.0 开始存在),如果 PRAGMA reverse_unordered_selects 处于打开状态,则可能导致 DELETE 操作错过行。 票证 a306e56ff68b8fa5
修复代码生成器中的一个 bug,该 bug 在以下情况下可能导致结果不正确 联接两个或多个虚拟表,并将虚拟表用于 联接的外循环具有 IN 运算符约束。
在确定时正确解释负“PRAGMA cache_size”值 用于对大量数据进行排序的缓存大小。
向后移植到补丁版本 3.12.1 (2016-04-08) 的 Bug 修复:
修复了 3.12.0 版引入的边界条件错误 这可能会导致在大量使用 SAVEPOINT 期间崩溃。 工单编号:7f7f8026eda38。
修复视图,以便它们从 如果可能,它们所针对的表。
修复查询计划器,以便 IS 和 IS NULL 运算符能够 在 LEFT OUTER JOIN 上驱动索引。

2016-04-18 (3.12.2)

修复了版本 3.12.0 和 3.12.1 中的向后兼容性问题: 声明为“INTEGER”PRIMARY KEY (括有引号) datatype 关键字)未被识别为 INTEGER PRIMARY KEY,这会导致数据库文件不兼容。 工单编号: 7d7525cb01b68
修复了一个 bug(从版本 3.9.0 开始存在),如果 PRAGMA reverse_unordered_selects 处于打开状态,则可能导致 DELETE 操作错过行。 票证 a306e56ff68b8fa5
修复代码生成器中的一个 bug,该 bug 在以下情况下可能导致结果不正确 联接两个或多个虚拟表,并将虚拟表用于 联接的外循环具有 IN 运算符约束。
在确定时正确解释负“PRAGMA cache_size”值 用于对大量数据进行排序的缓存大小。
哈希值:
SQLITE_SOURCE_ID:“2016-04-18 17:30:31 92dc59fd5ad66f646666042eb04195e3a61a9e8e”
sqlite3.c 的 SHA1:de5a5898ebd3a3477d4652db143746d008b24c83

2016-04-08 (3.12.1)

修复了 3.12.0 版引入的边界条件错误 这可能会导致在大量使用 SAVEPOINT 期间崩溃。 工单编号:7f7f8026eda38。
修复视图,以便它们从 如果可能,它们所针对的表。
修复查询计划器,以便 IS 和 IS NULL 运算符能够 在 LEFT OUTER JOIN 上驱动索引。
哈希值:
SQLITE_SOURCE_ID:“2016-04-08 15:09:49 fe7d3b75fe1bde41511b323925af8ae1b910bc4d”
sqlite3.c 的SHA1:ebb18593350779850e3e1a930eb84a70fca8c1d1

2016-04-01 (3.9.3)

向后移植一个简单的查询计划器优化,允许 IS 运算符 在 LEFT OUTER JOIN 上驱动索引。与版本 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设置为 OFF、MEMORY 或 WAL。
仅当报表日志文件的大小超过阈值时才创建其。 否则,日志将保存在内存中,不会发生 I/O。阈值 可以在编译时使用 SQLITE_STMTJRNL_SPILL 或 使用 sqlite3_config(SQLITE_CONFIG_STMTJRNL_SPILL) 的开始时间。
查询规划器能够优化虚拟表上的 IN 运算符,即使 xBestIndex 方法未将 sqlite3_index_constraint_usage.omit 标志 IN 运算符左侧的虚拟表列。
查询规划器现在可以更好地优化 3 路或更高联接中的虚拟表访问,其中对虚拟的约束 表被拆分为联接的两个或多个其他表。
更高效地处理应用程序定义的 SQL 函数,尤其是 在应用程序定义成百上千个的情况下 自定义函数。
查询计划器在估算成本时会考虑 LIMIT 子句 的顺序。
configure 脚本(在 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 选项。
增强了命令行 shell 中的“.stats”命令以显示更多信息 有关从 /proc 获取的 I/O 性能的信息(如果可用)。
Bug修复:
确保来自多个触发器的 sqlite3_set_auxdata() 值 在单个语句中,不要相互干扰。 工单:dc9b1c91。
修复了“x IN (SELECT...)”形式的表达式的代码生成器,其中 RHS 上的 SELECT 语句是相关的子查询。 工单编号:5e3c886796e5512e。
修复与 sqlite3_db_readonly() 接口关联的无害 TSAN 警告。
哈希值:
SQLITE_SOURCE_ID:“2016-03-29 10:14:15 e9bb4cf40f4971974a74468ef922bdee481c988b”
sqlite3.c 的 SHA1:cba2be96d27cb51978cd4a200397a4ad178986eb

2016-03-03 (3.11.1)

改进了 VisualStudio 使用的 Makefile 和生成脚本。
修复了 FTS5 问题,其中“optimize”命令可能导致索引损坏。
修复了使用 FTS5 查询损坏的 FTS5 时可能发生的缓冲区超读问题。 数据库文件。
将 spellfix1 扩展的最大“范围”值从 6 增加到 30。
SQLITE_SOURCE_ID:“2016-03-03 16:17:53 f047920ce16971e573bc6ec9a48b118c9de2b3a7”
sqlite3.c 的 SHA1:3da832fd2af36eaedb05d61a8f4c2bb9f3d54265

2016-02-15 (3.11.0)

一般改进:
增强的 WAL 模式,以便它有效地处理以下事务 比cache_size大。
添加了 FTS5 详细信息选项。
在PRAGMA同步中添加了“EXTRA”选项,该选项执行同步 在 DELETE 模式下取消链接回滚日志时包含目录, 以获得更好的耐用性。默认情况下,SQLITE_EXTRA_DURABLE编译时选项启用 PRAGMA synchronous=EXTRA。
增强了查询规划器,使其能够使用 作为 OR 优化的一部分的覆盖指数。
避免重新计算 NOT NULL 和 CHECK 约束未更改 UPDATE 语句中的列。
许多微优化,导致库是 比以前的版本更快。
命令行 shell 的增强功能:
默认情况下,shell 现在处于“自动解释”模式。EXPLAIN 命令的输出会自动格式化。
添加了“.vfslist”点命令。
现在已打开SQLITE_ENABLE_EXPLAIN_COMMENTS编译时选项 默认情况下,在标准版本中处于打开状态。
TCL接口的增强功能:
如果使用“-uri 1”选项打开数据库连接,则 “backup” 和 “restore” 命令将支持 URI 文件名。
在“sqlite3”命令中添加了“-sourceid”选项。
Makefile 改进:
改进了配置脚本中的 pthreads 检测。
添加从合并压缩包执行 MSVC Windows 生成的功能。
Bug 修复
修复了 VDBE 临时寄存器之间不正确共享的问题 可能导致不正确查询的协程会导致不明确的情况。工单 d06a25c84454a。
修复 sqlite3_result_subtype() 接口中的一个问题,该问题可能 在晦涩难懂的情况下导致 JSON1 扩展出现问题。 修复了票证 f45ac567eaa9f9。
JSON 字符串中的转义控制字符。修复了票证 ad2559db380abf8。
在内置中重新启用 xCurrentTime 和 xGetLastError 方法 unix VFS 只要未定义SQLITE_OMIT_DEPRECATED即可。
向后兼容性:
由于持续的安全问题,两个参数的版本 很少使用且鲜为人知的 fts3_tokenizer() 函数是 禁用,除非 SQLite 是用 SQLITE_ENABLE_FTS3_TOKENIZER 编译的。
哈希值:
SQLITE_SOURCE_ID:“2016-02-15 17:29:24 3d862f207e3adc00f78066799ac5a8c282430a5f”
sqlite3.c 的 SHA1:df01436c5fcfe72d1a95bc172158219796e1a90b

2016-01-20 (3.10.2)

关键错误修复:
版本 3.10.0 在 LIKE 运算符中引入了一个大小写折叠错误,该错误已修复 通过此补丁版本。票证 80369eddd5c94。
其他其他错误修复:
修复了使用 -DSQLITE_HAS_CODEC 编译 SQLite 时可能发生的释放后使用问题。
修复生成,使其与 -DSQLITE_OMIT_WAL 配合使用。
修复合并的配置脚本,以便 --readline 选项再次起作用 在 Raspberry PI 上。
哈希值:
SQLITE_SOURCE_ID:“2016-01-20 15:27:19 17efb4209f97fb4971656086b138599a91a75ff9”
sqlite3.c 的SHA1:f7088b19d97cd7a1c805ee95c696abd54f01de4f
2016-01-14 (3.10.1)
新功能:
添加SQLITE_FCNTL_JOURNAL_POINTER文件控件。
Bug修复:
修复了查询计划器中可能生成错误结果的 16 个月前的 bug 当标量子查询尝试使用块排序优化时。票务 cb3aa0641d9a4。
哈希值:
SQLITE_SOURCE_ID:“2016-01-13 21:41:56 254419c36766225ca542ae873ed38255e3fb8588”
sqlite3.c 的 SHA1:1398ba8e4043550a533cdd0834bfdad1c9eab0f4

2016-01-06 (3.10.0)

一般改进:
添加了对虚拟表上的 LIKE、GLOB 和 REGEXP 运算符的支持。
添加了 colUsed 字段以供sqlite3_index_info使用 sqlite3_module.xBestIndex 方法。
增强 PRAGMA cache_spill 语句以接受 32 位整数 参数,该参数是禁止缓存溢出的阈值。
在 unix 上,如果打开了指向数据库文件的符号链接,则相应的 日志文件基于实际文件名,而不是符号链接名称。
在 sqldiff 中添加了“--transaction”选项。
添加了 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 编译器优化器中的符号扩展错误。
命令行 shell 的增强功能:
添加了“.changes ON|OFF“和”.vfsinfo“点命令。
在 MBCS 和 UTF8 之间进行转换 在 Windows 上运行cmd.exe。
makefile 的增强功能:
添加了 --enable-editline 和 --enable-static-shell 选项 到各种 autoconf 生成的配置脚本。
省略生成文件中所有“awk”的使用,以使 MSVC 用户更容易构建。
重要修复:
修复不一致的整数到浮点比较操作 如果在表上创建索引,则可能导致索引损坏 同时包含大整数和浮点值的列 类似规模。票务编号:38a97a87a6。
修复查询计划器中可能发生的无限循环 格式错误的公用表表达式。
sqldiff 工具中的各种 bug 修复。
哈希值:
SQLITE_SOURCE_ID:“2016-01-06 11:01:07 fd0a50f0797d154fefff724624f00548b5320566”
sqlite3.c 的 SHA1:b92ca988ebb6df02ac0c8f866dbf3256740408ac

2015-11-02 (3.9.2)

修复架构解析器,使其解释某些 (晦涩难懂,格式不正确) CREATE TABLE 语句与旧版语句相同。修复工单 ac661962a2aeab3c331
修复了可能导致不正确的查询计划器问题 由于在子查询中使用自动索引而回答 相关标量子查询的 FROM 子句。修复了票证 8a2adec1。
SQLITE_SOURCE_ID:“2015-11-02 18:31:45 bda77dda9697c463c3d0704014d51627fceee328”
sqlite3.c 的 SHA1:1c4013876f50bbaa3e6f0f98e0147c76287684c1

2015-10-16 (3.9.1)

修复 json1 扩展,使其无法将 ASCII form-feed 识别为 空格字符,以符合 RFC-7159。修复工单 57eec374ae1d0a1d
添加一些 #ifdef 并生成脚本更改以解决编译问题 在 3.9.0 版本之后出现。
SQLITE_SOURCE_ID:“”2015-10-16 17:31:12 767c1727fec4ce11b83f25b3f1bfcfe68a2c8b02”
sqlite3.c 的 SHA1:5e6d1873a32d82c2cf8581f143649940cac8ae49

2015-10-14 (3.9.0)

政策变更:
修订了 SQLite 的版本编号约定,以使用 语义版本控制的新兴标准。
新功能和增强功能:
在源代码树和合并中添加了 json1 扩展模块。 使用 SQLITE_ENABLE_JSON1 编译时选项启用支持。
将全文搜索版本 5 (FTS5) 添加到合并中,已启用 使用SQLITE_ENABLE_FTS5。FTS5 将被视为“实验性”(受试者 到不兼容的更改)至少再增加一个发布周期。
CREATE VIEW 语句现在接受 视图名称后面的列名称。
添加了对表达式索引的支持。
在 SELECT 语句的 FROM 子句中添加了对表值函数的支持。
添加了对同名虚拟表的支持。
在以下情况下,VIEW 现在可以引用未定义的表和函数 最初创建。在以下情况下报告缺少的表和函数 VIEW 用于查询。
添加了 sqlite3_value_subtype() 和 sqlite3_result_subtype() 接口(由 json1 扩展使用)。
查询规划器现在能够使用包含以下内容的部分索引 WHERE 子句中的 AND 连接术语。
sqlite3_analyzer.exe实用程序已更新,以报告深度 每个 btree 并显示索引的平均扇出和 没有 ROWID 表。
增强了 dbstat 虚拟表,以便它可以用作表值函数,其中参数是要存在的架构 分析。
其他更改:
sqlite3_memory_alarm() 接口,该接口已弃用,并且 8 年无证,改为无操作。
重要修复:
修复了 SQLite 加密扩展中的一个严重错误,该错误使 如果 VACUUM 命令执行 VACUUM 命令,则可能导致数据库变得不可读且不可恢复 更改了加密随机数的大小。
在 sqlite3_initialize() 的实现中添加了内存屏障,以帮助确保它是线程安全的。
修复 OR 优化,使其始终忽略 不要使用索引。
不要对源自 在 LEFT JOIN 的 ON 或 USING 子句中。修复了票证 c2a19d81652f40568c。
SQLITE_SOURCE_ID:“2015-10-14 12:29:53 a721fc0d89495518fe5612e2e3bbc60befd2e90d”
sqlite3.c 的 SHA1:c03e47e152ddb9c342b84ffb39448bf4a2bd4288

2015-07-29 (3.8.11.1)

恢复PRAGMA cache_size的未记录的副作用:力量 如果以前未访问过数据库,则要分析的数据库架构。
修复了 3.8.11 版本发布几个小时后报告的 WITHOUT ROWID 表的 sqlite3_changes() 中长期存在的问题。
SQLITE_SOURCE_ID:“2015-07-29 20:00:57 cf538e2783e468bbc25e7cb2a9ee64d3e0e80b2f”
sqlite3.c 的 SHA1:3be71d99121fe5b17f057011025bcf84e7cc6c84

2015-07-27 (3.8.11)

添加了实验性 RBU 扩展。请注意,此扩展是实验性的 并可能以不相容的方式发生变化。
添加了实验性的 FTS5 扩展。请注意,此扩展是实验性的 并可能以不相容的方式发生变化。
添加了 sqlite3_value_dup() 和 sqlite3_value_free() 接口。
增强 spellfix1 扩展以支持 ON CONFLICT 子句。
IS 运算符现在能够驱动索引。
增强查询计划器以允许对 FROM 子句自动编制索引 由协程实现的子查询。
不允许在公共表表达式中使用“rowid”。
添加了 PRAGMA cell_size_check 命令,以便更好、更早 检测数据库文件损坏。
在 FTS3 的 matchinfo() 函数中添加了 matchinfo 'b' 标志。
改进了数据库文件的模糊测试,并修复了发现的问题。
添加fuzzcheck测试程序并自动运行该程序 在“make test”上同时使用 SQL 和数据库测试用例。
添加了SQLITE_MUTEX_STATIC_VFS1静态互斥锁,并在 Windows VFS。
sqlite3_profile() 回调(由 sqlite3_reset() 或 sqlite3_finalize()) 调用,用于未完成。
增强页面缓存,以便它可以将内存块预分配给 用于初始设置的页面缓存行。设置默认预分配 到 100 页。在常见工作负载上实现约 5% 的性能提升。
其他微优化可使相同的工作量增加 22.3% 相对于上一版本的 CPU 周期数。 SQLite 现在的运行速度是 3.8.0 版的两倍,是 3.8.0 版的三倍 快到版本 3.3.9。 (使用 speedtest1.c 工作负载上的 cachegrind 测量 带有 gcc 4.8.2 和 -OS 的 Ubuntu 14.04 x64。您的表现可能会有所不同。
添加了 sqlite3_result_zeroblob64() 和 sqlite3_bind_zeroblob64() 接口。
重要 bug 修复:
修复 CREATE TABLE AS,以便 TEXT 类型的列永远不会结束 持有 INT 值。票务 f2ad7de056ab1dc9200
修复 CREATE TABLE AS sqlite_master,以便在右侧的 SELECT 语句 中止并出现错误。票务 873cae2b6e25b
修复跳过扫描优化,使其在以下情况下正常工作 OR 优化用于 WITHOUT ROWID 表。工单编号: 8fd39115d8f46
修复 sqlite3_memory_used() 和 sqlite3_memory_highwater() 接口 因此,它们实际上确实提供了 64 位答案。
哈希值:
SQLITE_SOURCE_ID:“2015-07-27 13:49:41 b8e92227a469de677a66da62e4361f099c0b79d0”
sqlite3.c 的 SHA1:719f6891abcd9c459b5460b191d731cd12a3643e

2015-05-20 (3.8.10.2)

修复了版本 3.8.7 引入的索引损坏问题。索引 带有 TEXT 键的 INSERT 可以损坏到相应的 表(如果表)有两个嵌套触发器,用于将键值转换为 INTEGER 然后再次返回 TEXT。 工单编号:34cd55d68e0
SQLITE_SOURCE_ID:“2015-05-20 18:17:19 2ef4f3a5b1d1d0c4338f8243d40a2452cc1f7fe4”
sqlite3.c 的 SHA1: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”
sqlite3.c 的SHA1:85e4e1c08c7df28ef61bb9759a0d466e0eefbaa2

2015-05-07 (3.8.10)

添加了用于计算两者之间差异的sqldiff.exe实用程序 SQLite 数据库文件。
在 FTS3 的 matchinfo() 函数中添加了 matchinfo y 标志。
改进了 ORDER BY、VACUUM、CREATE INDEX、PRAGMA integrity_check 和 PRAGMA quick_check 的性能。
修复了在 SQL 模糊测试时发现的许多晦涩难懂的问题。
在接口文档中确定重要对象的所有方法。 (示例)
使American Fuzzy Lop模糊器成为SQLite测试策略的标准部分。
将“.binary”和“.limits”命令添加到命令行 shell。
在以下情况下,使 dbstat 虚拟表成为标准构建的一部分 使用 SQLITE_ENABLE_DBSTAT_VTAB 选项编译。
SQLITE_SOURCE_ID:“2015-05-07 11:53:08 cf975957b9ae671f34bb65f049acf351e650d437”
sqlite3.c 的 SHA1:0b34f0de356a3f21b9dfc761f3b7821b6353c570

2015-04-08 (3.8.9)

将 VxWorks-7 添加为官方支持和测试的平台。
添加了 sqlite3_status64() 接口。
修复内存大小跟踪,以便即使SQLite使用更多内存大小,它也能正常工作 比 2GiB 的内存。
添加了 PRAGMA index_xinfo 命令。
修复了 sqlite3_blob_read() 和 sqlite3_blob_write() 接口中潜在的 32 位整数溢出问题。
确保预准备语句在扩展时自动重置 SQLITE_BUSY 和 SQLITE_LOCKED 的错误代码,即使在编译时也是如此 使用SQLITE_OMIT_AUTORESET。
更正sqlite3_analyzer.exe实用程序中的错误计数 更改为 WITHOUT ROWID 表。
将“.dbinfo”命令添加到命令行 shell。
提高使用 OR 运算符的 fts3/4 查询的性能 以及至少一个辅助 FTS 功能。
修复了 fts3 snippet() 函数中导致其省略的 bug 以 列中的第一个标记。
SQLITE_SOURCE_ID:“2015-04-08 12:16:33 8a8ffc862e96f57aa698f93de10dee28e69f6e09”
sqlite3.c 的SHA1:49f1c3ae347e1327b5aaa6c7f76126bdf09c6f42

2015-02-25 (3.8.8.3)

修复了可能导致 如果部分索引的限定约束出现在 LEFT JOIN 的 ON 子句。
添加了链接到 “线路噪音” 命令行 shell 的 UNIX 版本中的命令行编辑库。
SQLITE_SOURCE_ID:“2015-02-25 13:29:11 9d6c1880fb75660bbabd693175579529785f8a6b”
sqlite3.c 的 SHA1:74ee38c8c6fd175ec85a47276dfcefe8a262827a

2015-01-30 (3.8.8.2)

增强 sqlite3_wal_checkpoint_v2(TRUNCATE) 接口,使其截断 即使没有检查点工作要做,WAL 文件也是如此。
SQLITE_SOURCE_ID:“2015-01-30 14:30:45 7757fc721220e136620a89c9d28247f28bbbc098”
sqlite3.c 的SHA1:85ce79948116aa9a087ec345c9d2ce2c1d3cd8af

2015-01-20 (3.8.8.1)

修复了自 3.8.4 版以来存在的排序逻辑中的一个 bug,该 bug 可能导致 输出以错误的顺序出现在包含 ORDER BY 子句的查询上, 一个 LIMIT 子句,并且结果集中大约有 60 列或更多列。 票号:f97c4637102a3ae72b79。
SQLITE_SOURCE_ID:“2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55”
sqlite3.c 的 SHA1:33987fb50dcc09f1429a653d6b47672f5a96f19e

2015-01-16 (3.8.8)

新功能:
添加了 PRAGMA data_version 命令,该命令可用于确定是否 数据库文件已被另一个进程修改。
在 sqlite3_wal_checkpoint_v2() 接口中添加了 SQLITE_CHECKPOINT_TRUNCATE 选项,并进行了相应的增强 到 PRAGMA wal_checkpoint。
添加了 sqlite3_stmt_scanstatus() 接口,仅在以下情况下可用 用 SQLITE_ENABLE_STMT_SCANSTATUS 编译。
sqlite3_table_column_metadata() 已得到增强,可在 WITHOUT ROWID 表上正常工作,并检查是否存在 如果列名参数为 NULL,则为表。界面现在是 默认情况下也包含在构建中,不需要 SQLITE_ENABLE_COLUMN_METADATA编译时选项。
添加了 SQLITE_ENABLE_API_ARMOR 编译时选项。
添加了 SQLITE_REVERSE_UNORDERED_SELECTS 编译时选项。
添加了 SQLITE_SORTER_PMASZ 编译时选项和SQLITE_CONFIG_PMASZ start-time 选项。
在 sqlite3_config() 中添加了 SQLITE_CONFIG_PCACHE_HDRSZ 选项,使应用程序更容易确定适当的 用于 SQLITE_CONFIG_PAGECACHE 的内存量。
VALUES 子句中的行数不再受SQLITE_LIMIT_COMPOUND_SELECT限制。
添加了 eval.c 可加载扩展,该扩展实现了递归的 eval() SQL 函数 评估 SQL。
性能增强:
减少平衡 b 树所涉及的 memcpy() 操作数量, 整体性能提升 3.2%。
改进了跳过扫描优化的成本估算。
自动索引优化现在能够生成 如果合适,则为部分索引。
Bug修复:
确保断电后的耐用性 “PRAGMA journal_mode=TRUNCATE”,在截断后立即调用 fsync() 日志文件。
查询计划器现在可以识别右侧的任何列 LEFT JOIN 的表可以为 NULL,即使该列具有 NOT NULL 约束。在这些情况下,请避免尝试优化 NULL 测试。 修复了工单 6f2222d550f5b0ee7ed。
确保 ORDER BY 将行按升序排列,即使 DISTINCT 运算符是使用降序索引实现的。修复了票证 c5ea805691bfc4204b1cb9e。
修复了使用多个线程运行时可能在压力下发生的数据争用问题 在共享缓存模式下,某些线程正在打开,并且 关闭连接。
修复了美国模糊 lop 发现的晦涩难懂的崩溃错误。票务编号:a59ae93ee990a55。
解决 GCC 优化器 bug(适用于 MacOS 10.7 上的 gcc 4.2.1),该错误导致 R-Tree 扩展在使用 -O3 编译时计算不正确的结果。
其他更改:
禁用 strchrnul() C 库例程,除非它是 使用 -DHAVE_STRCHRNULL 编译时选项专门启用。
改进了 likelihood()、likely() 和 unlikely() SQL 提示函数的有效性和准确性。
SQLITE_SOURCE_ID:“2015-01-16 12:08:06 7d68a42face3ab14ed88407d4331872f5b243fdf”
sqlite3.c 的SHA1:91aea4cc722371d58aae3d22e94d2a4165276905

2014-12-09 (3.8.7.4)

Bug 修复:添加上一版本中省略的互斥锁。
SQLITE_SOURCE_ID:“2014-12-09 01:34:36 f66f7a17b78ba617acde90fc810107f34f1a1f2e”
sqlite3.c 的 SHA1:0a56693a3c24aa3217098afab1b6fecccdedfd23

2014-12-05 (3.8.7.3)

Bug 修复:确保缓存的 KeyInfo 对象(对 应用程序)在共享缓存模式下运行并频繁关闭时不会过时 并重新打开一些数据库连接,同时将其他数据库连接留在 同一共享缓存持续打开。工单编号:e4a18565a36884b00edf。
Bug 修复:识别 LEFT JOIN 的右侧表格中的任何列都可以是 即使列具有 NOT NULL 约束,也为 NULL。不要应用以下优化: 假设该列从不为 NULL。工单编号:6f2222d550f5b0ee7ed。
SQLITE_SOURCE_ID:“2014-12-05 22:29:24 647e77e853e81a5effeb4c33477910400a67ba86”
sqlite3.c 的 SHA1:3ad2f5ba3a4a3e3e51a1dac9fda9224b359f0261

2014-11-18 (3.8.7.2)

增强 ROLLBACK 命令,以便允许挂起的查询继续运行 因为架构保持不变。以前,ROLLBACK 将导致所有挂起的查询 失败并显示 SQLITE_ABORT 或 SQLITE_ABORT_ROLLBACK 错误。仍返回该错误 如果 ROLLBACK 修改架构。
Bug 修复:确保 OP_Column 的 NULL 结果完全为 NULL,并且 没有设置MEM_Ephem位。 票务编号:094d39a4c95ee4。
Bug 修复:sqlite3_mprintf() 中的 %c 格式能够处理大于 70 的精度。
Bug 修复:不要从表单的 SELECT 中自动删除 DISTINCT 关键字 IN 运算符的右侧,因为如果 SELECT 也是必要的 包含 LIMIT。 工单 db87229497。
SQLITE_SOURCE_ID:“2014-11-18 20:57:56 2ab564bf9655b7c7b97ab85cafc8a48329b27f93”
sqlite3.c 的 SHA1:b2a68d5783f48dba6a8cb50d8bf69b238c5ec53a

2014-10-29 (3.8.7.1)

在 PRAGMA journal_mode=TRUNCATE 模式下,截断后立即调用 fsync() 日志文件,以确保事务在断电期间是持久的。
修复更新字段的 NULL 值时可能发生的断言错误 在使用 ALTER TABLE ADD COLUMN 添加的表的末尾。
不要尝试使用标准 C 库中的 strchrnul() 函数,除非 设置了 HAVE_STRCHRNULL 编译时选项。
修复了与在 WHERE 子句中带有 rowid 的 VIEW 上运行 UPDATE 或 DELETE 相关的几个问题。
SQLITE_SOURCE_ID:“2014-10-29 13:59:56 3b7b72c4685aa5cf5e675c2c47ebec10d9704221”
sqlite3.c 的SHA1:2d25bd1a73dc40f538f3a81c28e6efa5999bdf0c

2014-10-17 (3.8.7)

性能增强:
许多微优化导致相同数量的工作量增加 20.3% 相对于上一版本的 CPU 周期。 自 3.8.0 版本以来,累计性能提升为 61%。 (使用 speedtest1.c 工作负载上的 cachegrind 测量 带有 gcc 4.8.1 和 -OS 的 Ubuntu 13.10 x64。您的表现可能会有所不同。
分拣机可以使用辅助辅助线程来增加实时响应。 默认情况下,此功能处于关闭状态,并且可能处于关闭状态 使用 PRAGMA threads 命令或 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 threads 命令中添加了 SQLITE_LIMIT_WORKER_THREADS 选项,用于配置可用工作线程数。
spellfix1 扩展允许应用程序选择性地指定 rowid 每个 INSERT.
添加了用户身份验证扩展。
Bug修复:
修复了部分索引实现中可能导致不正确的 bug 回答是否在子查询或视图中使用了分部索引。 工单编号:98d973b8f5。
修复了可能导致表以错误方向扫描的查询计划器 bug (从而颠倒输出顺序)当使用 DESC 索引实现 ORDER BY 时 子句。 工单 ba7cbfaedc7e6。
修复了 sqlite3_trace() 中的一个错误,该错误导致它有时无法打印 如果需要重新准备 SQL 语句,则为该语句。 工单 11d5aa455e0d98f3c1e6a08
修复错误的 assert() 语句。 工单编号: 369d57fb8e5ccdff06f1
测试、调试和分析更改:
使用 “.selecttrace” 显示 ASCII-art 抽象语法树图 和 命令行 shell 中的“.wheretrace”命令,当使用 SQLITE_DEBUG、SQLITE_ENABLE_SELECTTRACE、 和SQLITE_ENABLE_WHERETRACE。同时提供 sqlite3TreeViewExpr() 和 sqlite3TreeViewSelect() 入口点,可以从中调用 调试器,用于在断点处停止时显示分析树。
放弃对SQLITE_ENABLE_TREE_EXPLAIN的支持。SELECTTRACE 机制提供 更有用的诊断信息。
用于配置辅助命令行 shell 的新选项 内存使用情况:--pagecache、--lookaside 和 --scratch。
SQLITE_SOURCE_ID:“2014-10-17 11:24:17 e4ab094f8afce0817f4074e823fabe59fc29ebb4”
sqlite3.c 的 SHA1: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 秒。
添加了 likely(X) SQL 函数。
默认情况下,unicode61 分词器现在包含在 FTS4 中。
当 ANALYZE 为 跑。
在源代码树中添加了一个新的可加载扩展源代码文件:fileio.c
将扩展函数 readfile(X) 和 writefile(X,Y)(使用从上一个项目符号中的 fileio.c 复制/粘贴的代码)添加到命令行 shell。
将 .fullschema dot-command 添加到命令行 shell。
性能增强:
停用 DISTINCT 关键字 IN 运算符的右侧。
添加将 IN 运算符作为序列进行计算的功能 的比较作为使用表查找的替代方法。使用序列 在可能的情况下实施比较 速度更快,例如当右侧的IN运算符 很小和/或经常变化。
查询计划器现在使用sqlite_stat4信息(由 ANALYZE 创建) 以帮助确定跳过扫描优化是否合适。
确保查询计划器从不尝试使用自制的瞬态 索引代替架构定义的索引。
其他小的调整,以提高VDBE代码的质量。
Bug修复:
修复了 CREATE UNIQUE INDEX 中的一个 bug,该 bug 是在 3.8.2 版中添加 WITHOUT ROWID 支持时引入的,该 ERROR 允许非唯一 NOT NULL 列 给定一个 UNIQUE 索引。 工单 9a6daf340df99ba93c
修复了上一版本中引入的 R-Tree 扩展中的一个 bug, 这可能会导致 使用 R 树的 rowid 的查询结果不正确 IN 运算符的左侧。 工单 d2889096e7bdeac6。
修复 sqlite3_stmt_busy() 接口,使其给出正确答案 对于已步进但从未重置的 ROLLBACK 语句。
修复了会导致取消引用空指针的 bug 如果具有 DEFAULT 的列是聚合函数,则尝试查看其 违约。 工单编号:3a88d85f36704eebe1
命令行 shell 的 CSV 输出现在始终使用 CRNL 来执行 行分隔符,并避免在 数据。
修复了 IN 运算符的列相关性问题。 工单编号:9a8b09f8e6。
修复 ANALYZE 命令,以便它在 sqlite_stat4 表中为 WITHOUT ROWID 表添加正确的示例。 票务 b2fa5424e6fcb15。
SQLITE_SOURCE_ID:“2014-08-15 11:46:33 9491ba7d738528f168657adb43a198238abde19e”
sqlite3.c 的 SHA1:72c64f05cd9babb9c0f9b3c82536d83be7804b1c

2014-06-04 (3.8.5)

添加了对按索引进行部分排序的支持。
增强查询计划器,使其始终首选使用 WHERE 子句相对于其他索引的术语。
改进了 FTS4 的 automerge 命令,以更好地控制索引大小 用于需要大量更新的全文索引。
在 R-Tree 扩展中添加了 sqlite3_rtree_query_callback() 接口
添加了新的 URI 查询参数“nolock”和“immutable”。
通过不记得只读的 CHECK 约束来减少内存 数据库连接。
为 WITHOUT ROWID 表启用 OR 优化。
呈现形式为“x IN (?)”的表达式(单个值为 IN运算符右侧的列表)就好像它们在哪里“x==?”, 同样优化“x NOT IN (?)”
将“.system”和“.once”命令添加到命令行 shell。
将 SQLITE_IOCAP_IMMUTABLE 位添加到可返回的位集中 VFS 的 xDeviceCharacteristics 方法。
添加了SQLITE_TESTCTRL_BYTEORDER测试控件。
Bug修复:
在没有 FROM 子句的查询上忽略 OFFSET 子句。 票务 07d6a0453d
涉及表单表达式的查询的断言错误 “x IN (?)”。票务编号:e39d032577。
报告的列数据类型不正确。 票号a8a0d2996a
对表的查询返回的重复行,该表大于 16 个索引,每个索引位于单独的列中,并且都通过 OR 连接的约束使用。 工单编号:10fb063b11
部分索引导致 UPDATE OR REPLACE 上的断言错误。 票证编号:2ea3e9fe63
调用未记录的 SQL 函数 sqlite_rename_parent() 时崩溃 使用 NULL 参数。 票务编号:264b970c43
如果查询具有相同的 GROUP BY,则忽略 ORDER BY。 票证 b75a9ca6b0
group_concat(x,'') SQL 函数返回 NULL 而不是空字符串 当所有输入都是空字符串时。 票证 55746f9e65
修复了 VDBE 代码生成器中导致崩溃的 bug,该 bug 在以下情况下导致崩溃 做一个插入...SELECT 语句,其中列数 要插入的列数大于目标中的列数 桌子。 工单编号:e9654505cfd
修复了在命令行 shell 中导入 CSV 时出现的问题,其中第一行最左边的字段 在 CSV 文件中,字节大小为零,并且没有引号,没有数据会 被导入。
修复了 FTS4 中的一个问题,即最左边的列包含 作为前缀的 notIndexed 列名 未编制索引,而不是名称完全匹配的列。
修复 sqlite3_db_readonly() 接口,使其返回 true if 由于文件格式写入版本号,数据库是只读的 太大了。
SQLITE_SOURCE_ID:“2014-06-04 14:06:34 b1ed4f2a34ba66c29b130f8d13e9092758019212”
sqlite3.c 的SHA1:7bc194957238c61b1a47f301270286be5bc5208c

2014-04-03 (3.8.4.3)

为可能导致混合查询的查询结果不正确的问题添加一个字符的修复 DISTINCT、GROUP BY 和 ORDER BY。工单编号:98825a79ce14。
SQLITE_SOURCE_ID:“2014-04-03 16:53:12 a611fa96c4a848614efe899130359c9f6fb889c3”
sqlite3.c 的 SHA1:310a1faeb9332a3cd8d1f53b4a2e055abf537bdc

2014-03-26 (3.8.4.2)

修复了尝试搜索 数据库文件损坏。
SQLITE_SOURCE_ID:“2014-03-26 18:51:19 02ea166372bdb2ef9d8dfbb05e78a97609673a8e”
sqlite3.c 的 SHA1:4685ca86c2ea0649ed9f59a500013e90b3fe6d03

2014-03-11 (3.8.4.1)

解决 C 预处理器宏冲突,该冲突会破坏某些人的生成 使用 Microsoft Visual Studio 进行配置。
在计算跳过扫描优化的成本时,请考虑 需要多次寻道的事实。
SQLITE_SOURCE_ID:“2014-03-11 15:27:36 018d317b1257ce68a92908b05c9c7cf1494050d0”
sqlite3.c 的 SHA1:d5cd1535053a50aa8633725e3595740b33709ac5

2014-03-10 (3.8.4)

代码优化和重构以提高性能。
将“.clone”和“.save”命令添加到命令行 shell。
更新命令行 shell 上的横幅,以便在新手用户 正在使用临时内存数据库。
修复了命令行 shell 中的编辑行支持。
添加对使用 sqlite3_test_control() SQLITE_TESTCTRL_VDBE_COVERAGE动词的 VDBE 程序的覆盖率测试的支持。
更新 _FILE_OFFSET_BITS 宏,以便构建在 QNX 上再次运行。
将 SrcList.nSrc 的数据类型从类型 u8 更改为类型 int 以解决 AIX 上的 C 编译器中的问题。
在 Cygwin 上加载扩展。
Bug修复:修复char() SQL函数,使其返回空字符串 而不是在使用零参数调用时出现“内存不足”错误。
Bug 修复:DISTINCT 现在可识别 zeroblob 和 blob of all 0x00字节是一回事。票证 [fccbde530a]
Bug 修复:计算包含 IS NOT NULL 的查询的正确答案 WHERE 子句中的术语,并且在 WHERE 子句中还包含 OR 术语,并且 用SQLITE_ENABLE_STAT4编译。工单 [4c86b126f2]
Bug 修复:确保“rowid”列在 normal 表和 WITHOUT ROWID 表。工单 [c34d0557f7]
Bug 修复:确保不会同时使用相同的临时寄存器 用于实现包含 ORDER 的复合 SELECT 语句的协程 BY 子句,因为这种使用可能会导致错误的答案。票务 [8c63ff0eca]
Bug 修复:确保 “ORDER BY random()” 子句不会被优化。票务 [65bdeb9739]
Bug 修复:修复子选择语句中可能出现的名称解析错误 包含在 TRIGGER 中。票务 [4ef7e3cfca]
Bug修复:修复表单的列默认值表达式 “DEFAULT(-(-9223372036854775808))”,以便它们正常工作,初始化 列到的浮点值大约等于 +9223372036854775808.0.
SQLITE_SOURCE_ID:“2014-03-10 12:20:37 530a1ee7dc2435f80960ce4710a3c2d2bfaaccc5”
sqlite3.c 的 SHA1:b0c22e5f15f5ba2afd017ecd990ea507918afe1c

2014-02-11 (3.8.3.1)

修复一个错误(工单 4c86b126f2) 这会导致某些带有 OR 子句的查询中缺少行,并且 当使用 SQLITE_ENABLE_STAT3 或 SQLITE_ENABLE_STAT4 编译时选项时,WHERE 子句中的 IS NOT NULL 运算符。
修复了导致 VS2013 出现问题的无害编译器警告。
SQLITE_SOURCE_ID:“2014-02-11 14:52:19 ea3317a4803d71d88183b29f1d3086f46d68a00e”
sqlite3.c 的 SHA1:990004ef2d0eec6a339e4caa562423897fe02bf0

2014-02-03 (3.8.3)

添加了对公共表表达式和 WITH 子句的支持。
添加了 printf()SQL 函数。
将 SQLITE_DETERMINISTIC 作为第 4 个参数中的可选位添加到 sqlite3_create_function()和相关接口中,为应用程序提供 创建新函数的能力,这些函数可以在以下情况下从内部循环中分解出来 他们有不断的争论。
添加SQLITE_READONLY_DBMOVED错误代码,在开头返回 事务,以指示基础数据库文件已重命名 或从SQLite下移出。
允许任意表达式,包括函数调用和子查询,在 ATTACH 的 filename 参数。
允许在 SELECT 语句有效的任何位置使用 VALUES 子句。
在使用 N==0 调用时,重新设定 sqlite3_randomness(N,P) 使用的 PRNG 种子。 在 unix 上的 fork()之后自动重新播种。
增强 spellfix1 虚拟表,使其可以按 rowid 进行有效搜索。
性能增强。
改进了运行 EXEXPLAIN 时 VDBE 字节码显示中的注释。
将“%token_class”指令添加到 Lemon 解析器生成器中,并使用它来简化 语法。
更改 Lemon 源代码以避免调用 OpenBSD 的 C 库函数 认为很危险。(例如:sprintf)。
Bug修复:在命令行shell CSV导入功能中,不结束字段 当转义的双引号出现在 CRLN 行的末尾时。
SQLITE_SOURCE_ID: “2014-02-03 13:52:03 e816dd924619db5f766de6df74ea2194f3e3b538”
sqlite3.c 的 SHA1:98a07da78f71b0275e8d9c510486877adc31dbee

2013-12-06 (3.8.2)

更改了浮点值时 CAST 表达式的定义行为 大于 +9223372036854775807 被转换为整数,以便 result 是最大可能的整数 +9223372036854775807,而不是 可能的最小整数 -9223372036854775808。在此更改之后, CAST(9223372036854775809.0 作为 INT)生成 +9223372036854775807 的 -9223372036854775808。← 可能不兼容的更改!
添加了对 WITHOUT ROWID 表的支持。
将跳过扫描优化添加到查询计划器中。
扩展了虚拟表接口,特别是 sqlite3_index_info 对象,以允许虚拟表报告其估计值 查询将返回的行数。
更新 R-Tree 扩展以使用增强的虚拟表 接口。
添加 SQLITE_ENABLE_EXPLAIN_COMMENTS 编译时选项。
增强了启用 SQLITE_ENABLE_EXPLAIN_COMMENTS 编译时选项时插入到 EXPLAIN 输出中的注释。
VDBE的性能增强,特别是OP_Column操作码。
将内部循环中的常量子表达式分解到初始化代码 在准备好的声明中。
增强了命令行 shell 的“.explain”输出格式,以便缩进循环以更好地显示程序的结构。
增强了命令行 shell 的“.timer”功能,使其 除了系统和用户时间外,还显示挂钟时间。
SQLITE_SOURCE_ID: “2013-12-06 14:53:30 27392118af4c38c5203a04b8013e1afdb1cebd0d”
sqlite3.c 的 SHA1:6422c7d69866f5ea3db0968f67ee596e7114544e

2013-10-17 (3.8.1)

添加了要使用的 unlikely() 和 likelihood() SQL 函数 作为查询规划器的提示。
查询规划器的增强功能:
考虑到不能与索引一起使用的 WHERE 子句术语 仍然可能会减少输出行数。
估计表行和索引行的大小,并使用最小的适用 B 树 用于完整扫描和“count(*)”操作。
添加了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<$limit 约束来 限制所需的 I/O 数量。
将隐藏的 fts4aux languageid 列添加到 fts4aux 虚拟表中。
VACUUM 命令将数据库打包得更紧密 1%。
更新了sqlite3_analyzer实用程序以提供更好的描述 并计算出“非连续页面”的更准确估计值
重构 PRAGMA 语句的实现以提高解析性能。
现在可以使用以下方法设置用于在 unix 上保存临时文件的目录 SQLITE_TMPDIR环境变量,它优先于 TMPDIR 环境变量。sqlite3_temp_directory全局变量 但是,仍然比两个环境变量具有更高的优先级。
添加了 PRAGMA stats 语句。
Bug修复:返回“SELECT count(*) FROM table”的正确答案,即使 表上有一个部分索引。票务 a5c8ed66ca.
SQLITE_SOURCE_ID: “2013-10-17 12:57:35 c78be6d786c19073b3a6730dfe3fb1be54f5657a”
sqlite3.c 的 SHA1:0a54d76566728c2ba96292a49b138e4f69a7c391

2013-09-03 (3.8.0.2)

修复了优化中尝试省略未使用的 LEFT JOIN 的 bug
SQLITE_SOURCE_ID: “2013-09-03 17:11:13 7dd4968f235d6e1ca9547cda9cf3bd570e1609ef”
sqlite3.c 的 SHA1:6cf0c7b46975a87a0dc3fba69c229a7de61b0c21

2013-08-29 (3.8.0.1)

修复了导致在末尾带引号的空字符串的偏离 1 错误 CRNL 终止的 CSV 输入行将被命令行 shell 误读。
修复了涉及带有 BETWEEN 或 LIKE/GLOB 的 LEFT JOIN 的查询计划器 bug constraint,然后是另一个涉及 OR 约束的右侧 INNER JOIN。
修复了查询表时可能导致段错误的查询计划器 bug 具有四列以上的 UNIQUE 或 PRIMARY KEY 约束。
SQLITE_SOURCE_ID: “2013-08-29 17:35:35:01 352362bc01660edfbda08179d60f09e2038a2f49”
sqlite3.c 的 SHA1:99906bf63e6cef63d6f3d7f8526ac4a70e76559e

2013-08-26 (3.8.0)

添加对部分索引的支持
切换到下一代查询规划器,以获得更快、更好的查询计划。
EXPLAIN QUERY PLAN 输出不再显示 联接中每个循环生成的行。
添加了 FTS4 notindexed 选项,允许在 FTS4 表中使用非索引列。
在 sqlite3_stmt_status() 中添加了 SQLITE_STMTSTATUS_VM_STEP 选项。
添加了cache_spill编译指示。
添加了query_only编译指示。
添加了defer_foreign_keys编译指示和 sqlite3_db_status(db, SQLITE_DBSTATUS_DEFERRED_FKS,...)C 语言界面。
添加了 “percentile()” 函数作为 ext/misc 中的可加载扩展 源树的子目录。
添加了 SQLITE_ALLOW_URI_AUTHORITY 编译时选项。
添加 sqlite3_cancel_auto_extension(X) 接口。
缺少 FROM 子句(或任何其他 从不读取或写入任何数据库文件)不会阻止读取 交易从关闭开始。
添加 SQLITE_DEFAULT_AUTOMATIC_INDEX 编译时选项。设置此选项 默认情况下,设置为 0 会禁用自动索引。
随时在SQLITE_CONFIG_LOG上发出SQLITE_WARNING_AUTOINDEX警告 查询规划器使用自动索引。
添加了 SQLITE_FTS3_MAX_EXPR_DEPTH 编译时选项。
添加了一个可选的第 5 个参数,用于定义归类序列 next_char() 扩展 SQL 函数。
在以下情况下,在 WAL 模式下返回SQLITE_BUSY_SNAPSHOT扩展错误代码 读取事务无法升级为写入事务,因为读取事务是 在较旧的快照上。
增强了sqlite3_analyzer实用程序以提供大小 除了表的每个单独索引的信息外,还单独提供信息 聚合大小。
允许通过运行 SQL 语句自由打开和关闭读取事务 从应用程序定义的 SQL 函数的实现中,如果 函数由不访问任何数据库表的 SELECT 语句调用。
在所有 (unix) 系统上禁用 posix_fallocate(),除非 HAVE_POSIX_FALLOCATE编译时选项。
更新命令行 shell 中的“.import”命令以支持多行 字段并更正 RFC-4180 引用并发出警告和/或错误消息 如果输入文本不严格符合 RFC-4180。
Bug修复:在FTS4的unicode61分词器中,处理所有私有码点 作为标识符符号。
Bug 修复:ORDER BY 子句中的裸标识符与输出列绑定得更紧密 名称,但表达式中的标识符与输入列名称绑定得更紧密。 但是,GROUP BY 子句中的标识符始终首选输出列名称。
Bug 修复:旧版查询优化器中的多个问题已由 迁移到 NGQP。
SQLITE_SOURCE_ID: “2013-08-26 04:50:08 f64cd21e2e23ed7cff48f7dafa5e76adde9321c2”
sqlite3.c 的SHA1:b7347f4b4c2a840e6ba12040093d606bd16ea21e

2013-05-20 (3.7.17)

添加对内存映射 I/O 的支持。
添加 sqlite3_strglob()便利接口。
将数据库标头中偏移量为 68 处的整数指定为将 SQLite 用作应用程序文件格式时的应用程序 ID。 新增PRAGMA application_id命令,用于查询和设置应用ID。
SQLITE_NOTICE_RECOVER_ROLLBACK在错误日志中报告回滚恢复。 更改 WAL 从中恢复的错误日志代码 SQLITE_OK SQLITE_NOTICE_RECOVER_WAL。
在错误日志中将未链接的数据库文件和数据库文件名别名的危险使用报告为SQLITE_WARNING消息。
添加了 SQLITE_TRACE_SIZE_LIMIT 编译时选项。
将 SQLITE_MAX_SCHEMA_RETRY 的默认值增加到 50,并确保 在架构更改可能强制声明的每个地方都受到尊重 重试。
添加一个名为“mptester”的新测试工具,用于验证操作是否正确 当多个进程同时使用同一个数据库文件时。
增强扩展加载机制,使其更加灵活(而 仍然保持向后兼容性)以两种方式:
如果默认入口点“sqlite3_extension_init”不存在 可加载的扩展,也可以尝试一个入口点“sqlite3_X_init”,其中 “X”基于共享库文件名。这允许每个扩展 具有不同的入口点,这允许它们静态链接 无需更改代码。
传递给 sqlite3_load_extension()的共享库文件名可以 省略文件名后缀,以及与体系结构相关的相应内容 后缀(“.so”、“.dylib”或“.dll”)将自动添加。
向源代码树添加了许多新的可加载扩展,包括 amatch、closure、fuzzer、ieee754、nextchar、regexp、spellfix、 和整数。查看每个扩展源文件的标题注释 有关该扩展的功能的更多信息。
增强 FTS3 以避免在存在巨大堆栈空间时使用过多的堆栈空间 MATCH 运算符右侧的项数。副作用 此更改是 MATCH 运算符只能容纳 12 个 NEAR 一次运算符。
增强 fts4aux 虚拟表,使其可以成为 TEMP 表。
在全文搜索逻辑中添加了 fts3tokenize 虚拟表。
查询计划器增强功能:使用约束的传递属性 尽可能将约束移动到连接的外部循环中, 从而减少了内部循环中需要发生的工作量。
停止在 unix 上使用 posix_fallocate(),因为它不适用于所有 文件系统。
改进了 Windows VFS 中的跟踪和调试功能。
Bug 修复:修复了共享缓存模式下一个数据库连接关闭而另一个数据库连接处于写入过程中时潜在的数据库损坏 bug 交易。 票号 e636a050b7
Bug修复: 仅将结果集中的 AS 名称视为解析的候选项 如果没有其他匹配项,则为 WHERE 子句中的标识符。在 ORDER BY 子句,AS 名称优先于任何列名称。 票务编号:2500cdb9be05
Bug 修复:不允许虚拟表取消 ORDER BY 子句,除非 所有外部循环都保证返回不超过一行的结果。 票务 ba82a4a41eac1.
Bug 修复:如果出现以下情况,请勿禁止显示虚拟表查询的 ORDER BY 子句 使用 IN 约束。 票号:f69b96e3076e。
Bug 修复:命令行 shell 在终止时给出的退出代码为 0 使用“.quit”命令。
Bug 修复:确保 PRAGMA 语句出现在 sqlite3_trace()输出中。
Bug 修复:当复合查询使用 ORDER BY 子句时 使用 COLLATE 运算符,确保进行排序 根据指定的排序规则,并且比较与 复合查询使用本机排序规则。工单编号:6709574d2a8d8。
Bug 修复:确保授权方回调得到 指向 column-name 参数的字符串“ROWID”的有效指针,当 执行更改 rowid 的 UPDATE。工单编号: 0eb70d77cb05bb2272
Bug 修复:不要在 OR 表达式中移动 WHERE 子句术语 包含在 LEFT JOIN 的 ON 子句中。票证 f2369304e4
Bug 修复:确保在尝试预制时始终报告错误 需要缺少的排序规则序列的操作。 工单编号:0fc59f908b
SQLITE_SOURCE_ID: “2013-05-20 00:56:22 118a3b35693b134d56ebd780123b7fd6f1497668”
sqlite3.c 的SHA1:246987605d0503c700a08b9ee99a6b5d67454aab

2013-04-12 (3.7.16.2)

修复了可能导致数据库损坏的 bug(自 3.7.13 版起就存在) 在 Windows 上,如果两个或多个进程尝试访问同一数据库文件,则 同时,在第三个进程在提交过程中崩溃之后 到同一个文件。详情请见工单7ff3120e4f 信息。
SQLITE_SOURCE_ID: “2013-04-12 11:52:43 cbea02d93865ce0e06789db95fd9168ebac970c7”
sqlite3.c 的 SHA1:d466b54789dff4fb0238b9232e74896deaefab94

2013-03-29 (3.7.16.1)

修复了 3.7.15 版中引入的 ORDER BY 优化器中的一个错误,该错误有时会优化排序步骤 实际上,排序是必需的。 票证 a179fe7465
修复了 CAST 表达式中一个长期存在的 bug,该 bug 可以识别 UTF16 字符作为数字,即使它们的最高有效字节不为零。 工单编号:689137afb6da41。
修复了 FTS3 的 NEAR 运算符应用于子字段时的 bug。 票务号码:38b1ae018f。
修复存储引擎中一个长期存在的错误,该错误(很少) 导致虚假报告SQLITE_CORRUPT错误,但事实并非如此 无害。 工单 6bfb98dfc0c。
SQLITE_OMIT_MERGE_SORT选项已被删除。合并排序器是 现在是SQLite的必需组件。
修复了源代码注释中的许多拼写错误
SQLITE_SOURCE_ID: “2013-03-29 13:44:34 527231bc67285f01fb18d4451b28f61da3c4e39d”
sqlite3.c 的 SHA1:7a91ceceac9bcf47ceb8219126276e5518f7ff5a

2013-03-18 (3.7.16)

添加了 PRAGMA foreign_key_check 命令。
为所有SQLITE_CONSTRAINT错误添加了新的扩展错误代码
添加了 SQLITE_READONLY_ROLLBACK 扩展错误代码,用于数据库 无法打开,因为它需要回滚恢复,但它是只读的。
添加了 SQL 函数 unicode(A) 和 char(X1,...,XN)。
PRAGMA incremental_vacuum 的性能改进,尤其是在 免费页面数量大于适合的页面数量的情况 Freelist 的单个主干页面。
改进了对包含聚合 min() 或 max() 的查询的优化。
增强虚拟表,以便它们可以在以下情况下使用索引 WHERE 子句包含 IN 运算符。
允许使用索引进行排序,即使索引的先前项也是如此 受 WHERE 子句中的 IN 运算符约束。
增强 PRAGMA table_info 命令,使“pk”列是 增加整数以显示主键中列的顺序。
增强查询优化器以利用传递联接约束。
查询优化器中的性能改进。
允许来自 PRAGMA integrity_check的错误消息长于 20000 字节。
改进了深度嵌套查询的名称解析。
添加了 test_regexp.c 模块作为如何实现的演示 REGEXP 运算符。
改进了 RTREE 扩展中的错误消息。
增强命令行 shell,以便将非零参数添加到 “.exit” 命令使 shell 立即退出,而没有干净地退出 关闭数据库连接。
改进了 dot-command 的无效布尔参数的错误消息 在命令行 shell 中。
改进了显示名称的“外键不匹配”的错误消息 涉及的两张桌子。
删除 unix VFS 中 umask() 的所有用法。
添加了 PRAGMA vdbe_addoptrace 和 PRAGMA vdbe_debug 命令。
当出现以下情况时,更改为使用 strncmp() 或等效项而不是 memcmp() 比较非零终止的字符串。
更新 cygwin 接口以省略已弃用的 API 调用。
增强 spellfix1 扩展,以便编辑距离成本表可以 在运行时通过插入类似“edit_cost_table=TABLE”的字符串进行更改 进入“命令”字段。
Bug 修复:修复可能导致错误查询的长期问题 导致将 INTEGER 字段与 TEXT 进行比较的 3 路或更大的联接 两个或多个位置的字段。 票务 fc7bd6358f
Bug 修复:如果 16 位引用计数器位于 由于查询过于复杂,视图溢出。
Bug修复:避免深度泄漏LIMIT和OFFSET子句的内存 嵌套的 UNION ALL 查询。
Bug 修复:在运行编译指示之前,请确保架构是最新的 table_info、index_list、index_info和foreign_key_list。
SQLITE_SOURCE_ID: “2013-03-18 11:39:23 66d5f2b76750f3520eb7a495f6247206758f5b90”
sqlite3.c 的SHA1:7308ab891ca1b2ebc596025cfe4dc36f1ee89cf6

2013-01-09 (3.7.15.2)

修复了 3.7.15 版中引入的导致 ORDER BY 子句的 bug 当 ORDER BY 实际 必填。 工单 598f5f7596b055
SQLITE_SOURCE_ID: “2013-01-09 11:53:05 c0e09560d26f0a6456be9dd3447f5311eb4f238f”
sqlite3.c 的 SHA1:5741f47d1bc38aa0a8c38f09e60a5fe0031f272d

2012-12-19 (3.7.15.1)

修复了 V3.7.15 中引入的 bug,该 bug 在以下情况下会导致段错误 SELECT 语句的结果列的 AS 名称用作逻辑名称 WHERE 子句中的术语。票务编号:a7b7803e8d1e869。
SQLITE_SOURCE_ID: “2012-12-19 20:39:10 6b85b767d0ff7975146156a99ad673f2c1a23318”
sqlite3.c 的 SHA1:bbbaa68061e925bd4d7d18d7e1270935c5f7e39a

2012-12-12 (3.7.15)

添加了 sqlite3_errstr() 接口。
避免在以下情况下多次调用 sqlite3_trace() 回调 由于SQLITE_SCHEMA错误,语句会自动重新准备。
添加了对 Windows Phone 8 平台的支持
增强 IN 运算符处理,以使用带有数字的索引 亲和力。
如果可能,使用覆盖索引执行全表扫描,在 理论上,索引会更小,因此可以用 更少的 I/O。
增强查询优化器,使 ORDER BY 子句更积极 优化,尤其是在 ORDER BY 子句的各种条款的联接中 来自连接的单独表。
添加将 FROM 子句子查询实现为协程的功能,而不是 将子查询显示到临时表中。
增强了命令行 shell:
添加了“.print”命令
“.width”命令中的负数会导致右对齐
使用 SQLITE_DEBUG 编译时添加“.wheretrace”命令
添加了busy_timeout编译指示。
添加了 instr() SQL 函数。
添加了 SQLITE_FCNTL_BUSYHANDLER 文件控件,用于允许 VFS 用于访问繁忙处理程序回调的实现。
内置 VFS 中的 xDelete 方法现在返回 SQLITE_IOERR_DELETE_NOENT要删除的文件是否不存在。
增强了对 QNX 的支持。
解决面向 ARM 时 MSVC 编译器中的优化程序 bug。
Bug修复:避免共享缓存模式下的各种并发问题。
Bug 修复:如果备份 API、共享缓存、 和 SQLite 加密扩展都是同时使用的。
Bug修复:使用TCL接口创建的SQL函数遵循 “nullvalue”设置。
Bug 修复:修复数据库 CREATE INDEX 上的 32 位溢出问题 大于 16GB。
Bug 修复:在共享缓存模式下使用 CHECK 约束或视图中的 COLLATE 运算符时,避免段错误。
SQLITE_SOURCE_ID: “2012-12-12 13:36:53 cd0b37c52658bfdf992b1e3dc467bae1835a94ae”
sqlite3.c 的 SHA1:2b413611f5e3e3b6ef5f618f2a9209cdf25cbcff”

2012-10-04 (3.7.14.1)

修复一个错误(工单 [d02e1406a58ea02d]]) 这会导致在 ON 子句中包含 OR 的 LEFT JOIN 上出现段错误。
解决 VisualStudio-2012 编译器中优化器中的 bug 导致在 ARM 上编译 SQLite 时生成无效代码。
修复 TCL 接口,以便支持“空值”设置 SQL 函数的 TCL 实现。
SQLITE_SOURCE_ID: “2012-10-04 19:37:12 091570e46d04e84b67228e0bdbcd6e1fb60c6bdb”
sqlite3.c 的SHA1:62aaecaacab3a4bf4a8fe4aec1cfdc1571fe9a44

2012-09-03 (3.7.14)

删除对 OS/2 的内置支持。如果您需要升级 OS/2 应用程序来使用此版本或更高版本的 SQLite, 然后使用 sqlite3_vfs_register() 接口添加应用程序定义的 VFS。此版本中删除的代码可以 用作应用程序定义的 VFS 的基线。
确保在重建时准确保留浮点值 命令行 shell 的“.dump”命令输出的数据库。
添加了 sqlite3_close_v2() 接口。
更新了命令行 shell,以便可以使用 SQLITE_OMIT_FLOATING_POINT 和 SQLITE_OMIT_AUTOINIT 构建它。
改进了 Windows 生成文件和生成过程。
增强了 PRAGMA integrity_check 和 PRAGMA quick_check,以便 他们可以选择只检查单个附加数据库,而不是所有数据库 附加的数据库。
对 WAL 模式处理的增强,可确保至少一个 有效的读取标记始终可用,以便只读进程 可以随时读取数据库。
增强了 ORDER BY 和 CREATE INDEX 使用的分拣器的性能。
添加了 SQLITE_DISABLE_FTS4_DEFERRED 编译时选项。
更好地处理聚合函数所在的聚合查询 包含在子查询中。
增强查询计划器,以便它尝试对使用或优化的查询使用覆盖索引。
SQLITE_SOURCE_ID: “2012-09-03 15:42:36 c0d89d4a9752922f9e367362366efde4f1b06f2a”
sqlite3.c 的 SHA1:5fdf596b29bb426001f28b488ff356ae14d5a5a6

2012-06-11 (3.7.13)

允许使用 URI 文件名指定的内存中数据库使用共享缓存, 这样也一样 可以从多个数据库连接访问内存数据库。
识别并使用 URI 文件名中的 mode=memory 查询参数。
避免在任一 连接关闭。相反,请等待最后一个连接关闭 重置架构。
在 RTREE 扩展中,舍入 64 位浮点数时 设置为 32 位进行存储,始终沿导致 边界框变大。
调整 unix 驱动程序以避免对 fchown() 进行不必要的调用。
添加接口 sqlite3_quota_ferror() 和 sqlite3_quota_file_available() 到 test_quota.c 模块。
sqlite3_create_module() 和 sqlite3_create_module_v2() 接口 返回任何重载或替换虚拟表模块的尝试SQLITE_MISUSE。在这种情况下,析构函数始终被调用,根据 历史和当前文档。
SQLITE_SOURCE_ID: “2012-06-11 02:05:22 f5b5a13f7394dc143aa136f1d4faba6839eaa6dc”
sqlite3.c 的 SHA1:ff0a771d6252545740ba9685e312b0e3bb6a641b
2012-05-22 (3.7.12.1)
修复了 3.7.12 版本中的一个 bug(票证 c2ad16f997),该错误可能导致某些 s段错误 晦涩难懂的嵌套聚合查询。
修复了其他各种小的测试脚本问题。
SQLITE_SOURCE_ID: “2012-05-22 02:45:53 6d326d44fd1d626aae0e8456e5fa2049f1ce0789”
sqlite3.c 的 SHA1:d494e8d81607f0515d4f386156fb0fd86d5ba7df

2012-05-14 (3.7.12)

为 sqlite3_db_status() 添加 SQLITE_DBSTATUS_CACHE_WRITE 选项。
优化 typeof() 和 length() SQL 函数,使其避免 从磁盘读取不必要的数据库内容。
添加 FTS4 “merge” 命令、FTS4 “automerge” 命令和 FTS4 “integrity-check” 命令。
报告失败的特定 CHECK 约束的名称。
在命令行 shell 中,如果第一个,请使用 popen() 而不是 fopen() “.output”命令的参数字符为“|”。
在 Windows VFS 中使用 OVERLAPPED 来避免某些系统调用 从而获得性能改进。
更积极地优化 AND 运算符,当一侧或 其他总是假的。
改进了 WHERE 子句,都可以索引。
添加 SQLITE_RTREE_INT_ONLY 编译时选项以强制 R*Tree 扩展模块使用整数而不是 存储和计算的浮点值。
增强 PRAGMA integrity_check 命令,以便在以下情况下使用更少的内存 处理数 GB 的数据库。
test_quota.c 附加模块中添加了新接口。
将“.trace”点命令添加到命令行 shell。
允许以递归方式调用虚拟表构造函数。
改进了复合查询上 ORDER BY 子句的优化。
改进了对包含在 聚合查询。
Bug修复:修复RELEASE命令,使其不会取消挂起 查询。这修复了 3.7.11 中引入的问题。
Bug 修复:不要将 DISTINCT 视为多余,除非 结果集受 UNIQUE 约束,并且没有 该子集中的列可以为 NULL。 票务编号:385a5b56b9。
Bug 修复:不要优化具有相同条款的 ORDER BY 子句 作为 UNIQUE 索引,除非这些术语也不是 NULL。 工单编号:2a5629202f。
SQLITE_SOURCE_ID: “2012-05-14 01:41:23 8654aa9540fe9fd210899d83d17f3f407096c004”
sqlite3.c 的SHA1:57e2104a0f7b3f528e7f6b7a8e553e2357ccd2e1

2012-03-20 (3.7.11)

增强 INSERT 语法以允许插入多行 通过 VALUES 子句。
增强 CREATE VIRTUAL TABLE 命令以支持 IF NOT EXISTS 子句。
添加了 sqlite3_stricmp() 接口作为 sqlite3_strnicmp() 的对应项。
添加了 sqlite3_db_readonly() 接口。
添加了 SQLITE_FCNTL_PRAGMA 文件控件,使 VFS 实现 能够添加新的 PRAGMA 语句或覆盖内置语句 PRAGMAs。
格式为“SELECT max(x), y FROM table”的查询返回 Y 的值,位于包含最大 x 值的同一行上。
添加了对 FTS4 languageid 选项的支持。
记录了对 FTS4 内容选项的支持。此功能具有 实际上从 3.7.9 版开始就存在于代码中,但现在才考虑 得到官方支持。
挂起语句不再阻止 ROLLBACK。取而代之的是,待处理的 语句将在 ROLLBACK 后下次访问时返回 SQLITE_ABORT。
改进了命令行 shell 中 CSV 输入的处理
修复引入的 bug 在版本 3.7.10 中,可能会导致 LEFT JOIN 如果 WHERE 子句 通过 OR 连接的可索引项。
SQLITE_SOURCE_ID: “2012-03-20 11:35:50 00bb9c9ce4f465e6ac321ced2a9d0062dc364669”
sqlite3.c 的 SHA1:d460d7eda3a9dccd291aed2a9fda868b9b120a10

2012-01-16 (3.7.10)

默认架构格式编号从 1 更改为 4。 这意味着,除非 PRAGMA legacy_file_format=ON 语句是 运行,新创建的数据库文件将无法按 SQLite 版本读取 3.3.0 之前的版本(2006-01-10)。这也意味着默认情况下启用降序索引。
不推荐使用 sqlite3_pcache_methods 结构以及 SQLITE_CONFIG_PCACHE 和 SQLITE_CONFIG_GETPCACHE 配置参数。 取而代之的是新的sqlite3_pcache_methods2结构和SQLITE_CONFIG_PCACHE2和SQLITE_CONFIG_GETPCACHE2配置 参数。
在VFS接口中添加了powersafe覆盖属性。提供 SQLITE_IOCAP_POWERSAFE_OVERWRITE I/O 功能、SQLITE_POWERSAFE_OVERWRITE编译时选项和 URI 文件名的“psow=BOOLEAN”查询参数。
添加了 sqlite3_db_release_memory()接口和shrink_memory编译指示。
添加了 sqlite3_db_filename()接口。
添加了 sqlite3_stmt_busy()接口。
添加了 sqlite3_uri_boolean()和 sqlite3_uri_int64()接口。
如果 PRAGMA cache_size 的参数为负 N,则表示使用 页面缓存的大约 -1024*N 字节内存,无论 页面大小。
增强了默认内存分配器以在 Windows 上使用 _msize(), Mac 上的 malloc_size()和 Linux 上的 malloc_usable_size()。
增强了查询规划器,以支持具有范围约束的索引查询 在 rowid 上。
增强了查询规划器扁平化逻辑,以允许 UNION ALL 化合物 向上提升以替换简单的包装器 SELECT,即使 化合物是连接。
增强了查询规划器,以便 xfer 优化可以与 INTEGER PRIMARY KEY ON CONFLICT 只要目标表是 最初是空的。
增强了 Windows VFS,以便可以覆盖所有系统调用 使用 xSetSystemCall 接口。
更新了 “unix-dotfile” VFS 以使用 mkdir()的锁定目录 和 rmdir()而不是使用 open()和 unlink()锁定文件。
增强了 test_quota.c 扩展以支持类似 stdio 的接口 有配额。
将 unix VFS 更改为能够容忍返回的 read()系统调用 小于请求的字节数。
更改 unix 和 windows VFS 以报告扇区大小 4096 而不是旧的默认值 512。
在 TCL 接口中,将 -uri 选项添加到 “sqlite3” TCL 命令中 用于创建新的数据库连接对象。
添加了带有 SQLITE_ENABLE_TREE_EXPLAIN 编译时选项的 SQLITE_TESTCTRL_EXPLAIN_STMT test-control 选项,使命令行 shell 能够显示 SQL 语句的 ASCII-art 解析树 它处理,用于调试和分析。
Bug修复:重新启动 WAL 时添加额外的 xSync,以防止 极不可能,但理论上是可能的 断电后数据库损坏。 工单ff5be73dee。
Bug修复:更改 VDBE,以便将所有寄存器初始化为无效 而不是 NULL。 工单编号: 7bbfb7d442
Bug修复:修复 32 位整数溢出可能导致的问题。 购票号码 ac00f496b7e2
SQLITE_SOURCE_ID: “2012-01-16 13:28:40 ebd01a8deffb5024a5d7494eef800d2366d97204”
sqlite3.c 的SHA1:6497cbbaad47220bd41e2e4216c54706e7ae95d4

2011-11-01 (3.7.9)

如果 FTS4 中的搜索令牌(位于 MATCH 运算符的右侧)以“^”开头,则该令牌必须是其字段中的第一个 文档。** 可能不兼容的更改 **
向 sqlite3_db_status()接口添加了 SQLITE_DBSTATUS_CACHE_HIT 和 SQLITE_DBSTATUS_CACHE_MISS 选项。
删除了对 SQLITE_ENABLE_STAT2 的支持,将其替换为 much 更有能力SQLITE_ENABLE_STAT3选择。
sqlite3_analyzer实用程序的增强功能,包括 --pageinfo 和 --stats 选项以及对多路复用数据库的支持。
增强 sqlite3_data_count()接口,以便它可以用于 确定是否在准备好的语句上看到了SQLITE_DONE。
添加了 SQLITE_FCNTL_OVERWRITE 文件控件,通过该控件 SQLite 核心 向 VFS 指示当前事务将覆盖 整个数据库文件。
将默认后备内存分配器分配器分配大小从 100 到 128 字节。
增强了查询规划器,以便它可以将术语分解为 WHERE 子句中的 OR 表达式,以查找更好的索引。
添加了 SQLITE_DIRECT_OVERFLOW_READ compile-time 选项,导致直接从数据库文件中读取溢出页, 绕过页面缓存。
删除对 精度大小和宽度值的限制 字符串呈现的 sqlite3_mprintf()系列的格式说明符 例 程。
修复了阻止 ALTER TABLE ...从工作重命名 在具有 UTF16 编码的数据库中的某些虚拟表上。
修复了 ASCII 到浮点数转换中导致性能下降和 转换指数大得离谱的数字时结果不正确。
修复了导致聚合查询结果不正确的 bug,这些查询使用 参数包含复杂表达式的多个聚合函数 仅在其中包含的字符串文本的情况下有所不同 表达 式。
修复了阻止 page_count 和 quick_check编译指示的 bug 如果他们的名字是大写的,则工作正常。
修复了导致 VACUUM 失败的 bug,如果 count_changes 编译指示是 使用中的。
修复了虚拟表实现中导致崩溃的 bug,如果出现以下情况 FTS4 表被丢弃在事务中,并且 之后发生保存点。
SQLITE_SOURCE_ID: “2011-11-01 00:52:41 c7c6050ef060877ebe77b41d959e9df13f8c9b5e”
sqlite3.c 的 SHA1:becd16877f4f9b281b91c97e106089497d71bb47

2011-09-19 (3.7.8)

CREATE INDEX 的性能改进了几个数量级 非常大的桌子。
改进了 Windows VFS 以更好地防御干扰 来自防病毒软件。
改进了存在 DISTINCT 关键字时的查询计划优化。
允许在 unix VFS 中覆盖更多系统调用 - 提供 更好地支持 Chromium 沙盒。
将前瞻缓存行的默认大小从 100 字节增加到 128 字节。
增强了 test_quota.c 模块,使其可以跟踪 预先存在的文件。
Bug 修复:虚拟表现在可以正确处理 IS NOT NULL 约束。
Bug 修复:正确处理与 WHERE 子句中的索引。
SQLITE_SOURCE_ID: “2011-09-19 14:49:19 3e0da808d2f5b4d12046e05980ca04578f581177”
sqlite3.c 的 SHA1:bfcd74a655636b592c5dba6d0d5729c0f8e3b4de

2011-06-28 (3.7.7.1)

修复了导致使用 sqlite3_prepare() 编译的 PRAGMA case_sensitive_like语句的 bug 失败并出现SQLITE_SCHEMA错误。
SQLITE_SOURCE_ID: “2011-06-28 17:39:05 af0d91adf497f5f36ec3813f04235a6e195a605f”
sqlite3.c 的 SHA1:d47594b8a02f6cf58e91fb673e96cb1b397aace0

2011-06-23 (3.7.7)

添加对 URI 文件名的支持
sqlite3_vtab_config在 支持带有虚拟表的 ON CONFLICT 子句。
在虚拟表中添加 xSavepoint、xRelease 和 xRollbackTo 方法,以支持虚拟表的 SAVEPOINT。
更新内置的 FTS3/FTS4 和 RTREE 虚拟表以支持 ON CONFLICT 子句和 REPLACE。
避免对数据库架构进行不必要的重新分析。
添加了对 FTS4 前缀选项和 FTS4 顺序选项的支持。
允许以只读方式打开 WAL 模式数据库,只要满足以下条件: 存在现有的读/写连接。
添加了对短文件名的支持。
SQLITE_SOURCE_ID: “2011-06-23 19:49:22 4374b7e83ea0a3fbc3691f9c0c936272862f32f2”
sqlite3.c 的 SHA1:5bbe79e206ae5ffeeca760dbd0d66862228db551

2011-05-19 (3.7.6.3)

修复了 WAL 模式可能导致事务 如果cache_size设置得非常小(小于 10),则静默回滚 SQLite面临内存压力。

2011-04-17 (3.7.6.2)

修正了 open(2) 系统调用的函数原型 POSIX的。如果没有此修复,pthreads 将无法在 NetBSD 上正常工作。
SQLITE_SOURCE_ID: “2011-04-17 17:25:17 154ddbc17120be2915eb03edc52af1225eb7cb5e”
sqlite3.c 的 SHA1:806577fd524dd5f3bfd8d4d27392ed2752bc9701

2011-04-13 (3.7.6.1)

修复了 3.7.6 中的一个 bug,该 bug 仅在 SQLITE_FCNTL_SIZE_HINT 文件控件与使用 HAVE_POSIX_FALLOCATE编译时选项,并且具有 SQLITE_ENABLE_LOCKING_MODE关机了。
SQLITE_SOURCE_ID: “2011-04-13 14:40:25 a35e83eac7b185f4d363d7fa51677f2fdfa27695”
sqlite3.c 的 SHA1:b81bfa27d3e09caf3251475863b1ce6dd9f6ab66

2011-04-12 (3.7.6)

添加了 sqlite3_wal_checkpoint_v2() 接口并增强了wal_checkpoint编译指示以支持阻塞检查点。
改进了查询计划器,以便更好地估计 计划成本,从而更好地选择正确的计划, 尤其是在使用SQLITE_ENABLE_STAT2时。
修复了阻止延迟外键约束的 bug 当 sqlite3_finalize() 未执行时强制执行 由一个语句调用,该语句在 另一个正在运行外键约束的语句。
可能导致溢出的整数算术运算 现在改用浮点执行。
将 VFS 对象上的版本号增加到 3 并添加了新方法 xSetSysCall、xGetSysCall 和 xNextSysCall 用于进行全覆盖测试。
SQLITE_MAX_ATTACHED的最大值从 30 增加到 62 (尽管默认值仍为 10)。
FTS4 的增强功能:
添加了 fts4aux 表
添加了对压缩 FTS4 内容的支持
增强 ANALYZE 命令以支持索引的名称 作为其论点,以便只分析那一个索引。
在 unix 和类 unix 平台上添加了 “unix-excl” 内置 VFS。
SQLITE_SOURCE_ID: “2011-04-12 01:58:40 f9d43fa363d54beab6f45db005abac0a7c0c47a7”
sqlite3.c 的 SHA1:f38df08547efae0ff4343da607b723f588bbd66b

2011-02-01 (3.7.5)

添加了 sqlite3_vsnprintf() 接口。
添加了 sqlite3_db_status() 接口的 SQLITE_DBSTATUS_LOOKASIDE_HIT、SQLITE_DBSTATUS_LOOKASIDE_MISS_SIZE 和 SQLITE_DBSTATUS_LOOKASIDE_MISS_FULL 选项。
添加了 SQLITE_OMIT_AUTORESET 编译时选项。
添加了 SQLITE_DEFAULT_FOREIGN_KEYS 编译时选项。
更新了 sqlite3_stmt_readonly(),以便明确定义其结果 用于所有准备好的语句,以便它与 VACUUM 一起使用。
在命令行 shell 中添加了“-heap”选项
修复涉及以下 bug 频繁更改 WAL 模式和 VACUUM(理论上)可能导致数据库损坏。
增强 sqlite3_trace() 机制,使嵌套的 SQL 语句 例如可能由虚拟表生成的表,但显示 在注释中,没有参数扩展。这 大大改善了使用 FTS3/4 和/或 RTREE 时的跟踪输出 虚拟表。
更改所有内置 VFS 上的 xFileControl() 方法,以返回SQLITE_NOTFOUND,而不是SQLITE_ERROR无法识别的 操作代码。
如果数据库将 PRAGMA synchronous 设置为 OFF,则 SQLite 核心将调用 VFS 的 SQLITE_FCNTL_SYNC_OMITTED 文件控件,而不是对 xSync 的调用。

2010-12-07 (3.7.4)

添加了 sqlite3_blob_reopen() 接口,以允许将现有 sqlite3_blob 对象重新加载到新行。
使用新的 sqlite3_blob_reopen() 接口来提高性能 FTS。
允许不支持共享内存的 VFS 如果 PRAGMA locking_mode 设置为 EXCLUSIVE,则访问 WAL 数据库。
对 EXPLAIN QUERY PLAN 的增强。
添加了 sqlite3_stmt_readonly() 接口。
添加了PRAGMA checkpoint_fullfsync。
添加了SQLITE_FCNTL_FILE_POINTER选项 到sqlite3_file_control()。
添加了对 FTS4 和增强功能的支持 添加到 FTS matchinfo() 函数。
添加了提供示例的 test_superlock.c 模块 用于获取回滚或 WAL 数据库的独占锁的代码。
添加了 test_multiplex.c 模块,该模块提供 提供多路复用(分片)的示例 VFS ,将其拆分为多个固定大小的文件。
修复了与 or 优化相关的一个非常晦涩的错误。

2010-10-08 (3.7.3)

添加了 sqlite3_create_function_v2() 接口,其中包含 析构函数回调。
添加了对使用应用程序提供的自定义 r 树查询的支持 用于定义查询区域边界的回调例程。
默认页面缓存会更加努力地避免使用内存 超出了SQLITE_CONFIG_PAGECACHE分配给它的内容。或者如果 使用页面缓存是从堆中分配的,它努力避免 遍历 sqlite3_soft_heap_limit64(),即使未设置SQLITE_ENABLE_MEMORY_MANAGEMENT。
添加了 sqlite3_soft_heap_limit64() 接口作为 sqlite3_soft_heap_limit() 的替代品。
ANALYZE 命令现在收集表的统计信息,即使它们 没有索引。
调整查询计划器,以帮助它更好地查找 每个查询的最有效查询计划。
增强了内部文本到数字的转换例程,以便它们 使用 UTF8 或 UTF16,从而避免一些 UTF16 到 UTF8 的文本 转换。
修复了导致 win32 系统中大型 WAL 事务的内存使用过多的问题。
VDBE 和 B 树层之间的接口得到增强,以便 VDBE 向 B 树层提供提示,让 B 树层 知道何时使用哈希而不是 B 树进行瞬态是安全的 表。
其他文档增强功能。

2010-08-24 (3.7.2)

修复一个非常晦涩难懂的旧错误,该错误可能导致损坏 使用时的数据库可用页列表incremental_vacuum。

2010-08-23 (3.7.1)

在 sqlite3_db_status()接口中添加了新命令 SQLITE_DBSTATUS_SCHEMA_USED 和 SQLITE_DBSTATUS_STMT_USED 为了报告用于保存架构的内存量,以及 准备好的连接语句。
将数据库页的最大大小从 32KiB 增加到 64KiB。
使用 LIKE 优化,即使右侧字符串包含 没有通配符。
将 SQLITE_FCNTL_CHUNK_SIZE 谓词添加到 unix 和 windows 的 sqlite3_file_control() 接口中,以使数据库文件在 大块,以减少磁盘碎片。
修复了查询计划器中导致性能回归的 bug 相对于 3.6.23.1 在某些复杂连接上。
修复了 OS/2 后端中的拼写错误。
重构了寻呼机模块。
SQLITE_MAX_PAGE_SIZE编译时选项现在被静默忽略。 最大页面大小硬编码为 65536 字节。

2010-08-04 (3.7.0.1)

修复了版本 3.7.0 时可能发生的潜在数据库损坏 bug 和版本 3.6.23.1 交替写入同一数据库文件。 工单 [51ae9cad317a1]
修复了与查询规划器增强功能相关的性能回归 版本 3.7.0。

2010-07-21 (3.7.0)

添加了对预写日志记录的支持。
查询计划器增强功能 - 创建自动瞬态索引 这样做会减少估计的查询时间。
查询计划器增强功能 - 如果查询 还包含一个 GROUP BY 子句,该子句强制执行正确的输出顺序。
为 sqlite3_db_status() 添加SQLITE_DBSTATUS_CACHE_USED动词。
逻辑数据库大小现在存储在数据库标头中,以便 字节可以追加到数据库文件的末尾而不会损坏 这样SQLite就可以在缺乏支持的系统上正常工作 对于 ftruncate()。

2010-03-26 (3.6.23.1)

修复 FTS3 的 offsets()函数中的一个 bug
修复缺少的“同步”,当省略时可能会导致数据库 如果发生电源故障或操作系统崩溃,则损坏 ROLLBACK 操作正在完成。

2010-03-09 (3.6.23)

添加了secure_delete编译指示。
添加了 sqlite3_compileoption_used() 和 sqlite3_compileoption_get() 接口以及compile_options编译指示和 sqlite_compileoption_used() 和 sqlite_compileoption_get() SQL 函数。
将 sqlite3_log() 接口与SQLITE_CONFIG_LOG动词一起添加到 sqlite3_config() 中。“.log”命令 已添加到命令行界面。
对 FTS3 的改进。
对 SQLITE_OMIT_FLOATING_POINT 的支持进行了改进和错误修复。
增强了integrity_check编译指示,以检测无序的 rowid。
“.genfkey”运算符已从命令行界面中删除。
更新了共同托管的 Lemon LALR(1) 解析器生成器。(这些 更新不影响 SQLite。
各种小错误修复和性能增强。

2010-01-06 (3.6.22)

修复在以下情况下可能(很少)导致查询结果不正确的 bug CAST 或 OR 运算符用于查询的 WHERE 子句。
对 FTS3 的持续增强和改进。
其他杂项错误修复。

2009-12-07 (3.6.21)

现在,由 sqlite3_trace() 生成的 SQL 输出被修改为包括 绑定参数的值。
针对特定用例的性能优化 SQLite的单个知名用户。数量减少 12% 实现 CPU 操作(由 Valgrind 测量)。实际性能 实践中的改进可能因工作量而异。变化 包括:
现在已经实现了 ifnull() 和 coalesce() SQL 函数 使用内联 VDBE 代码而不是调用外部函数,以便 永远不需要评估未使用的参数。
substr() SQL 函数不费心测量长度 如果它只计算前缀,则其整个输入字符串
不必要的 OP_IsNull、OP_Affinity 和 OP_MustBeInt VDBE 操作码 被抑制
各种代码重构以提高性能
FTS3 扩展进行了重大的返工和清理。 新的 FTS3 文档现已推出。
修复了 SQLITE_SECURE_DELETE 编译时选项,以确保 即使应用了截断优化,内容也会被删除。
改进了命令行界面中的“dot-command”处理。
其他小错误修复和文档增强功能。

2009-11-04 (3.6.20)

优化器增强功能:预处理语句自动 当 LIKE 运算符的 RHS 上的绑定发生更改时重新编译,或者 当任何范围约束在SQLITE_ENABLE_STAT2下发生变化时。
各种小错误修复和文档增强。

2009-10-30 (3.6.16.1)

版本 3.6.16 的一个小补丁,用于修复OP_If错误。

2009-10-14 (3.6.19)

添加了对外键约束的支持。外键约束 默认情况下处于禁用状态。使用foreign_keys编译指示打开它们。
推广 IS 和 IS NOT 运算符以采用任意表达式 在他们的右手边。
TCL 接口已得到增强,可在与 TCL 8.6 或更高版本链接时使用非递归引擎 (NRE) 接口到 TCL 解释器。
修复了 3.6.18 中引入的 bug,该 bug 可能导致 s段错误,当 尝试在只读数据库上写入。

2009-09-11 (3.6.18)

SQLite 源代码的版本控制已从 CVS 过渡到 Fossil。
查询计划器增强功能。
SQLITE_ENABLE_STAT2编译时选项使 ANALYZE 命令收集每个索引的小直方图,以帮助 SQLite 更好地 在竞争范围查询索引中进行选择。
可以使用 PRAGMA recursive_triggers 语句启用递归触发器。
当由于 REPLACE 冲突解决而删除行时,将触发 Delete 触发器。此功能仅 启用递归触发器时启用。
添加了 sqlite3_open_v2() 的 SQLITE_OPEN_SHAREDCACHE 和 SQLITE_OPEN_PRIVATECACHE 标志,用于覆盖单个数据库连接的全局共享缓存模式设置。
添加了改进的版本识别功能: C-Preprocessor宏SQLITE_SOURCE_ID, C/C++ 接口 sqlite3_sourceid() 和 SQL 函数 sqlite_source_id()。
对触发器的晦涩错误修复 ([EFC02F9779])。

2009-08-10 (3.6.17)

公开 sqlite3_strnicmp() 接口以供扩展和 应用。
删除对虚拟表和共享缓存模式的限制。 现在可以同时使用虚拟表和共享缓存。
许多代码简化和晦涩的错误修复,以支持 提供 100% 的分支测试覆盖率。

2009-06-27 (3.6.16)

修复了偶尔导致 INSERT 或 UPDATE 的 bug(票证 #3929) 对具有自我修改触发器的索引表执行失败的操作。
其他小错误修复和性能优化。

2009-06-15 (3.6.15)

重构 SQL 表达式的内部表示形式,以便它们 在嵌入式平台上使用更少的内存。
减少使用的堆栈空间量
修复了 HP/UX 和 Sparc 上的 64 位对齐错误
sqlite3_create_function() 系列接口现在在传递无效时返回 SQLITE_MISUSE 而不是 SQLITE_ERROR 参数组合。
当使用 CREATE TABLE ...如选择...这 列的 datatype 是简化的 SQLite 数据类型(TEXT、INT、 REAL、NUMERIC 或 BLOB),而不是原始数据类型的副本 源表。
解决检查热回滚日志时的争用条件。
sqlite3_shutdown() 接口释放窗口下的所有互斥锁。
增强了对损坏数据库文件的鲁棒性
对测试套件的持续改进和对模糊的修复 测试套件改进的错误和不一致之处 发现。

2009-05-25 (3.6.14.2)

修复了版本 3.6.14 中引入的代码生成器错误。这个错误 在晦涩难懂的情况下,可能会导致不正确的查询结果。 票证#3879。

2009-05-19 (3.6.14.1)

修复了 group_concat() 中的一个错误,工单 #3841
修复寻呼机缓存中的性能错误,工单 #3844
修复了 sqlite3_backup 实现中的一个 bug,该 bug 可能导致 到损坏的备份数据库。票证#3858。

2009-05-07 (3.6.14)

添加了可选的异步 VFS 模块。
增强了查询优化器,以便虚拟表能够 在 WHERE 子句中使用 OR 和 IN 运算符。
改进了 btree 和寻呼机层的速度。
添加了 SQLITE_HAV_ISNAN 编译时选项,该选项将导致 使用标准数学库中的 isnan() 函数 SQLite自己的自制NaN检查器。
无数的小错误修复、文档改进、新的和 改进了测试用例,并简化了代码和清理。

2009-04-13 (3.6.13)

修复了版本 3.6.12 中导致运行时出现段错误的 bug 空数据库的 sqlite_master 表上的 count(*)。票证 #3774。
修复了版本 3.6.12 中的一个错误,该错误导致段错误,当 使用 DEFAULT 值插入到表中,其中存在 函数作为 DEFAULT 值表达式的一部分。票证 #3791。
修复了 Sparc 上的数据结构对齐问题。票证 #3777。
其他小错误修复。

2009-03-31 (3.6.12)

修复了当incremental_vacuum 在内存中数据库中回滚。票证 #3761。
添加了 sqlite3_unlock_notify() 接口。
添加了reverse_unordered_selects编译指示。
窗口上的默认页面大小会自动调整以匹配 底层文件系统的功能。
在 CLI 中添加新的“.genfkey”命令,以生成触发器到 实现外键约束。
“count(*)”查询的性能改进。
减少使用的堆内存量,尤其是 TRIGGER 使用的堆内存量。

2009-02-18 (3.6.11)

新增热备份接口。
向 CLI 添加了新命令“.backup”和“.restore”。
新增了备份和恢复TCL接口的方法。
语法气泡的改进 图
各种小错误修复

2009-01-15 (3.6.10)

修复了可能导致数据库损坏的缓存一致性问题。 票证 #3584。

2009-01-14 (3.6.9)

修复了两个错误,当它们组合在一起时,可能会导致不正确 查询结果。这两种虫子本身都是无害的;仅当 他们组队会造成问题吗?票证 #3581。

2009-01-12 (3.6.8)

添加了对嵌套事务的支持
增强了查询优化器,使其能够使用 多个索引,用于高效处理 WHERE 子句中与 OR 连接的约束。
添加了对使用 SQLITE_ENABLE_FTS3_PARENTHESIS 编译时选项的 FTS3 查询模式中的括号的支持。

2008-12-16 (3.6.7)

在 os_unix.c 中重新组织 Unix 界面
添加了对 Mac OS X 上的“代理锁定”的支持。
更改了 sqlite3_auto_extension() 接口的原型 向后兼容的方式,但可能会导致新的警告 使用该接口的应用程序的构建。
更改了 sqlite3_vfs 对象的 xDlSym 方法的签名 以向后兼容的方式,但可能导致 编译器警告。
按顺序添加了多余的强制转换和变量初始化 禁止出现令人讨厌的编译器警告。
修复了各种小错误。

2008-11-26 (3.6.6.2)

修复了 b 树删除算法中的一个错误,该错误似乎是 能够导致数据库损坏。该错误最初是在 3.6.6 版中由 check-in [5899] 于 2008-11-13 引入的。
修复了磁盘 I/O 错误后可能发生的内存泄漏问题。

2008-11-22 (3.6.6.1)

修复了页面缓存中的一个 bug,该 bug 可能导致数据库损坏 回滚。此错误最初是在版本 3.6.4 中引入的。
另外两个非常小的错误修复

2008-11-19 (3.6.6)

修复阻止 memsys5 编译的 #define
修复了虚拟表提交机制中导致的问题 FTS3 崩溃。工单#3497。
添加应用程序定义的页面缓存
添加了对 VxWorks 的内置支持

2008-11-12 (3.6.5)

将 MEMORY 选项添加到journal_mode编译指示中。
添加了 sqlite3_db_muex() 接口。
添加了 SQLITE_OMIT_TRUNCATE_OPTIMIZATION 编译时选项。
修复了截断优化,以便 sqlite3_changes() 和 sqlite3_total_changes() 接口以及count_changes编译指示返回正确的值。
添加了 sqlite3_extended_errcode() 接口。
现在,即使存在挂起的查询,COMMIT 命令也会成功。 如果存在挂起的增量 BLOB I/O 请求,则返回SQLITE_BUSY。
错误代码更改为 SQLITE_BUSY(而不是 SQLITE_ERROR) 当尝试回滚时,一个或多个查询 仍在等待中。
删除对实验性内存分配器 memsys4 和 忆 6 中。
添加了 SQLITE_ZERO_MALLOC 编译时选项。

2008-10-15 (3.6.4)

在 DELETE 和 UPDATE 语句上添加对 LIMIT 和 ORDER BY 子句的选项支持。仅当SQLite使用SQLITE_ENABLE_UPDATE_DELETE_LIMIT编译时才有效。
添加了用于性能监控的 sqlite3_stmt_status() 接口。
添加 INDEXED BY 子句。
现在,在 Mac OS X 上默认启用 LOCKING_STYLE 扩展
在 PRAGMA journal_mode 中添加了 TRUNCATE 选项
增强了 B 树层中树平衡逻辑的性能。
添加了 genfkey 程序的源代码和文档,用于自动生成 用于强制实施外键约束的触发器。
添加了 SQLITE_OMIT_TRUNCATE_OPTIMIZATION 编译时选项。
SQL 语言文档将转换为使用语法图而不是 BNF。
其他小错误修复

2008-09-22 (3.6.3)

修复了 SELECT DISTINCT 逻辑中由 以前的版本。
其他小错误修复

2008-08-30 (3.6.2)

将寻呼机子系统拆分为单独的寻呼机和 pcache 子系统。
将标识符解析过程分解为单独的文件。
Bug 修复

2008-08-06 (3.6.1)

添加了后备内存分配器,以超额提高速度 在某些工作负载上为 15%。(您的里程可能会有所不同。
在 sqlite3_config() 中添加了 SQLITE_CONFIG_LOOKASIDE 动词以控制 默认的后备配置。
在 sqlite3_status() 接口中添加了动词 SQLITE_STATUS_PAGECACHE_SIZE 和 SQLITE_STATUS_SCRATCH_SIZE。
修改了要删除的SQLITE_CONFIG_PAGECACHE和SQLITE_CONFIG_SCRATCH 缓冲区大小计算中的“+4”幻数。
添加了 sqlite3_db_conf

g() 和 sqlite3_db_status() 接口 在每个数据库连接上分别控制和监视后备分配器。
许多其他性能增强
其他小错误修复

2008-07-16 (3.6.0 测试版)

对虚拟文件系统接口的修改 支持更广泛的嵌入式系统。 有关其他信息,请参阅35to36.html。*** 可能不兼容的更改 ***
所有用于控制编译时选项的 C 预处理器宏 现在以前缀“SQLITE_”开头。这可能需要更改 使用自己的 makefile 和 自定义编译时选项,因此我们将其标记为 *** 可能不兼容的更改 ***
不再支持 SQLITE_MUTEX_APPDEF 编译时选项。 现在可以在运行时添加替代互斥锁实现,使用 带有SQLITE_CONFIG_MUTEX动词的 sqlite3_config() 接口。*** 可能不兼容的更改 ***
处理 IN 和 NOT IN 运算符,这些运算符在其 右侧表达式符合 SQL 标准和其他 SQL 数据库引擎。这是一个错误修复, 但是,由于它有可能破坏依赖 在较旧的 buggy 行为上,我们将其标记为 *** 可能不兼容的更改 ***
为复合子查询生成的结果列名称为 简化为仅显示原始表的列名,并且 省略表名。这使得 SQLite 的运行方式更像其他 SQL 数据库引擎。
添加了用于执行运行时配置的 sqlite3_config() 接口 整个 SQLite 库。
添加了用于查询运行时状态的 sqlite3_status() 接口 有关整个 SQLite 库及其子系统的信息。
添加了 sqlite3_initialize() 和 sqlite3_shutdown() 接口。
SQLITE_OPEN_NOMUTEX选项已添加到 sqlite3_open_v2() 中。
添加了 PRAGMA page_count 命令。
添加了 sqlite3_next_stmt() 接口。
添加了新的 R*Tree 虚拟表

2008-05-14 (3.5.9)

添加了对 journal_mode PRAGMA 和持久性日志的实验支持。
日志模式 PERSIST 是独占锁定模式下的默认行为。
修复了 LEFT JOIN 上的性能回归(请参阅票证 #3015) 这是在 3.5.8 版中错误地引入的。
性能增强:重新设计使用的内部例程 解释和呈现可变长度整数。
修复了 sqlite3_mprintf() 中出现的缓冲区溢出问题 当没有零终止符的字符串传递给“%.*s”时。
始终将 IEEE 浮点 NaN 值转换为 NULL 加工。(票证 #3060)
确保当连接阻塞 RESERVED 锁时 解锁锁后,它能够继续。(票证 #3093)
“configure”脚本现在应该自动配置 Unix 支持大文件的系统。改进了 当遇到大文件并禁用大文件支持时。
避免在磁盘已满或 I/O 错误后缓存页面泄漏
而且,还有更多小错误修复和性能增强。

2008-04-16 (3.5.8)

公开 SQLite 的内部伪随机数生成器 (PRNG) 通过 sqlite3_randomness() 接口
新接口 sqlite3_context_db_handle(),用于返回已调用应用程序定义的数据库连接句柄 SQL 函数。
新接口 sqlite3_limit() 允许大小和长度限制为 基于每个连接和运行时进行设置。
改进了崩溃稳健性:将数据库页面大小写入回滚 日志标题。
允许 VACUUM 命令更改数据库文件的页面大小。
允许 VFS 的 xAccess() 方法返回 -1 信号 内存分配错误。
性能改进:OP_IdxDelete操作码使用解压缩的记录, 无需为每个索引调用一个OP_MakeRecord操作码 记录已删除。
性能改进:常量子表达式被分解为 循环。
性能改进:重用OP_Column的结果,而不是 发出多个OP_Column操作码。
修复了 RTRIM 排序序列中的一个 bug。
修复了导致 SQLITE_SECURE_DELETE 选项中的 bug Firefox 崩溃。安排始终测试SQLITE_SECURE_DELETE 在每次发布之前。
其他其他性能增强功能。
其他杂项小错误修复。

2008-03-17 (3.5.7)

修复了寄存器分配中的 bug(票证 #2927) 复合选择 - 由 3.5.5 版中的新 VM 代码引入。
ALTER TABLE 使用双引号而不是单引号进行引用 文件名。
使用 WHERE 子句减小 UPDATE 或 DELETE 语句。(优化)
如果外部查询是 aggregate,内部查询包含 ORDER BY。(票证 #2943)
其他 OS/2 更新
添加了一个实验性的二次方、首次拟合内存分配器。
从代码中删除所有 sprintf() 实例
接受“Z”作为日期末尾的祖鲁时区 字符串
修复了 LIKE 优化器中最后一个字符时出现的 bug 第一个通配符前面是大写的“Z”
添加了“bitvec”对象,用于跟踪哪些页面具有 被日记。提高速度并减少内存消耗,尤其是 对于大型数据库文件。
让 SQLITE_ENABLE_LOCKING_STYLE 宏在 Mac OS X 上再次运行。
将语句日志存储在临时文件目录中,而不是 与数据库文件并置。
对配置脚本进行了许多改进和清理

2008-02-06 (3.5.6)

修复 bug (票证 #2913) 这阻止了虚拟表在 LEFT JOIN 中工作。 该问题在 3.5.5 版本发布前不久引入。
使 OS/2 移植层保持最新状态。
添加新的 sqlite3_result_error_code() API 并在 实现 ATTACH,以便返回正确的错误代码 当 ATTACH 失败时。

2008-01-31 (3.5.5)

将基础虚拟机转换为基于寄存器的计算机 而不是基于堆栈的机器。唯一用户可见的更改 在 EXPLAIN 的输出中。
添加内置的 RTRIM 排序序列。

2007-12-14 (3.5.4)

修复了 UPDATE 或 DELETE 中的严重 bug,该 bug 在 OR REPLACE 子句或触发器导致同一表中的行 作为副作用被删除。(请参阅工单 #2832。最有可能的 此错误的结果是分段错误,尽管数据库 腐败是可能的。
使 ORDER BY 的处理符合 结果别名和表列名的情况的 SQL 标准 处于冲突之中。正确的行为是首选结果别名。 旧版本的 SQLite 错误地选择了表列。 (请参阅工单 #2822。
VACUUM 命令保留 legacy_file_format Pragma 的设置。 (票证 #2804。
产品化并正式支持 group_concat() SQL 函数。
更好地优化一些 IN 运算符表达式。
添加更改 auto_vacuum 状态的功能 数据库,方法是设置auto_vaccum编译指示并对数据库进行 VACUUMing。
FTS3 中的前缀搜索效率要高得多。
放宽 CLI 中的 SQL 语句长度限制,以便 具有非常大 BLOB 和字符串的数据库的“.dump”输出可以 播放以重新创建数据库。
其他小错误修复和优化。

2007-11-27 (3.5.3)

将网站和文档文件从源代码树中移出到 一个单独的 CM 系统。
修复了 INSERT INTO ...选择。。。语句 其中 SELECT 是复合的。
修复了 BEFORE 触发器中使用的 RAISE(IGNORE) 中长期存在的 bug。
修复了 ~ 运算符的运算符优先级。
在 Win32 上,尝试删除文件时不返回错误 那不存在。
允许引用排序序列名称。
修改 TCL 接口以使用 sqlite3_prepare_v2()。
修复了 malloc()失败后可能发生的多个 bug。
sqlite3_step()返回 SQLITE_MISUSE 而不是在以下情况下崩溃 使用 NULL 参数调用。
FTS3 现在只使用 SQLite 内存分配器。这 FTS3 合并现在可以附加到 SQLite 合并到 生成包含两者的超级合并。
DISTINCT 关键字现在有时会使用 INDEX,如果 适当的索引可用,优化器认为它的用途 可能是有利的。

2007-11-05 (3.5.2)

删除了对 SQLITE_OMIT_MEMORY_ALLOCATION 编译时的支持 选择。
始终使用 Windows 下的FILE_FLAG_RANDOM_ACCESS打开文件。
内置 SUBSTR() 函数的第 3 个参数现在是可选的。
Bug 修复:在 架构更改。
在 mem3.c 中添加了实验性的无 malloc 内存分配器。
虚拟机存储 64 位整数和浮点常量 以二进制而不是文本形式提升性能。
修复 test_async.c 中的争用条件
在CLI中添加了“.timer”命令

2007-10-04 (3.5.1)

注意:我们没有使用术语“alpha”或“beta” 发布,因为代码是稳定的,因为如果我们使用这些术语, 没有人会升级。但是,我们仍然保留使 在将来的版本中对新 VFS 接口的不兼容更改。
修复了处理SQLITE_FULL错误时可能导致的 bug 数据库损坏。工单 #2686。
test_async.c 驱动器现在执行完整文件锁定并正常工作 当由同一数据库上的多个进程同时使用时。
CLI 会忽略行尾的空格(包括注释)
确保查询优化器检查所有术语的依赖项 复合 SELECT 语句。票证#2640。
添加演示代码,演示如何为原始 VFS 构建 VFS 没有文件系统的大容量存储。
向 xGetTempname() 方法添加了输出缓冲区大小参数 VFS 层。
重置寻呼机中的粘性SQLITE_FULL或SQLITE_IOERR错误 当新事务启动时。

2007-09-04 (3.5.0) 阿尔法

重新设计操作系统接口层。有关详细信息,请参阅34to35.html。*** 可能不兼容的更改 ***
sqlite3_release_memory()、sqlite3_soft_heap_limit()、 和 sqlite3_enable_shared_cache() 接口现在可以跨所有工作 进程中的线程,而不仅仅是它们所在的单个线程 被调用。*** 可能不兼容的更改 ***
添加了 sqlite3_open_v2() 接口。
重新实现了内存分配子系统,并使其 可在编译时替换。
创建了一个新的互斥子系统,并使其可在 编译时。
现在,同一数据库连接可以同时由 单独的线程。

2007-08-13 (3.4.2)

修复了 ROLLBACK 命令时可能发生的数据库损坏 bug 在自动真空模式下执行,并设置一个非常小的sqlite3_soft_heap_limit。 工单 #2565。
添加使用小sqlite3_soft_heap_limit运行完整回归测试的功能。
修复了使用小型软堆限制的其他小问题。
GCC bug 32575 的解决方法。
改进了对误用聚合函数的错误检测。
改进了合并生成器脚本,以便所有符号 以 SQLITE_PRIVATE 或 SQLITE_API 为前缀。

2007-07-20 (3.4.1)

修复了 VACUUM 中可能导致 数据库损坏如果两个 进程同时连接到数据库,并且一个进程 VACUUMs,然后另一个修改数据库。
表达式“+column”现在被视为与“column”相同 计算要用于表达式的排序规则序列时。
在TCL语言界面中, “@variable”而不是“$variable”始终绑定为 Blob。
添加了 PRAGMA freelist_count,用于确定自由列表的当前大小。
PRAGMA auto_vacum=incremental 设置现在是永久性的。
将FD_CLOEXEC添加到 Unix 下所有打开的文件。
修复了 min()/max() 优化中应用于 下降指数。
确保 TCL 语言界面在 64 位上正常工作 64 位计算机上的整数。
允许值 -9223372036854775808 作为 SQL 中的整数文本 语句。
在虚拟表中添加“隐藏”列的功能。
在所有上使用宏SQLITE_PRIVATE(默认为“静态”) 合并中的内部功能。
向 FTS2 添加可插拔分词器和 ICU 分词支持
其他小错误修复和文档增强功能

2007-06-18 (3.4.0)

修复了在SQLITE_BUSY错误时可能导致数据库损坏的 bug 发生在显式事务和该事务的中间 后来提交。票证 #2409。
修复了在自动真空模式下可能导致数据库损坏的 bug on 和 malloc() 失败跟随 CREATE TABLE 或 CREATE INDEX 语句 它本身遵循事务中的缓存溢出。看 票证 #2418。
添加了对大小和 SQLite可以处理的事物数量。此更改可能会导致 兼容性问题 极端使用SQLite的应用程序,这就是为什么当前的 版本是 3.4.0 而不是 3.3.18。
添加了对增量 BLOB I/O 的支持。
添加了 sqlite3_bind_zeroblob() API 和 zeroblob() SQL 函数。
添加了对增量真空的支持。
添加了 SQLITE_MIXED_ENDIAN_64BIT_FLOAT 编译时选项以支持 具有愚蠢的字节序的 ARM7 处理器。
从核心库中删除了 sprintf() 和 strcpy() 的所有实例。
在全文搜索扩展中添加了对 Unicode 国际组件 (ICU) 的支持。
在 Windows 操作系统驱动程序中,如果尝试 获取 EXCLUSIVE 锁失败。门票 #2354
修复 REPLACE() 函数,使其在第二个参数 是一个空字符串。票证 #2324。
在 sqlite3_column_blob() 和相关 API 中记录类型转换的危害。修复不必要的类型转换。票证#2321。
TRIM() 函数的国际化。门票 #2323
在内存区域之间移动时,使用 memmove() 而不是 memcpy() 这可能会重叠。门票 #2334
修复了涉及复合 SELECT 中子查询的优化器 bug,该 bug 具有 ORDER BY 和 LIMIT 子句。票证#2339。
sqlite3_snprintf如果缓冲区大小为 小于 1。门票 #2341
修复内置的 printf 逻辑,使其打印“NaN”而不是“Inf” 浮点 NaN。门票 #2345
将 BLOB 转换为 TEXT 时,请使用主数据库的文本编码。 门票 #2349
在强制转换为 数值的。门票 #2364
修复了处理 UTF16 代码点0xE000时的一个 bug
匹配 WHERE 约束时考虑显式 colllate 子句 到查询优化器中的索引。门票 #2391
修复查询优化器以正确处理 LEFT JOIN 的 ON 子句。门票 #2403
修复查询优化器以处理与 NULL 的 rowid 比较 正确。门票 #2404
修复了许多可能由恶意 SQL 引起的潜在段错误 语句。

2007-04-25 (3.3.17)

当数据库标头的“write_version”值大于 库所理解的,使数据库是只读的,而不是 读。
其他小错误修复

2007-04-18 (3.3.16)

修复了导致 VACUUM 在 NULL 中出现时失败的 bug UNIQUE 列。
恢复在 V3.3.14 中添加但在 V3.3.15 中倒退的性能改进。
修复了处理 ORDER BY 表达式的问题 子查询中的复合 SELECT 语句。
修复了在 WinCE 上销毁锁时潜在的段错误 多线程环境。
文档更新。

2007-04-09 (3.3.15)

修复了 3.3.14 中引入的导致 CREATE TEMP TABLE 使数据库连接保持楔入状态。
修复了导致在以下情况下返回额外 NULL 行的 bug 降序查询因对数据库的更改而中断。
触发器上的 FOR EACH STATEMENT 子句现在会导致语法 错误。它曾经被默默地忽略。
修复可能导致的晦涩且相对无害的问题 I/O 错误后发生资源泄漏。
对测试套件进行了许多改进。测试覆盖率现已超过98%

2007-04-02 (3.3.14)

修复 bug (工单 #2273) 当 IN 运算符时,可能会导致段错误 用于两列索引的一个术语和 IN 运算符包含 NULL。
添加了用于确定扇区大小的新操作系统接口方法 基础媒体:sqlite3OsSectorSize()。
一种用于表单语句的新算法 INSERT INTO TABLE1 SELECT * FROM table2 速度更快,可减少碎片。VACUUM 使用 这种形式,因此运行得更快,碎片整理更好。
通过减少磁盘 I/O 来增强性能:
在以下情况下,不要阅读溢出链的最后一页 删除行 - 只需将该页面添加到自由列表即可。
不要将要删除的页面存储在 回滚日志。
不要阅读(无意义的)内容 从自由列表中提取的页面。
不要刷新页面缓存(从而避免 缓存重新填充),除非另一个进程更改了基础 数据库文件。
提交时截断而不是删除回滚日志 独占访问模式下的事务,或提交 TEMP 时的交易 数据库。
添加了对使用“PRAGMA locking_mode=EXCLUSIVE”的独占访问模式的支持
对 寻呼机 - 在具有堆栈空间的嵌入式平台上很有用 局限性。
添加一个生成文件目标“sqlite3.c”,该目标构建一个包含 核心 SQLite 库 C 代码在单个文件中。
编译时让库正常工作 使用 GCC 选项“-fstrict-aliasing”。
删除了残余SQLITE_PROTOCOL错误。
改进了测试覆盖率,修复了其他小错误, 内存泄漏堵塞, 代码重构和/或推荐在更易于阅读的地方。

2007-02-13 (3.3.13)

在sqlite3_analyzer的输出中添加“碎片”测量值。
添加用于显式设置排序规则序列的 COLLATE 运算符 由表达式使用。此功能被视为实验性待处理 其他测试。
一次联接最多允许 64 个表 - 旧限制为 32 个。
添加了两个新的实验函数:randomblob() 和 hex()。 它们的预期用途是促进生成 UUID。
修复了 PRAGMA count_changes 所在的问题 导致使用触发器的表更新结果不正确
修复了 ORDER BY 子句优化器中用于连接的 bug,其中 联接中最左边的表受 UNIQUE 索引的约束。
修复了 TCL 接口的 “copy” 方法中的一个 bug。
修复了 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 优化中的一个错误 - 该错误导致某些 LEFT JOIN 上出现不正确的结果,其中包括 在 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。
修复了命令行 shell 中的“.dump”命令以显示 索引、触发器和视图。
更改table_info编译指示,使其返回默认值的 NULL 如果没有默认值,则为 value
支持 win95 文件名中的非 ASCII 字符
查询优化器增强功能:
Optimizer 在使用索引来满足 ORDER BY 方面做得更好 对整数主键排序的子句
使用索引满足 WHERE 子句中的 IS NULL 运算符
修复了导致优化程序错过 OR 优化的 bug 机会
优化器可以更自由地对 FROM 子句中的表进行重新排序 即使在有 LEFT 连接。
支持将扩展加载添加到 WinCE
允许在表定义中的 DEFAULT 子句上使用约束名称
在命令行 shell 中添加了“.bail”命令
从命令行 shell 生成 CSV(逗号分隔值)输出 更贴近公认的实践
添加了实验性 FTS2 模块
使用 sqlite3_mprintf() 而不是 strdup() 来避免 libc 依赖
VACUUM 使用官方 TEMP 文件夹中的临时文件,而不是 与原始数据库相同的目录
Windows 上临时文件名的前缀从“sqlite”更改为“sqlite” 到“etilqs”。

2006-10-09 (3.3.8)

支持使用 FTS1 模块进行全文搜索(测试版)
添加了 Mac OS X 锁定补丁(测试版 - 默认禁用)
引入扩展错误码,并为各种错误添加错误码 I/O 错误的类型。
添加了对 CREATE/DROP TRIGGER/VIEW 上的 IF EXISTS 的支持
修复回归测试套件,使其与 Tcl8.5 配合使用
增强 sqlite3_set_authorizer() 以提供呼叫通知 SQL 函数。
添加了实验性 API:sqlite3_auto_extension()
各种小错误修复

2006-08-12 (3.3.7)

添加了对虚拟表(测试版)的支持
添加了对动态加载扩展的支持 (beta)
可以为不同的线程调用 sqlite3_interrupt() 例程
添加了 MATCH 运算符。
默认文件格式现在为 1。

2006-06-06 (3.3.6)

在 Windows 上与病毒扫描程序配合得更好
更快:memory:数据库
修复了 UTF-8 到 UTF-16 转换中模糊的段错误
添加了 OS/2 驱动程序
为聚合查询返回的更正列元信息
EXPLAIN QUERY PLAN 的增强输出
LIMIT 0 现在适用于子查询
查询优化器中的错误修复和性能增强
正确处理 ATTACH 和 DETACH 中的 NULL 文件名
改进了分析器中的语法错误消息
修复 IN 运算符的类型强制规则

2006-04-05 (3.3.5)

CHECK 约束正确使用冲突解决算法。
SUM()函数在整数溢出时引发错误。
从最左侧的 SELECT 中选择复合查询中的列名 而不是最右边的。
sqlite3_create_collation()函数 向SQLITE_UTF16_ALIGNED国旗致敬。
SQLITE_SECURE_DELETE编译时选项会导致删除覆盖 带零的旧数据。
检测 abs()中的整数溢出。
random()函数提供 64 位随机性,而不是 只有 32 位。
解析器检测并报告自动机堆栈溢出。
更改 round()函数以返回 REAL 而不是 TEXT。
允许 LEFT OUTER JOIN 的左表中的 WHERE 子句术语 包含聚合子查询。
跳过文本中的前导空格到数字转换。
各种小错误和文档错别字修复,以及 性能增强。

2006-02-11 (3.3.4)

修复了 Unix 互斥锁实现中的一个错误,该错误可能导致 多线程系统上的死锁。
修复 64 位计算机上的对齐问题
添加了 fullfsync 编译指示。
修复了可能导致某些不寻常的 LEFT OUTER JOIN 的优化器错误 给出不正确的结果。
SUM 函数检测整数溢出并转换为累加 使用浮点数的近似结果
主机参数名称可以以“@”开头,以便与 SQL Server 兼容。
其他其他错误修复

2006-01-31 (3.3.3)

删除了对 CREATE INDEX 上的 ON CONFLICT 子句的支持 - 它从不 工作正常,因此不应出现任何向后兼容性 问题。
授权方回调现在通知 ALTER TABLE ADD COLUMN 命令
对 TEMP 数据库架构进行任何更改后,所有准备好的语句 无效,必须使用对 sqlite3_prepare()
为第一个稳定版本做准备的其他小错误修复 版本 3.3

2006-01-24 (3.3.2 测试版)

Bug 修复和速度改进。提高测试覆盖率。
对操作系统层接口的更改:互斥锁现在必须是递归的。
停止使用特定于线程的数据来处理内存不足 异常处理

2006-01-16 (3.3.1 alpha)

无数的错误修复
速度改进
数据库连接现在可以由多个线程使用,而不仅仅是 在其中创建它们的线程。

2006-01-11 (3.3.0 alpha)

CHECK 约束
CREATE/DROP TABLE/INDEX 上的 IF EXISTS 和 IF NOT EXISTS 子句。
DESC指数
更高效地对布尔值进行编码,从而缩小数据库 文件
更具侵略性SQLITE_OMIT_FLOATING_POINT
分离 INTEGER 和 REAL 亲和力
为操作系统接口添加了虚拟功能层
TCL接口新增“exists”方法
改进了对内存不足错误的响应
可以选择在连接之间共享数据库缓存 在同一线程中
可选的 READ UNCOMMITTED 隔离(而不是默认值 SERIALIZABLE的隔离级别)和表级锁定时 数据库连接共享一个公共缓存。

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)

修复了可能导致数据库损坏的 bug,如果 VACUUM(或 autovacuum) 失败,并在数据库上回滚 大于 1GiB
LIKE 优化现在适用于具有 COLLATE NOCASE 的列
ORDER BY 和 GROUP BY 现在使用有限内存
添加了对 COUNT(DISTINCT expr) 的支持
更改 SUM() 处理 NULL 值的方式,以便符合 SQL 标准
尽可能使用 fdatasync() 而不是 fsync() 以加快速度 稍微向上提交
在联接中使用 CROSS 关键字会关闭表重新排序 优化
添加了实验性和未记录的 EXPLAIN QUERY PLAN 功能
在 Windows 中使用 unicode API

2005-08-27 (3.2.5)

修复了影响 DELETE 和 UPDATE 语句的 bug 超过 40960 行。
更改 makefile,使其不再需要 GNUmake 扩展
修复配置脚本上的 --enable-threadsafe 选项
修复了 IN 左侧时发生的代码生成器 bug 运算符是常量,右侧是 SELECT 语句
PRAGMA synchronous=off 语句现在禁用同步 除了正常回滚日志之外,主日志文件

2005-08-24 (3.2.4)

修复了上一版本中引入的 bug 这可能会导致在生成代码时出现段错误 对于复杂的 WHERE 子句。
允许浮点文字以小数点开头或结尾。

2005-08-21 (3.2.3)

添加了对 CAST 运算符的支持
Tcl 接口允许将 BLOB 值传输到用户定义的 功能
在 Tcl 接口中添加了 “transaction” 方法
允许列的 DEFAULT 值调用具有常量的函数 操作
添加了 ANALYZE 命令,用于收集有关索引和 在优化器中选取索引时使用这些统计信息
删除对 WHERE 子句
IN 运算符的右侧现在可以是表达式列表 而不仅仅是一个常量列表
重新设计优化器,使其能够更好地利用索引
联接中表的顺序会自动调整,使 更好地使用索引
IN 运算符现在是优化的候选者,即使左手 side 不是索引的最左边的项。多个 IN 运算符可以是 与相同的索引一起使用。
使用 BETWEEN 和 OR 的 WHERE 子句表达式现在是候选项 用于优化
添加了“case_sensitive_like”杂注和SQLITE_CASE_SENSITIVE_LIKE compile-time 选项将其默认值设置为“on”。
使用索引来帮助处理 GLOB 表达式和 LIKE 表达式 启用case_sensitive_like编译指示时
添加了对重音引用的支持,以便与 MySQL 兼容
提高测试覆盖率
数十个小错误修复

2005-06-12 (3.2.2)

添加了 sqlite3_db_handle() API
添加了 sqlite3_get_autocommit() API
向解析器添加了 REGEXP 运算符。没有功能可以后退 在标准构建中提升此运算符,但用户可以使用 sqlite3_create_function()
提高速度并减少磁带库占用空间。
修复 64 位体系结构上的字节对齐问题。
许多小错误修复和文档更新。

2005-03-29 (3.2.1)

修复了新 ADD COLUMN 注释中的内存分配错误。
文档更新

2005-03-21 (3.2.0)

添加了对 ALTER TABLE ADD COLUMN 的支持。
添加了对 ISO-8601 日期/时间字符串中“T”分隔符的支持。
改进了对 Cygwin 的支持。
大量错误修复和文档更新。

2005-03-17 (3.1.6)

修复了插入时可能导致数据库损坏的 bug 记录到包含大约 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)

修复了 autovacuum 中可能导致数据库损坏的 bug,如果出现以下情况: CREATE UNIQUE INDEX 因违反约束而失败。 仅当引入新的自动真空功能时,才会发生此问题 版本 3.1 已打开。
F_FULLSYNC ioctl(目前仅在 Mac OS X 上受支持)已禁用 如果同步编译指示设置为“full”以外的其他值。
为将来的 V3.2 数据库添加额外的向前兼容性 文件格式。
修复了 (rowid<'2') 形式的 WHERE 子句中的一个 bug
添加了新的 SQLITE_OMIT_... 编译时选项
手册页的更新
从 shell 中删除 strcasecmp() 的使用
Windows DLL 导出符号 Tclsqlite_Init 和 Sqlite_Init

2005-02-19 (3.1.3)

修复了数据库的 VACUUM 问题,其中的表包含 AUTOINCREMENT 已被删除。
添加对将来的 V3.2 数据库文件的向前兼容性 格式。
文档更新

2005-02-15 (3.1.2)

修复了可能导致数据库损坏的 bug(如果存在两个问题) 打开与同一数据库的连接,一个连接执行 VACUUM 第二个对数据库进行了一些更改。
允许在 LIMIT 子句中使用 “?” 参数。
修复 VACUUM,使其与 AUTOINCREMENT 配合使用。
修复了 AUTOVACUUM 中可能导致数据库损坏的争用条件
将数字版本号添加到 sqlite3.h 包含文件中。
其他小错误修复和性能增强。

2005-02-15 (2.8.16)

修复了可能导致数据库损坏的 bug(如果存在两个问题) 打开与同一数据库的连接,一个连接执行 VACUUM 第二个对数据库进行了一些更改。
正确处理 CREATE INDEX 语句中的引号名称。
修复了 sqlite.h 和 sqlite3.h 之间的命名冲突。
复制表达式时避免过多的堆使用。
其他小错误修复。

2005-02-01 (3.1.1 测试版)

TCL接口中预准备语句的自动缓存
ATTACH 和 DETACH 以及其他一些操作导致存在 准备过期的语句。
许多小错误修复

2005-01-21 (3.1.0 ALPHA)

添加了自动真空支持
添加了CURRENT_TIME、CURRENT_DATE和CURRENT_TIMESTAMP
添加了对 EXISTS 子句的支持。
添加了对相关子查询的支持。
在 LIKE 运算符上添加了 ESCAPE 子句。
支持 ALTER TABLE ...重命名表...添加
INTEGER PRIMARY KEY 支持的 AUTOINCREMENT 关键字
许多SQLITE_OMIT_宏插入以在编译时省略功能 并减少库占用空间。
添加了 REINDEX 命令。
如果可以,引擎不再查阅主表 它需要从索引中获得的所有信息。
修复了许多令人讨厌的错误。

2004-10-12 (3.0.8)

添加对 DEFERRED、IMMEDIATE 和 EXCLUSIVE 事务的支持。
允许在以下情况下创建新的用户定义函数 已有一个或多个预编译的 SQL 语句。
修复了 MinGW/MSYS 的可移植性问题。
修复了 64 位 Sparc 计算机上的字节对齐问题。
修复 shell 的“.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() 回调发生在每个语句之前 执行,而不是在编译语句时执行。
Makefile 更新和其他错误修复。

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) 导致繁忙 当存在 RESERVED 锁的争用时调用的处理程序。
各种错误修复和优化

2004-08-09 (3.0.4 测试版)

CREATE TABLE 和 DROP TABLE 现在可作为预处理语句正常工作。
修复了 VACUUM 和 UNIQUE 索引中的一个 bug。
将“.import”命令添加到命令行 shell。
修复了一个 bug,该 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)

Alpha 版本 - 仅供研究和测试使用 ***
很多错误修复。

2004-06-18 (3.0.0 alpha)

Alpha 版本 - 仅供研究和测试使用 ***
支持国际化,包括 UTF-8、UTF-16 和 用户定义的排序序列。
新文件格式,在典型使用中缩小了 25% 到 35%。
改进了并发性。
ATTACHed 数据库的原子提交。
从 API 中删除 cruft。
BLOB 支持。
64 位 rowid。
更多信息。

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 运算符中的 NULL。
添加全局变量sqlite_temp_directory如果设置了该变量,则定义 存储临时文件的目录。
sqlite_interrupt()与 VACUUM 配合得很好。
其他小错误修复。

2004-03-08 (2.8.13)

重构部分代码以使代码占用空间 较小。代码现在也快了一点。
sqlite_exec()现在作为 sqlite_compile()的包装器实现 和 sqlite_step()。
内置的 min()和 max()函数现在支持 NUMERIC 和 TEXT 数据类型。以前,min()和 max()总是假设 他们的参数类型为 NUMERIC。
内置日期/时间函数的新 HH:MM:SS 修饰符。
添加了实验性 sqlite_last_statement_changes() API。固定 last_insert_rowid() 函数,以便它能够正常工作 触发器。
为数据库加密 API 添加函数原型。
修复了几个令人讨厌的错误。

2004-02-08 (2.8.12)

修复了一个 bug,该 bug 在电源故障时可能会损坏回滚日志 或外部程序停止发生在 COMMIT 的中间。腐败者 日志在回滚时可能会导致数据库损坏。
减小尺寸,提高各种模块的速度,特别是 虚拟机。
允许“<expr> IN <table>” 作为 “<expr> in (从<表中选择 *>”。
对 sqlite_mprintf() 例程的优化。
确保 MIN() 和 MAX() 优化在子查询中起作用。

2004-01-14 (2.8.11)

修复了 IN 运算符如何处理子查询中的 NULL 的 bug。错误 是由上一版本引入的。

2004-01-14 (2.8.10)

修复了 Unix 上由以下事实引起的潜在数据库损坏问题 每当您关闭 () 文件时,所有 POSIX 咨询锁都会被清除。 解决它的方法是在锁时禁止所有 close() 调用 优秀。
对 COUNT(*) 的某些极端情况进行了性能增强。
如果 malloc() 失败,请确保内存中的后端响应正常。
允许从用户定义的 SQL 中调用 sqlite_exec() 功能。
提高了使用“长双精度”进行浮点转换的准确性。
修复了实验日期/时间函数中的错误。

2004-01-06 (2.8.9)

修复可能导致损坏的 32 位整数溢出问题 如果负数较大(小于 -2147483648),则数据库中的索引 入到索引的数字列中。
修复了多线程 Linux 实现上的锁定问题。
始终使用“.”而不是“”作为小数点,即使区域设置 请求 “,”。
添加了 UTC 到本地时间的实验日期/时间转换 功能。
修复了日期/时间函数的 Bug。

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 运算符作为函数工作。
其他次要文档和 makefile 更改和错误修复。

2003-08-22 (2.8.6)

已将 CVS 存储库移至 www.sqlite.org
更新 NULL 处理文档。
添加了实验日期/时间函数。
Bug 修复:正确评估视图的视图,而不会出现段错误。
Bug 修复:如果删除了 与表同名的触发器。
Bug 修复:允许 VACUUM(无段错误)在空 数据库后设置EMPTY_RESULT_CALLBACKS pragma。
Bug 修复:如果整数值不适合 32 位 int,请将其存储在 取而代之的是双倍。
Bug 修复:确保日志文件目录条目已提交到磁盘 在写入数据库文件之前。

2003-07-22 (2.8.5)

使 LIMIT 适用于复合 SELECT 语句。
LIMIT 0 现在不显示任何行。使用 LIMIT -1 查看所有行。
正确处理 INTEGER PRIMARY KEY 和 浮点数。
修复了新的 ATTACH 和 DETACH 命令中的几个重要错误。
更新了 NULL 处理文档。
允许 sqlite_compile() 和 sqlite_step() 中的 NULL 参数。
许多小错误修复

2003-06-29 (2.8.4)

增强了“PRAGMA integrity_check”命令以验证索引。
为新的 ATTACH 和 DETACH 命令添加了授权挂钩。
许多文档更新
许多小错误修复

2003-06-04 (2.8.3)

修复了以下情况下会损坏表上的索引的问题: 在表上执行 INSERT OR REPLACE 或 UPDATE OR REPLACE 包含一个整数主键以及一个或多个索引。
修复了 Windows 锁定代码中的一个 bug,以便锁定正常工作 当 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()。它的功能是 包含在新的 ATTACH 命令中。
更改了 ON CONFLICT 子句的优先顺序,以便 BEGIN 语句上的 ON CONFLICT 子句的优先级高于 关于约束的 ON CONFLICT 子句。
许多错误修复和兼容性增强。

2003-02-16 (2.8.0)

修改了日志文件格式,使其更耐损坏 这可能发生在操作系统崩溃或电源故障之后。
添加了一个新的 C/C++ API,该 API 不使用回调返回数据。

2003-01-25 (2.7.6)

性能改进。库现在快了。
添加了 sqlite_set_authorizer() API。正式文件有 未编写 - 请参阅源代码注释以获取有关 如何使用此功能。
修复了 GLOB 运算符中阻止其工作的 bug 使用大写字母。
修复了各种小错误。

2002-12-28 (2.7.5)

修复 pager.c 中一个未初始化的变量,该变量可以(概率为 约1/40亿)导致数据库损坏。

2002-12-17 (2.7.4)

数据库文件现在可以增长到最多 2^41 字节。旧限制 是 2^31 字节。
优化器现在将反向扫描表,如果这样做会 满足订单 BY ...DESC 条款。
现在,即使 相对路径被传递到 sqlite_open() 中。这允许 在 chdir() 之后继续正常运行的库。
VDBE的速度改进。
很多小错误修复。

2002-10-31 (2.7.3)

各种编译器兼容性修复。
修复了“expr IN ()”运算符中的一个错误。
接受括号中的列名。
修复了 VDBE 中的字符串内存管理问题
修复了“table_info”编译指示中的一个错误
在 Windows DLL 中导出 sqlite_function_type() API 函数
修复 Windows 下的锁定行为
修复 LEFT OUTER JOIN 中的一个 bug

2002-09-25 (2.7.2)

防止大型事务的日志文件溢出。
修复 sqlite_open() 失败时发生的内存泄漏。
遵循 SELECT 的 ORDER BY 和 LIMIT 子句,即使 结果集用于 INSERT。
不要在用于保存 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)

添加读取 little-endian 和 big-endian 数据库的功能。 因此,在SunOS或Mac OS X下创建的数据库可以被读取和写入 在 Linux 或 Windows 下,反之亦然。
转换为新网站:https://www.sqlite.org/
允许事务跨 Linux 线程
修复了处理 GROUP BY 查询的 ORDER BY 子句时的 bug

2002-07-31 (2.6.2)

COPY 命令读取的文本文件现在可以具有行终止符 LF、CRLF 或 CR。
如果在数据库期间遇到SQLITE_BUSY,则会正确处理 初始化。
修复了 TEMP 表上的 UPDATE 触发器。
文档更新。

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。 此错误是由 freelist 在 2.4.0 版中引入的 checkin [410] 的优化。
修复了 VIEW 聚合函数中的一个 bug。
其他小的更改和增强。

2002-07-01 (2.5.4)

再次将“AS”关键字设为可选。
列的数据类型现在出现在 回调。
添加了 sqlite_open_aux_file() API,尽管它仍然是 大多没有记录和未经测试。
添加了额外的测试用例并修复了一些错误,这些 找到测试用例。

2002-06-25 (2.5.3)

Bug 修复:由于优化,可能会发生数据库损坏 这是在版本 2.4.0 中引入的(签入 [410])。问题 现在应该已修复。版本 2.4.0 到 2.5.2 的使用是不推荐。

2002-06-25 (2.5.2)

添加了记录架构的新SQLITE_TEMP_MASTER表 对于临时表,就像 SQLITE_MASTER 对 持久表。
添加了对 UNION ALL 的优化
修复了 LEFT OUTER JOIN 处理过程中的一个错误
LIMIT 子句现在适用于子选择
ORDER BY 适用于子选择
有一个新的 TypeOf() 函数用于确定表达式是否 是数字或文本。
自动增量现在适用于 SELECT 中的 INSERT。

2002-06-19 (2.5.1)

查询优化器现在尝试实现 ORDER BY 子句 使用索引。如果索引不合适,则仍使用排序 可用。

2002-06-17 (2.5.0)

添加了对行触发器的支持。
添加了符合 SQL-92 的 NULL 处理。
添加对完整 SQL-92 联接语法和 LEFT OUTER 联接的支持。
双引号字符串解释为列名,而不是文本文本。
解析(但不实现)外键。
分析器、寻呼程序和 WHERE 子句代码的性能改进 发电机。
使 LIMIT 子句适用于子查询。(ORDER BY仍然没有 不过,工作。
添加了 “%Q” 扩展到 sqlite_*_printf()。
错误修复不胜枚举(请参阅更改日志)。

2002-05-10 (2.4.12)

添加了用于检测何时调用库 API 例程的逻辑 的序列。

2002-05-08 (2.4.11)

Bug 修复:未生成结果集中的列名 对于某些(相当复杂的)视图是正确的。这可能会导致 在某些情况下出现段错误。

2002-05-03 (2.4.10)

Bug 修复:使用复合 SELECT 时生成正确的列标题 作为子查询。
添加了 sqlite_encode_binary() 和 sqlite_decode_binary() 函数 源树。但它们尚未链接到库中。
文档更新。
从 Windows DLL 导出 sqlite_changes() 函数。
Bug 修复:不要尝试对查询进行子查询扁平化优化 缺少 FROM 子句。这样做会导致段错误。

2002-04-22 (2.4.9)

修复了导致 SQLITE.EXE 的预编译二进制文件的 bug 在 Windows 98 下报告“内存不足”。

2002-04-20 (2.4.8)

确保 VIEW 是在 shell 中 .dump 命令的输出。
速度改进:不要对 TEMP 表执行同步更新。
对 shell 进行了许多改进和增强。
使 GLOB 和 LIKE 运算符成为可覆盖的函数 由程序员提供。例如,这允许 LIKE 运算符 更改为区分大小写。

2002-04-12 (2.4.7)

添加将 TABLE.* 放入 SELECT 语句。
允许不带 FROM 子句的 SELECT 语句。
添加了 last_insert_rowid() SQL 函数。
不计算发生 IGNORE 冲突解决的行 行计数。
确保 INSERT 的 VALUES 子句中的函数表达式 是正确的。
添加了 sqlite_changes() API 函数以返回数字 的行,在最近的操作中发生更改。

2002-04-02 (2.4.6)

Bug 修复:正确处理联接的 WHERE 子句中的术语 不包含比较运算符。

2002-04-02 (2.4.5)

Bug 修复:正确处理 WHERE 子句中出现的函数 的联接。
设置 PRAGMA vdbe_trace=ON 后,正确打印 P3 操作数 值,当它是指向结构的指针而不是指向的指针时 一个字符串。
将显式 NULL 插入 INTEGER PRIMARY KEY 时,转换 将 NULL 值自动转换为唯一键。

2002-03-30 (2.4.4)

允许“VIEW”作为列名
添加了对 CASE 表达式的支持(来自 Dan Kennedy 的补丁)
在交付中添加了 RPMS(来自 Doug Henry 的补丁)
修复文档中的错别字
使用以下方法将配置管理切换到新的 CVS 存储库 它自己的 CVSTrac 错误跟踪系统。

2002-03-23 (2.4.3)

修复了 SELECT 中将化合物 SELECT 用作 SELECT 的 FROM 中的子查询。
sqlite_get_table() 函数现在返回错误,如果 给它两个或多个返回不同列数的 SELECT。

2002-03-20 (2.4.2)

Bug修复:修复了当ROWID为列时发生的断言失败 在视图的 SELECT 语句中。
Bug 修复:修复了 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 并使其在所有编译中都可用。
没有 WHERE 或 GROUP BY 的索引列的 SELECT min() 或 max() 子句作为特殊情况处理,避免了完整的表扫描。
自动生成的 ROWID 现在是顺序的。
不允许命令行 shell 的 dot-commands 出现在 真实 SQL 命令的中间。
对 Lemon 解析器生成器的修改,以便解析器表 小 4 倍。
添加了对用 C 语言实现的用户定义函数的支持。
添加了对新函数的支持:coalesce()、lower()、upper() 和 random()
添加了对 VIEW 的支持。
添加了子查询扁平化优化器。
修改了 B-Tree 和 Pager 模块,使磁盘页面不 包含真实数据(免费页面)不记录,也不 当它们发生变化时,从内存写回磁盘。这不会 影响数据库完整性,因为 页面不包含任何真实数据,但它确实会进行大型 INSERT 操作 速度快约 2.5 倍,大型删除速度快约 5 倍。
使CACHE_SIZE编译指示持久化
添加了 SYNCHRONOUS 编译指示
修复了导致事务内更新失败的 bug,该 bug 在以下情况下 数据库包含一个临时表。

2002-02-19 (2.3.3)

允许在方括号中引用标识符,以实现兼容性 使用 MS-Access。
添加了对 SELECT 的 FROM 子句中的子查询的支持。
在 Windows 下更有效地实现 sqliteFileExists()。 (作者:Joel Luscy)
INSERT 的 VALUES 子句现在可以包含表达式,包括 标量 SELECT 子句。
添加了对 CREATE TABLE AS SELECT 的支持
Bug 修复:在单个表中创建和删除所有表 事务不起作用。

2002-02-14 (2.3.2)

Bug 修复:pager.c 中存在不正确的 assert()。真正的代码是 全部正确(据了解),所以如果你的话,一切应该都可以正常工作 使用 -DNDEBUG=1 进行编译。当断言未被禁用时,有 可能是故障。

2002-02-13 (2.3.1)

Bug 修复:如果“PRAGMA full_column_names=ON;”是 设置,然后执行了一个使用 rowid 的查询,如下所示: “SELECT rowid, * FROM ...”。

2002-02-03 (2.3.0)

修复了 INSERT 命令中导致数据丢失的严重错误 如果数据源是 SELECT 和 INSERT,则进入错误的列 子句以默认值以外的某种顺序指定其列。
添加了解决约束冲突的能力,除了 中止和回滚。请参阅有关“ON CONFLICT”的文档 子句了解详情。
临时文件现在由操作系统自动删除 关闭时。程序上不再有悬而未决的临时文件 崩溃。(如果操作系统崩溃,fsck 将在重新启动后删除文件 在 Unix 下。我不知道在Windows下会发生什么。
遵循 NOT NULL 约束。
COPY 命令将 NULL 放在数据为“\N”的列中。
在 COPY 命令中,反斜杠现在可用于转义换行符。
添加了SANITY_CHECK编译指示。

2002-01-28 (2.2.5)

重要 bug 修复:如果 left-hand 或 right-hand side 派生自 INTEGER PRIMARY KEY。
不要在 sqlite 命令行访问程序的输出中转义反斜杠“\”字符。

2002-01-22 (2.2.4)

SELECT 列列表中 AS 右侧的标签现在可以 用作 WHERE、ORDER BY、GROUP BY 和/或 表达式的一部分 HAVING 子句。
修复了 sqlite 命令的 -separator 命令行选项中的一个 bug。
修复了将大写字符串与 大于“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)

Bug 修复:当具有索引的临时表时,断言失败 与由单独进程创建的永久表同名。
Bug 修复:更新了包含 INTEGER PRIMARY KEY 和 索引可能会失败。

2002-01-09 (2.2.1)

Bug 修复:尝试删除具有 WHERE 的表的单行 当不存在这样的 rowid 时,“ROWID=x”的子句会导致错误。
Bug 修复:将 NULL 作为第 3 个参数传递给 sqlite_open() 有时会导致核心转储。
Bug修复:DROP TABLE后跟一个同名的CREATE TABLE all 在单个事务中导致核心转储。
来自 A. Rottmann 的 Makefile 更新

2001-12-22 (2.2.0)

INTEGER PRIMARY KEY 类型的列实际上用作主列 键在表的基础 B 树表示中。
发现并修复了几个晦涩难懂的、不相关的错误,同时 实现了上一个项目符号的整数主键更改。
添加了将“*”指定为较大列列表的一部分的功能 SELECT 语句的结果部分。例如:“SELECT rowid, * FROM table1;”。
对注释和文档的更新。

2001-12-15 (2.1.7)

修复了 CREATE TEMPORARY TABLE 中的一个 bug,该 bug 导致 表最初要在主数据库文件中分配 的。此错误可能导致库 遭受断言失败,并可能导致 主数据库文件。
修复了 b 树子系统中的一个 bug,该 bug 有时可能导致第一个 在数据库扫描期间要重复的表的行。

2001-12-14 (2.1.6)

再次修复锁定机制以防止 sqlite_exec() 返回SQLITE_PROTOCOL 不必要地。这次的 bug 是 锁定代码。此更改会影响 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 shell
常见问题解答的更新

2001-11-24 (2.1.3)

修复比较运算符的行为 (例如:“<”、“==”等) 以便它们与索引中条目的顺序一致。
正确处理大于 的 SQL 表达式中的整数 什么可以用机器整数表示。

2001-11-23 (2.1.2)

支持 64 位体系结构的更改。
修复锁定协议中的一个 bug。
修复一个可能(很少)导致数据库变为 由于SQLITE_MASTER损坏,DROP TABLE后无法读取 桌子。
更改代码,以便呈现的 V2.1.1 数据库 无法读取的上述错误可以被这个版本读取 即使SQLITE_MASTER表是(略微)的库 损坏。

2001-11-13 (2.1.1)

Bug 修复:有时任意字符串会传递到回调 函数,当列的实际值为 NULL 时。

2001-11-12 (2.1.0)

更改数据记录的格式,使记录大小最大为 16MB 可以存储。
更改索引的格式,以便更好地优化查询。
实施“LIMIT ...偏移......”SELECT 语句上的子句。

2001-11-03 (2.0.8)

使 API 函数中的选定参数成为 const。这应该 完全向后兼容。
文档更新
通过限制分拣机的数量来简化VDBE的设计 并列出 1。 在实践中,无论如何都只使用过一台分拣机和一份清单。

2001-10-22 (2.0.7)

任何 UTF-8 字符或ISO8859字符都可以用作 标识符。
Christian Werner 提供的补丁,用于改进 ODBC 兼容性,并 修复了 round() 函数中的一个 bug。
堵住一些在malloc()失败时会发生的内存泄漏。 只要 malloc() 工作。
对某些测试脚本进行了更改,以便它们在 Windows 上运行 除了 Unix。

2001-10-19 (2.0.6)

添加了EMPTY_RESULT_CALLBACKS编译指示
支持列名和表名中的 UTF-8 和 ISO8859 字符。
Bug 修复:使用FULL_COLUMN_NAMES编译指示计算正确的表名 已打开。

2001-10-15 (2.0.5)

添加了COUNT_CHANGES编译指示。
更改了FULL_COLUMN_NAMES编译指示以帮助 ODBC 驱动程序。
Bug 修复:“SELECT count(*)”为空表返回 NULL。 现在它返回 0。

2001-10-13 (2.0.4)

Bug 修复:一个晦涩难懂且相对无害的 Bug 导致了 打开 GCC 优化时测试失败。此版本 解决了问题。

2001-10-13 (2.0.3)

Bug修复:sqlite_busy_timeout() 函数延迟 1000 在失败之前的时间太长了。
Bug 修复:如果保存数据库的磁盘出现断言失败 由于其他原因,文件已满或停止接受写入。 添加了新的测试以检测将来的类似问题。
添加了新的运算符:&(按位和)|(按位或)、~(一补码)、<<(左移)、>>(右移)。
添加了新函数:round() 和 abs()。

2001-10-09 (2.0.2)

修复锁定协议中的两个 bug。(一个是掩饰另一个。
删除了一些导致问题的未使用的“#include” 对于 VC++。
修复了sqlite.h,使其可以从C++中使用
添加了FULL_COLUMN_NAMES编译指示。设置为“ON”时,名称 列以 TABLE 的形式报告回去。COLUMN 而不仅仅是 COLUMN。
添加了 TABLE_INFO() 和 INDEX_INFO() 编译指示以帮助支持 ODBC 接口。
添加了对 TEMPORARY 表和索引的支持。

2001-10-02 (2.0.1)

从 btree.c 中删除一些 C++ 样式注释,以便编译 使用 GCC 以外的编译器。
如果嵌入了 shell 的“.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-alpha-4)

合并 A. Rottmann 的 makefile 补丁以使用 LIBTOOL

2001-09-27 (2.0-alpha-3)

SQLite 现在支持 CREATE UNIQUE INDEX 中的 UNIQUE 关键字。主要 密钥必须是唯一的。
文件格式改回 alpha-1 的格式
修复了回滚和锁定行为

2001-09-20 (2.0-alpha-2)

版本 2.0 的初始版本。重命名库的想法 放弃了“SQLus”,转而保留“SQLite”名称和 颠簸主版本号。
重新添加了寻呼机和 btree 子系统。他们现在是唯一的 可用的后端。
删除了 Dbbe 抽象以及 GDBM 和内存驱动程序。
所有代码的版权均不予保留。该库现在位于 公有土地。

2001-07-23 (1.0.32)

删除了寻呼机和 btree 子系统。这些将在后续中使用 名为“SQLus”的 SQL Server 库。
添加使用带引号的字符串作为表名和列名的功能 表达 式。

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、OID 和 _ROWID_,这些列名称指的是 与每个表的每一行关联的唯一随机整数键。
向回归套件中添加了其他测试,以涵盖新的 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 的一个不相关(和次要)错误。算法 用于确定将“memory:”数据库的临时文件放在哪里 工作不太正常。

2001-02-19 (1.0.22)

之前的修复不太正确。这个似乎效果更好。

2001-02-19 (1.0.21)

当 WHERE 子句包含 使用索引可以满足的一些术语和其他术语 无法。已修复。

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 语句中,约束之间不需要逗号。
在 shell 中添加了“-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() API
由于上述更改,更新了文档。
修改了 sqlite shell 以使用新的 sqlite_get_table() 用于打印表列表的 API 在多列中,类似于“ls”打印文件名的方式。
修改了 sqlite shell 以在 “.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 程序中导致 输出模式为“列”且第一行时的 coredump 的数据包含 NULL。

2000-08-22 (1.0.3)

在 sqlite shell 中,打印“数据库打开只读”消息 改为 stderr 而不是 stdout。
在sqlite shell中,现在在初始启动时打印版本号。
将 sqlite_version[] 字符串常量添加到库中
Makefile 更新
Bug 修复:为以下内容生成了不正确的 VDBE 代码 circumstance:对包含 WHERE 子句的索引表的查询 一个 IN 运算符,其右侧有一个子查询。

2000-08-18 (1.0.1)

修复了配置脚本中的一个错误。
对网站进行了小幅修改。

2000-08-17 (1.0)

更改 sqlite 程序,使其可以读取 缺少写入权限的数据库。(它曾经是 如果无法写入,则拒绝所有访问。

2000-08-09

将回车符视为空格。

2000-08-08

在 “sqlite” 中添加了模式匹配到 “.table” 命令 命令 shell。

2000-08-04

文档更新
在 Tcl 接口中添加了 “busy” 和 “timeout” 方法

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

添加了复合选择运算符:UNION、UNION ALL、INTERSECT和EXCEPT
添加了对在表达式中使用 (SELECT ...) 的支持
添加了对 IN 和 BETWEEN 运算符的支持
添加了对 GROUP BY 和 HAVING 的支持
NULL 值现在作为 NULL 指针报告给回调 而不是空字符串。

2000-06-03

添加了对表列的默认值的支持。
提高测试覆盖率。修复了 改进了测试。

2000-06-02

要通过 UPDATE、INSERT 或 DELETE 修改的所有数据库文件都是 现在在对任何文件进行任何更改之前锁定。 这使得访问(我认为)安全 来自多个进程的同一数据库同时存在。
代码看起来很稳定,所以我们现在称它为“beta”。

2000-06-01

更好地支持文件锁定,以便两个或多个进程 (或线程) 可以同时访问同一个数据库。需要做更多的工作 不过,这个区域。

2000-05-31

添加了对聚合函数的支持(例如:COUNT(*)、MIN(...)) 添加到 SELECT 语句。
添加了对 SELECT DISTINCT ...

2000-05-30

添加了 LIKE 运算符。
添加了一个 GLOB 运算符:类似于 LIKE,但它使用 Unix shell 通配通配符而不是“%” 和 SQL 的 '_' 通配符。
添加了以 PostgreSQL 为模式的 COPY 命令,以便 SQLite 现在可以读取 pg_dump 数据库转储实用程序的输出 PostgreSQL 的。
添加了一个 VACUUM 命令,用于调用基础数据库上的 gdbm_reorganize() 函数 文件。
还有很多很多错误修复......

2000-05-29

Alpha 代码的首次公开发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/537617.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WPS制作表格热图

最近看到一篇文献使用了表格热图&#xff0c;于是想着用wps制作一个类似的。表格热图可以使表格中的数字大小变得更加直观。 参考文献原文&#xff1a;Miller, O.L., Helman, D., Tal Svoray, Morin, E., Bonfil, D.J., 2019. Explicit wheat production model adjusted for s…

2024/4/2—力扣—栈的最小值

代码实现&#xff1a; typedef struct node {int val;struct node *next; } Node;typedef struct {struct node *top;int min; } MinStack;/** initialize your data structure here. */MinStack* minStackCreate() {MinStack *obj malloc(sizeof(*obj));obj->top NULL;ob…

Failure Unable to retrieve image details-解决Portainer与Docker v26不兼容问题

文章目录 前言解决过程解决方法一解决方法二 前言 今天登上服务器习惯性的升级了yum软件包&#xff0c;结果这一更新后导致Portainer不能正常使用&#xff0c;后续进行成功解决&#xff0c;简单记录一下 解决过程 事故过程模拟 当时顺手升级下docker版本(V26.0.1) 结果Porta…

Golang 状态机设计模式

本文介绍了Golang状态机模式的一个实现示例&#xff0c;通过该模式&#xff0c;可以解耦调用链&#xff0c;有助于实现测试友好的代码&#xff0c;提高代码质量。原文: Go State Machine Patterns 导言 在我们开发的许多项目中&#xff0c;都需要依赖某种运行状态从而实现连续操…

LeetCode-62. 不同路径【数学 动态规划 组合数学】

LeetCode-62. 不同路径【数学 动态规划 组合数学】 题目描述&#xff1a;解题思路一&#xff1a;动态规划&#xff0c;动规五部曲解题思路二&#xff1a;动态规划&#xff08;版本二&#xff09;解题思路三&#xff1a;数论 题目描述&#xff1a; 一个机器人位于一个 m x n 网…

麦肯锡问题分析七步法

麦肯锡七步分析法又称“七步分析法”是麦肯锡公司根据他们做过的大量案例&#xff0c;总结出的一套对商业机遇的分析方法。它是一种在实际运用中&#xff0c;对新创公司及成熟公司都很重要的思维、工作方法。麦肯锡问题分析7步法为企业提供了一个结构化的问题解决框架&#xff…

分类算法(数据挖掘)

目录 1. 逻辑回归&#xff08;Logistic Regression&#xff09; 2. 支持向量机&#xff08;Support Vector Machine, SVM&#xff09; 3. 决策树&#xff08;Decision Tree&#xff09; 4. 随机森林&#xff08;Random Forest&#xff09; 5. K近邻&#xff08;K-Nearest …

Mongodb入门--头歌实验MongoDB 复制集 分片

一、MongoDB之副本集配置 1.1MongoDB主从复制 主从复制是MongoDB最早使用的复制方式&#xff0c; 该复制方式易于配置&#xff0c;并且可以支持任意数量的从节点服务器&#xff0c;与使用单节点模式相比有如下优点&#xff1a; 在从服务器上存储数据副本&#xff0c;提高了数…

【已解决】VMware Horizon Client: 无法建立安全加密链路连接

文章目录 问题原因解决方法方法1&#xff1a;在HTTPS拦截中添加VMware忽略列表 (推荐)方法2&#xff1a; 只拦截 浏览器进程的请求 / 取消 HTTPS 拦截&#xff08;如果没有拦截HTTPS的必要 / 只针对浏览器请求&#xff0c;可以使用此方法&#xff09; 当前使用mac 编辑&#xf…

淘宝扭蛋机小程序:扭出惊喜,乐享购物新体验

在快节奏的现代生活中&#xff0c;人们总是在寻找新鲜、有趣的娱乐方式。淘宝扭蛋机小程序应运而生&#xff0c;为您带来前所未有的购物与娱乐结合新体验。在这里&#xff0c;每一次的扭动都充满惊喜&#xff0c;每一次的点击都带来乐趣&#xff0c;让您在购物的同时&#xff0…

OpenResty,Nginx实现接口验签与黑名单控制

介绍 nginx与openresty是两种优秀知名的7层负载均衡软件&#xff0c;nginx以其出色的性能和稳定性成为首选&#xff0c;而openresty则是在Nginx基础上构建的&#xff0c;支持嵌入Lua语言&#xff0c;大幅提升了开发效率。 安装OpenResty 版本 openresty-1.25.3.1-win64下载地…

D. Solve The Maze Codeforces Round 648 (Div. 2)

题目链接&#xff1a; Problem - 1365D - CodeforcesCodeforces. Programming competitions and contests, programming communityhttps://codeforces.com/problemset/problem/1365/D 题目大意&#xff1a; 有一张地图n行m列&#xff08;地图外面全是墙&#xff09;&#xff0c…

阿里云服务器配置选择详细指导

云服务器配置如何选择&#xff1f;云服务器配置包括CPU内存、公网带宽和系统盘&#xff0c;阿里云服务器还要注意云服务器规格及轻量应用服务器的选择&#xff0c;云服务器吧以阿里云服务器为例来详细说下小白用户选择云服务器配置攻略&#xff1a; 一、准备工作 如果你不注册…

文献速递:深度学习肝脏肿瘤诊断---基于多相增强 CT 和临床数据的恶性肝肿瘤鉴别诊断深度学习

Title 题目 Deep learning for diferential diagnosisof malignant hepatic tumors based on multi-phase contrast-enhanced CT and clinical data 基于多相增强 CT 和临床数据的恶性肝肿瘤鉴别诊断深度学习 Abstract 摘要 Liver cancer remains the leading cause of can…

2024 年 AI代码助手AI Coding Assistant智能工具

AI代码助手&#xff08;AI Coding Assistant&#xff09;是一种利用人工智能帮助开发人员更快、更准确地编写代码的软件工具。 它可以通过根据提示生成代码或在你实时编写代码时建议自动完成代码来实现此目的。 以下是AI代码助手可以做的一些事情&#xff1a; 与你使用的流行代…

指令集体系简读

这一部分&#xff0c;采用问答的方式来进行梳理&#xff1b; 什么是指令集体系&#xff1f; 指令集体系(Instruction Set Architecture,ISA)是规定处理器的外在行为的一系列内容的统称&#xff0c;它包括&#xff1a; 基本数据类型(data types)、指令(instructions)、寄存器…

Socks5代理IP如何使用?详细教程解析

当我们在互联网上浏览网页、下载文件或者进行在线活动时&#xff0c;隐私和安全问题常常被提及。在这样的环境下&#xff0c;一个有效的解决方案是使用Sock5IP。本教程将向您介绍Sock5IP的使用方法&#xff0c;帮助您保护个人隐私并提升网络安全。 一、什么是Sock5IP&#xff1…

使用了代理IP怎么还会被封?代理IP到底有没有效果?

代理IP作为一种网络工具&#xff0c;被广泛应用于各种场景&#xff0c;例如网络爬虫、海外购物、规避地区限制等。然而&#xff0c;很多用户在使用代理IP的过程中却发现自己的账号被封禁&#xff0c;这让他们不禁产生疑问&#xff1a;使用了代理IP怎么还会被封&#xff1f;代理…

MXNet安装:专业指南与深度解析

一、引言 MXNet是一个高效且灵活的深度学习框架&#xff0c;它支持多种编程语言和平台&#xff0c;并提供了丰富的深度学习算法和工具。随着深度学习技术的广泛应用&#xff0c;MXNet因其出色的性能和易用性受到了越来越多开发者和研究人员的青睐。本文将详细介绍MXNet的安装过…

YOLOV5 分类:利用yolov5进行图像分类

1、前言 之前介绍了yolov5的目标检测示例,这次将介绍yolov5的分类展示 目标检测:YOLOv5 项目:训练代码和参数详细介绍(train)_yolov5训练代码的详解-CSDN博客 yolov5和其他网络的性能对比 yolov5分类的代码部分在这 2、数据集准备 yolov5分类的数据集就是常规的摆放方式…