发布 DBMS SQLite 3.31,支持生成列

发表 发布 SQLite 3.31.0,一个设计为插件库的轻量级 DBMS。 SQLite 代码作为公共域分发,即可以不受限制且免费用于任何目的。 对 SQLite 开发人员的财务支持由专门创建的联盟提供,该联盟包括 Adob​​e、Oracle、Mozilla、Bentley 和 Bloomberg 等公司。

变化:

  • 添加了支持 生成的列 (计算列),允许您在创建表时定义一个列,该表的值将根据另一列的内容自动计算。 生成的列可以是虚拟的(每次访问时动态生成)或存储在数据库中(每次更新相关列时保存)。 生成的列的内容仅在读取模式下可用(仅通过修改参与计算的另一列中的值来进行更改)。 例如:

    创建表 t1(
    一个整数主键,
    b 智力,
    文本,
    d INT 始终生成为 (a*abs(b)) VIRTUAL,
    e 文本生成始终为 (substr(c,b,b​​+1)) 存储
    );

  • 添加了 PRAGMA 可信模式, 环境 SQLITE_DBCONFIG_TRUSTED_SCHEMA 以及程序集选项“-DSQLITE_TRUSTED_SCHEMA”,它允许您控制包含的保护 攻击 通过修改数据库中的数据模式。 主动保护限制在触发器、视图、CHECK 和 DEFAULT 语句、索引和生成列中使用 SQL 函数(未标记为 SQLITE_INNOCUOUS)。 除非使用 SQLITE_VTAB_INNOCUOUS 标志显式声明虚拟表,否则还会禁用触发器和视图中虚拟表的使用。
  • 实现了为应用程序中定义的 SQL 函数分配属性的能力 SQLITE_INNOCUOUS (无害函数不依赖于外部参数,不能用于执行恶意操作)和 SQLITE_DIRECTONLY (只能在SQL查询中直接调用,不能在触发器、视图和数据结构图中使用);
  • 添加模块 uid 实现处理 UUID 的功能 (RFC-4122);
  • 添加了 PRAGMA 硬堆限制 和功能 sqlite3_hard_heap_limit64() 控制最大堆大小;
  • 在PRAGMA中 函数列表 添加了每个函数的类型、属性和参数数量的输出;
  • 到虚拟表 DBSTAT 添加 数据聚合模式;
  • sqlite3_open_v2() 实现了 SQLITE_OPEN_NOFOLLOW 选项,该选项允许您禁用符号链接的打开;
  • 为了论证 PATH,传递给 JSON 函数,添加了对“#-N”数组表示法的支持;
  • 在内存分配系统中 后备 实现了对两个独立内存池的支持,每个内存池可用于分配不同大小的块(分离允许您扩展lookaside系统的使用,同时将分配给每个连接的缓冲区大小从120减少到48知识库);
  • PRAGMA 支持已停止 遗留文件格式,它与 VACUUM、生成列和降序索引不兼容(可以通过 sqlite3_db_config() 中的 SQLITE_DBCONFIG_LEGACY_FILE_FORMAT 标志返回旧格式支持)。

来源: opennet.ru

添加评论