SQLite 3.35.0 已发布。SQLite 是一个 C 实现的 SQL 数据库引擎,它的特点是小型、快速、自包含、高可靠性和功能齐全。SQLite 嵌入在所有手机和大多数计算机中,也捆绑在为数众多的其它应用中,是世界上使用量最大的数据库引擎。
SQLite 实现了大多数 SQL 标准。它使用动态的、弱类型的 SQL 语法。它作为嵌入式数据库,是应用程序,在本地/客户端存储数据的常见选择。
SQLite 3.35.0 正式发布,本次更新内容如下:
- 添加了内置的 SQL math functions()(需要使用 DSQLITE_ENABLE_MATH_FUNCTIONS 编译时选项。)
- 添加了对 ALTER TABLE DROP COLUMN 的支持
- 通用 UPSERT
- 允许按顺序评估多个 ON CONFLICT 子句
- 最后的 ON CONFLICT 子句可以省略冲突目标,但仍然使用 DO UPDATE
- 在 DELETE,INSERT 和 UPDATE 语句上添加对 RETURNING 子句的支持
- 在包含非常大的 TEXT 或 BLOB 值的数据库上运行 VACUUM 时,使用较少的内存。不再需要一次将整个 TEXT 或 BLOB 都保存在内存中
- 指定公用表表达式时,增加对 MATERIALIZED 和 NOT MATERIALIZED 提示的支持。默认行为以前是 NOT MATERIALIZED,但现在已被多次使用的 CTE 更改为 MATERIALIZED
- 该 SQLITE_DBCONFIG_ENABLE_TRIGGER 和 SQLITE_DBCONFIG_ENABLE_VIEW 设置被修改,使它们只控制在主数据库模式或在连接数据库模式的触发和视图,而不是在 TEMP 模式。
- 查询计划器/优化器改进
- 增强了最小/最大优化,使其能更好地与 IN 操作符和上一版本的 OP_SeekScan 优化配合使用
- 尝试将 WHERE 子句中的 EXISTS 操作符当作 IN 操作符来处理,在这种情况下,这是一种有效的转换,有可能提高性能
- 允许 UNION ALL 子查询被扁平化,即使父查询是 join
- 在 WHERE 子句中的 IS NOT NULL 表达式上使用索引(如果合适的话),即使 STAT4 被禁用
- 如果 x 是具有 NOT NULL 约束的列,并且不涉及外部连接,那么 x IS NULL 或 x IS NOT NULL 形式的表达式可能会被转换为简单的 FALSE 或 TRUE
- 如果 UPDATE 不修改任何与外键相关联的列,则避免在 UPDATE 语句上检查外键约束
- 允许将 WHERE 项推倒放入包含窗口函数的子查询中,只要 WHERE 项完全由子查询中所有窗口函数的 PARTITION BY 子句中找到的常量和表达式的副本组成
- CLI 增强功能
- 增强 .stats 命令,接受新的参数 stmt 和 vmstep,从而分别显示准备语句统计信息和仅显示虚拟机步骤计数
- 增加 .filectrl data_version 命令
- 增强 .once 和 .output 命令,如果目标参数以 | 开头(表示输出重定向到管道中),那么参数不需要加引号
- 错误修正
- 修正当处理一个语法不正确的 SELECT 语句时,一个潜在的 NULL 指针析出,该语句有一个相关的 WHERE 子句和一个 HAVING 0 子句
- 修复了 3.33.0 版本的一个 in-operator 优化中的 bug,这个 bug 可能会导致错误的答案
- 修正 LIKE 运算符中,如果模式以 % 结尾,且有 ESCAPE '_'子句时,会导致错误的答案
更多详情可查看:https://sqlite.org/changes.html
SQLite下载: https://www.sqlite.org/download.html
最后修改时间:2021-03-15 11:36:45
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。