版本介绍
Vastbase G100 V2.2 Build 16是Vastbase于2024年3月7日发布的先行版,新增了大量语法、函数、功能以及兼容性特性。本章将介绍新增特性概览,其他功能请参考Vastbase G100 V2.2 Build 15。
新特性
兼容模式 | 功能模块 | 新增特性 |
---|---|---|
通用 | 外部数据封装器 | Vastbase支持创建外部数据封装器tds_fdw,用于远程访问SQL Server数据库。 |
插件 | 新增pg_repack插件:用来重新组织和压缩数据库中的astore,行存表和索引,主要用于在线重建表和索引,以解决表或索引膨胀的问题,减少碎片并提高性能。 | |
GUC参数 | 参数rewrite_rule新增可选取值"enable_any_sublink_pullup_enhanced",启用此选项后计划器会尝试将相关子连接进行提升,生成更好的执行计划。 | |
新增参数wdr_snapshot_auto_vacuum_full,用于控制是否在清理快照后对相关表进行vacuum full的功能。 | ||
Oracle兼容性 | 函数 | 支持xmlagg.getclobval函数,用于将xml类型转换为clob类型,且是尾调用形式。 |
支持XMLPARSE函数,用于从字符数据产生XML类型的值。它可以将包含XML内容的字符串、文本或二进制数据解析为可以在数据库中进行处理和查询的XML类型。 | ||
支持通过实现一组统称为ODCIAGGREGATE的接口函数来自定义聚合函数,将这些函数实现为对象类型中的方法。每个用户定义的聚合函数支持使用ODCIAGGREGATE函数(或步骤)来定义任何聚合函数执行的内部操作,包括初始化、迭代、合并和终止。 | ||
SQL语法 | 支持UPDATE+子查询+SET...语法,用于通过子查询生成要更新的数据集,并更新符合子查询条件的列值。 | |
CREATE TRIGGER创建触发器时支持使用PL/SQL(匿名块)来代替触发函数。 | ||
多表关联的视图,支持通过视图对单个基表进行DML操作(插入、更新、删除)。 | ||
支持通过SELECT/FETCH INTO向RECORD数组或复合类型数组赋值,详见数组支持RECORD类型。 | ||
使用CREATE PACKAGE BODY语法创建包体时:
|
||
INSERT语法支持NOLOGGING关键字,即`INSERT INTO...NOLOGGING`。该关键字无实际意义,仅为了实现与Oracle的语法兼容。 | ||
PL/SQL | PL/SQL里,函数的参数类型可以通过%type引用package中的属性来声明。即PL/SQL里函数参数支持调用独立package的属性。 | |
package中支持自治事务,但是不能在package实例中声明,只能在package的函数或过程中声明。 | ||
内置包 | 内置包子程序DBMS_LOB.READ的读取类型支持BLOB/CLOB。 | |
特性参数 | 新增Oracle模式数据库兼容性行为配置项a_format_behavior_compat_options。当其取值包含`update_subselect_check_unique`时,用于控制使用`UPDATE+子查询+SET语法`时,检查子查询中非目标表的唯一索引是否都出现在了where条件中。 | |
新增参数ora_illegal_nul_conversion,用于控制重载包函数时,将NUL(0x00)字符转换为空格保存还是报错处理。设置为'on'表示转换为空格进行保存。 | ||
组件 | 使用DATABASE LINK(jdbc_fdw)时:
|
|
MySQL兼容性 | SQL语法 | 新增SHOW SLAVE STATUS和SHOW REPLICAS语法,用于查看WAL(xlog)日志同步状态信息。后者必须在主库执行才有效。 |
新增SHOW OPEN TABLES语法,用于列出所有被打开的非临时表。 | ||
新增SHOW STORAGE ENGINES语法,用于列出支持的存储引擎信息。 | ||
支持使用形如"ALTER TABLE ADD(col type), ADD(col type) ..."的语法向表中添加多个字段。详见ALTER TABLE。 | ||
支持对字段定义zerofill属性,用于修饰整型数据类型。当字段中写入值的长度小于定义长度时,会在数值前面用零补全。详见column定义支持ZEROFILL/UNSIGNED属性。 | ||
在MySQL兼容模式下,当用户将多个相邻的带引号的字符串放置在一起时,它们会被自动连接为一个字符串,详见字面值。 | ||
特性参数 | 支持通过参数lower_case_column_names控制select_list中别名的大小写敏感性。 | |
B语法校验参数vastbase_sql_mode新增可选取值"ERROR_FOR_DIVISION_BY_ZERO",用于控制除数为0时是否报错。 | ||
查看和设置参数 | 支持在MySQL兼容模式下通过`@@变量`的方式查看和设置USERSET类型参数。 | |
SQL Server兼容性 | 函数 | YEAR函数,返回给定日期的年份。 |
ISDATE函数,用于判断表达式是否为有效的datetime值。 | ||
ISNUMERIC函数,用于判断表达式是否为有效的数值类型。 | ||
REPLICATE函数,用于指定一个字符串值重复的次数。 | ||
SQL语法 | 支持使用insert into tablename exec proc语法,将存储过程输出的结果集插入到表中。详见INSERT。 | |
支持UPDATE和DELETE语法的各类关联操作语法,包括FROM中的JOIN功能:内部连接(INNER JOIN)、左外部连接(LEFT [OUTER] JOIN)、右外部连接(RIGHT [OUTER] JOIN)、完全连接(FULL [OUTER] JOIN)。 | ||
支持通过EXEC调用存储过程。使用`EXEC PROC`传参时,允许出现传参不完整行为,此功能受参数mssql_format_behavior_compat_options的`use_mssql_execute_gram`选项控制。 | ||
GUC参数 | 新增SQL Server模式数据库兼容性行为配置项mssql_format_behavior_compat_options。当其取值包含"use_mssql_execute_gram"时,调用存储过程时支持忽略已有默认值的入参。 | |
新增参数enable_mssql_datatype,用于控制SQL Server兼容模式下,数据类型float4的精度是否与SQL Server一致。 | ||
PostgreSQL兼容性 | 函数 | JSONB_PATH_QUERY_FIRST:此函数在一个给定的JSON中根据指定的路径获取值,并返回第一个匹配的值,如果没有结果则返回NULL。 |
JSONB_OBJECT_AGG:此聚合函数用于返回一个由一组键值对组成的JSON对象。 |
特性优化
兼容模式 | 功能模块 | 优化特性 |
---|---|---|
通用 | 逻辑复制 | Vastbase逻辑复制支持DDL,当前支持的DDL包括:
|
WDR快照 | 支持通过以下策略改善启用wdr后产生的快照占用空间大的问题:
|
|
分区剪枝 | 静态分区剪枝支持一级、二级分区表,支持的分区类型及表达式如下:
|
|
动态分区剪枝(由GUC参数enable_runtime_prune控制,默认值为on)支持对Range、List、Hash、Interval分区表进行动态分区剪枝,支持的场景如下:
|
||
Oracle兼容性 | 函数 | 将TRUNC函数相加减,可以输出以天为单位的计算结果。升级后,在Oracle兼容模式下此运算输出无day(s)字样的纯数字,与Oracle保持一致。 |