SQLite是遵守ACID的关联式数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。

不像常见的客户-服务器范例,SQLite引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接API调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库(定义、表、索引和数据本身)都在宿主主机上存储在一个单一的文件中。它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。

从SQLite 3.27.0继续进行的更改:

  1. 添加了VACUUM INTO
  2. 如果使用双引号字符串文字,则在错误日志上发出SQLITE_WARNING消息。
  3. sqlite3_normalized_sql()接口适用于使用sqlite3_prepare_v2()或sqlite3_prepare_v3()创建的任何预准备语句。为了使用sqlite3_normalized_sql(),不再需要将sqlite3_prepare_v3()与SQLITE_PREPARE_NORMALIZE一起使用。
  4. 在FTS3和FTS5中添加了remove_diacritics=2选项。
  5. 为sqlite3_prepare_v3()添加了SQLITE_PREPARE_NO_VTAB选项。使用该选项可防止对影子表的循环引用导致资源泄漏。
  6. sqlite3_deserialize()
  7. 接口的增强功能:
    1. 添加SQLITE_FCNTL_SIZE_LIMIT文件控件,用于设置sqlite3_deserialize创建的内存数据库大小的上限。默认上限为1GiB,或者sqlite3_config(SQLITE_CONFIG_MEMDB_MAXSIZE)和/或SQLITE_MEMDB_DEFAULT_MAXSIZE指定的任何替代值。
    2. 尊重SQLITE_DESERIALIZE_READONLY标志,该标志先前已在文档中描述,但以前是无操作的。
    3. 增强TCL接口的“反序列化”,为其提供新的“--maxsize N”和“--readonly BOOLEAN”选项。
  8. CLI的增强功能,主要用于支持SQLite库本身的测试和调试:
    1. CLI的增强功能,主要用于支持SQLite库本身的测试和调试:
    2. 添加对“.open --hexdb”的支持。用于生成“hexdb”文本的“dbtotxt”实用程序将添加到源树中。
    3. 在“.open --deserialize”上添加对“--maxsize N”选项的支持。
    4. 添加“--memtrace”命令行选项,以显示所有内存分配和释放。
    5. 使用SQLITE_DEBUG在构建上添加“.eqp trace”选项,以便在一个步骤中启用带缩进的字节码程序列表和PRAGMA vdbe_trace。
    6. 添加“.progress”命令以访问sqlite3_progress_handler()接口。
    7. 将“--async”选项添加到“.backup”命令中。
    8. 将 "--expanded", "--normalized", "--plain", "--profile", "--row", "--stmt", and "--close" to the ".trace"添加到“.trace”中命令。
  9. 增强针对恶意SQL的稳健性,该恶意SQL针对恶意破坏的数据库运行。

Bug修复:

不要使用部分索引在IN运算符上执行表扫描。

修复查询flattener,使其适用于包含使用窗口函数的子查询的查询。

确保ALTER TABLE修改嵌入在作为视图和触发器一部分的WITH子句中的表名和列名。

修复一个解析器错误,该错误阻止在表值函数周围使用括号。

修复表达式索引的OR优化问题。

修复LEFT JOIN强度降低优化的问题,其中由于IS NOT NULL运算符而不适当地应用优化。

修复REPLACE命令,使其无法再将NULL值潜入NOT NULL列,即使NOT NULL列的默认值为NULL也是如此。

修复使用相关子查询中使用的窗口函数的问题。

修复ALTER TABLE RENAME COLUMN命令,使其适用于具有冗余UNIQUE约束的表。

修复了在插入使用表达式索引的表时导致zeroblob值被截断的错误。

原文来自:

本文地址://q13zd.cn/sqlite-3271.html编辑:清蒸github,审核员:逄增宝

Linux命令大全:

Linux系统大全:

红帽认证RHCE考试心得: