VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

V2.2 Build 11

版本升级指南

版本号说明
例:V2.2 Build 11
大版本:2.2
Build:11
Patch:补丁号

1、不同大版本以及不同Build的升级必须使用方法一升级
2、补丁升级请遵循以下规则

升级前\升级后 V2.2 Build 11
<V2.2 Build 11 重新初始化
>=V2.2 Build 11 N/A

升级方法介绍

方法一: 以下简称为“重新初始化”

所有用户自定义的对象和数据都需要从旧库导出,再导入到新库。

1、使用vb_dump导出所有对象和数据。

2、使用数据库安装程序安装新的数据库。

3、开启数据库。

4、使用vb_restore导入步骤1中的备份数据到新库中。

方法二: 以下简称为“vpatch工具升级”

参考使用vpatch进行版本控制

方法三:以下简称为“替换升级”

直接替换安装目录并重启数据库即可,步骤如下:

1、 停止数据库。

2、 解压安装包,把bin、include、lib、share四个目录替换到数据库安装目录下。

具体操作步骤如下:

(1)解压安装包,第一次解压(安装包以实际为准)。

tar xf Vastbase-G100-installer-2.2_Build_5.161-openeuler_20.03-aarch64_kunpeng-20220812.tar.gz

(2)解压后进入vastbase-installer目录,进行第二次解压。

tar xf Vastbase-G100-2.2_Build_5.161-openeuler_20.03-aarch64_kunpeng.tar.gz

(3)第三次解压。

tar xf Vastbase-G100-2.2_Build_5.161-openeuler-64bit.tar.bz2

(4)将解压之后的bin、include、lib、share四个目录替换到现有数据库安装目录下。

3、开启数据库。

配套驱动/工具版本

JDBC Driver ODBC Driver HAS
V2.7 V1.4 V1.2/V1.4/V2.0

Vastbase V2.2 Build 11

发布日期

2022年12月2日

新特性

1、支持在创建数据库时使用中文的数据库名,详见CREATE DATABASE

2、增加了对ltree插件的支持,详见Itree插件

3、新增了VB_VERSION函数,用于返回数据库版本号,详见系统信息函数章节的vb_version函数

4、INTERVAL分区表功能增强:支持number类型作为分区键,详见INTERVAL分区表

5、新增了同义词synonym功能对序列对象的创建及使用,详见CREATE SYNONYM

6、SQLServer兼容性模式下支持使用TOP子句来限制查询结果集中返回的行数或百分比,详见TOP子句

7、新增PostgreSQL兼容性:

  • CREATE TABLE语法中新增了对普通行存表的继承,详见CREATE TABLE
  • COPY语法中新增了对不带引号的format值的支持,详见COPY
  • 支持对已存在的表在修改时增加自增列,详见ALTER TABLE
  • 支持创建临时序列,创建的序列在会话退出时删除,详见CREATE SEQUENCE

  • 新增了对以下函数的支持:

    • JSONB_PATH_QUERY,函数按照特定路径查询jsonb对象,返回所有符合jsonpath的json item集合。
    • JSONB_PATH_QUERY_ARRAY,函数按照特定路径查询jsonb对象,返回查询结果并将结果封装为数组。

8、新增Oracle兼容性:

  • 支持结果集中的字段名大小写可控,详见返回字段名大小写控制
  • 新增了对PLJSON开源组件的兼容,用于处理PL/SQL代码中json格式的数据,详见PLJSON开源组件兼容
  • 支持查询函数返回结果带参数列表
  • 支持多个子查询时不需要指定表别名
  • 支持DBLINK实现库级别的连接访问,可以通过DBLINK像访问本地数据库一样访问远程数据库表中的数据,详见DBLINK库级访问
  • 新增了对以下函数的支持:
    • GROUP_ID,函数可以返回一个整型值,用于标识GROUP BY子句返回的唯一重复组。
    • APPENDCHILDXML,函数用于将用户指定的节点信息追加到目标xml文档中。
    • PERCENTILE_DISC,函数可以根据输入的百分比与排序规则从集合中返回一个元素。
    • FROM_TZ,函数用于拼接输入的时间戳和时区。
    • ASCIISTR,函数用于将输入的字符串转换为ascii码串。
    • DUMP,函数用于查看表达式在数据库内的数据类型代码、长度(以字节为单位)和表达式的内部表达形式。
    • SYS_CONTEXT,函数可以获取指定namespace下的parameter值。
  • 新增对以下内置包的支持:
    • UTL_ENCODE,提供了将原始数据编码转换为标准编码格式的函数,以便数据可以在主机之间传输。
    • DBMS_METADATA ,提供了一种从数据库字典中检索元数据作为 XML或创建DDL并提交XML以重新创建对象的方法。
  • 新增对数据类型LONG和LONG RAW的支持。
  • 新增对CREATE VIEW语法的force view选项的支持,确保可以直接成功创建视图。
  • 新增内置包DBMS_XSLPROCESSOR用于管理XML文档的内容和结构,新增子程序dbms_xslprocessor.valueof,可以根据给定的匹配模式串检索第一个节点的值。DBMS_XSLPROCESSOR
  • 支持insert all指定字段批量插入数据,详见INSERT ALL&FIRST子句语法
  • 新增内置跨类型操作符
  • 定义REF CURSOR时可以指定return type,类型支持%rowtype类型和record类型,详见REF CURSOR
  • table函数入参支持变量且函数返回结果支持COLUMN_VALUE列,详见TABLE
  • 定义pipe row时入参支持自定义type类型,详见pipelined自定义type返回
  • 新增支持subprogram嵌套
  • TYPE语法增强:支持定义成员变量和成员函数,详见CREATE TYPE

9、MySQL兼容性:

  • 支持查询函数返回结果集字段带参数列表,详见查询函数返回结果带参数列表

  • 支持使用low_case_table_names参数控制对象名大小写,详见设置对象名大小写敏感

  • 存储过程和函数支持声明SQLSTATE、SQLERRM、SQLCODE变量,当出现异常情况后,将变量值作为,详见自定义错误函数

  • 支持存储过程汇总使用START TRANSACTION语句开启一个事务,详见存储过程中允许使用START TRANSACTION

  • 支持使用DECLARE HANDLER语句来处理函数或存储过程中的异常。

  • 新增INFORMATION_SCHEMA.STATISTICS视图用于提供对索引相关信息的查询,详见STATISTICS

  • 支持FORCE INDEX语法指定执行计划,为优化器提供有关如何在查询处理期间选择索引的信息。

  • 支持用户自定义ROWNUM自定义变量用来识别获取行号。

  • 支持使用SET语句对用户变量进行赋值。

  • 使用PREPARE FROM语法给一个SQL语句赋予一个名字,并在后续的操作中通过引用该名称来实现对SQL语句的执行等操作。

  • 支持@variable声明变量,详见SET

  • CREATE TABLE AS兼容 IF NOT EXISTS语法。

  • CONVERT函数支持数据类型和字符集转换。

  • 列名支持使用”date_add”关键字。

  • 参数vastbase_sql_mode新增取值'ANSI_QUOTES',通过是否启用ANSI_QUOTES来控制双引号引用的内容被解释为标识符还是字符串。

    从V2.2 Build11开始,此参数默认值中包括'ANSI_QUOTES',表示双引号引用内容被解释为标识符,即默认与升级前的行为一致。

  • 存储过程或函数replace支持通过指定DEFINER指定属主。

  • 支持将反引号解释为标识符,遇到反引号的时会将反引号中的内容解释为标识符,同时关键字也会作为标识符返回。详见反引号解释为标识符

  • information_schema.columns视图中新增了MySQL兼容性的部分字段。

  • 支持使用DELIMITER 自定义分隔符。

  • 支持使用#符号注释

  • 支持修改存储过程、函数时不用带参数列表,详见ALTER PROCEDURE ALTER FUNCTION

  • PL/SQL中支持LEAVE label语法、ITERATE label语法,详见LOOP循环语法

  • 支持使用ALTER语法修改存储过程、函数对象的属性和特征,详见:ALTER PROCEDURE ALTER FUNCTION

  • 支持使用CALL语法调用有参的存储过程。

  • 支持创建触发器,详见CREATE TRIGGER

  • 存储过程与函数中支持SQL SECURITY、LANGUAGE SQL、DETERMINISTIC、CONTAINS SQL等语句,详见CREATE PROCEDURECREATE FUNCTION

  • 新增了对以下函数的支持:

    • DATE_SUB,使用函数得到某日期减去指定的时间间隔后的日期。
    • YEAR,使用函数获取给定时间的年。
    • EXTRACT,使用函数从时间类型数据或时间格式的字符串中提取指定部分。
    • TIMEDIFF,使用函数返回两个时间类型之间的差值。
    • SUBDATE,使用函数给定日期减去时间值(作为间隔)。
    • MAKEDATE,使用函数根据给定的年值year和日值dayofyear返回一个日期。
    • QUARTER,使用函数根据给定的date返回对应的季度值。
    • STR_TO_DATE,使用函数将时间格式的字符串按照所提供的显示格式转换为DATETIME类型的值。
    • SYSDATE,使用函数获取当前系统时间。
    • JSON相关处理函数,包括JSON_CONTAINS、JSON_SET、JSON_ARRAY、JSON_REPLACE、JSON_UNQUOTE、JSON_EXTRACT、JSON_LENGTH。
    • TRUNCATE,使用函数返回被舍去至小数点后指定位的数字。
    • MID,使用函数从varbit可变长位串和text类型字符串中提取子串。
    • IFNULL,使用函数判断参数值是否为NULL。
    • IF,使用函数判断给定条件是否为TRUE。

特性优化

1、完善了高速导入导出transpoetable功能,可以最小支持到分区级别的细粒度在线快速物理迁移。

2、优化了数据库默认预置参数,将password_foece_alter默认值修改为off,password_effect_time默认值修改为36500,autovacuum_mode默认选项为mix。详见默认预制参数优化

3、精简了数据库日志,不打印无效日志。

4、解决了隐式转换导致性能下降问题

5、完善了MySQL兼容性中的replace语法中对LOW_PRIORITY和DELAYED关键字的支持,详见REPLACE INTO

6、完善和增强对兼容Oracle的DBMS_XMLDOM包和DBMS_XMLPARSER包的接口,详见DBMS_XMLPARSERDBMS_XMLDOM

7、二级分区合入新增功能和语法,可指定字段进行二级分区,分区类型可以是RANGE、LIST、HASH,详见CREATE TABLE SUBPARTITIONALTER TABLE SUBPARTITION

10、新增以下操作系统及CPU平台适配:

  • Vastbase Lite
CPU型号 操作系统 操作系统版本号
飞腾D2000 Kylin V10
UOS V20(1050a)
飞腾2000 Kylin V10
  • Vastbase G100 V2.2 Build 11
CPU型号 操作系统 操作系统版本号
x86(海光) 中标麒麟 V7.0
UOS V20(1050a)
凝思安全操作系统 V6.0.80
中科方德 -
x86(Intel) Deepin V16
中标麒麟 V7.0
openEuler 22.03
Kylin 4.0.2 sp4
湖南麒麟 -
Red Hat Enterprise Linux 8.6
Red Flag Asianux V7.6
Ubuntu 18.04
UOS V20(1050e/1050a)
FusionOS 2.10
EulerOS 2.10
普华 4.2
飞腾2000 Kylin V10
飞腾2500 Red Flag Asianux V7.6
kunpeng 920 Kylin V10
openEuler 22.03
openEuler 20.03
FusionOS 22
Red Flag Asianux V7.6
UOS V20(1050a)
EulerOS 2.10
申威 UOS V20(1040)

使用限制

使用PL/Python实现自定义过程语言时,禁止使用plpy模块。

缺陷修复

1、【ID1018496】修复了由于to_single_byte函数中变量内存访问越界,导致在执行select to_single_byte('123$% 高AStest@【[') 语句时挂库的问题。

2、【ID1018453】修复了由于父线程退出时,未等待其子bgworker停止就进行了资源释放,导致在并行测试时引发heap-use-after-free in shm_toc_attach错误的挂库问题。

3、【ID1018452】修复了由于执行检查点时,XLOG清理模块回收复用的WAL覆盖了vb_probackup工具从归档中恢复的WAL文件,导致指定时间点恢复失败的问题。

4、【ID1018433】修复了由于密钥轮转没有做限制,未配置kms却调用kms接口导致执行alter table ENCRYPTION KEY ROTATION时数据库断开链接的问题。

5、【ID1018246】修复了由于库函数uuid_import()处理传入的参数时出错,导致了在并行测试时出现heap-buffer-overflow错误的数据库挂库问题。

6、【ID1017917】修复了由于并发读写conf文件没有加线程安全的锁导致alter system set 并行操作出现的挂库问题。

7、【ID1017913】修复了由于dbms_lob包bfile功能涉及的hash表从线程中分配内存,但存储该hash表的变量是会话级别的,多并发情况下,该线程服务其它事务时由于异常退出并释放了资源,导致继续访问dbms_lob功能的hash表时内容非法而挂库。

8、【ID1017844】修复了由于分配内存时使用内存池没有感知到int128的地址对齐,导致向默认值为自增序列的表字段插入数据引发数据库挂库的问题。

9、【ID1017796】修复了由于序列字节未对齐,导致创建含serial字段类型的表时修改表结构设置storage external并插入数据,引起的debug版本挂库的问题。

10、【ID1017784】修复了由于序列字节未对齐,导致创建带serial数据类型和text类型的表在给text类型赋值时debug版本引起挂库的问题。

11、【ID1017596】修复数据类型type构造函数和proc_outparam_override参数冲突的问题。

13、【ID1017406】修复了由于forall..bulk collect..是根据上下边界循环处理forall body,循环结束后bulk collect into到变量是最后一次的结果值导致forall…returning bulk collect into语法编译正常却执行结果不符合预期的问题。

14、【ID1016844】修复了由于执行自治事务的bgworker启动失败,报错信息未能发送给父线程导致在回归测试中报错”The parameter destMax is equal to zero or larger than the macro”的问题。

15、【ID1016822】修复了由于重写嵌套聚合函数的query时漏掉了对ctelist的处理,导致聚合函数嵌套后不支持with..as语法的问题。

16、【ID1016717】修复了由于自治事务在实现时并发较高,bgworker slots被耗尽,导致当并行存储过程用例时sql执行失败,提示不能注册后台进程,需要增加后台进程的问题。

17、【ID1016698】修复了由于postgres_fdw、jdbc_fdw dblink查询会在对象上添加锁,导致并发查询超时或挂住的问题。

18、【ID1016566】修复了在Oracle和MySQL兼容模式下,由于创建sequence后会触发自增列逻辑,即多执行一遍nextval,导致创建与表连接的序列后用insert调用序列时结果翻倍的问题。

19、【ID1016528】修复了由于多条SQL语句同时执行,pg_stat_statements插件无法处理的情况下内存越界导致实例突然崩溃的问题。

20、【ID1016526】修复了由于参数存储使用的变量被释放,导致jdbc_fdw.maxheapsize参数显示有误的问题。

21、【ID1016513】修复了由于视图定义有误,导致user_cons_columns视图无法区分约束对应对应的字段的问题。

22、【ID1016406】修复了由于使用g_instance.attr.sttr_common.data_directory时未判空,导致集群环境中数据库一直core的问题。

23、【ID1016250】修复了由于解析targetlist使用字段名而不是别名对应的聚合函数,导致为带聚合函数的列定义相同别名后o,rder by子句将别名识别为列名的问题。

24、【ID1016200】修复了由于SynonymCreate函数中未对系统表进行DBLINK字段更新,导致使用create or replace更新带DBLINK的同义词时DBLINK字段不自动更新,只能drop后新建同义词的问题。

25、【ID1016067】修复了由于separator被设置成了非保留关键字,但是未加入非保留关键字列表中,导致vb_dump不支持separator关键字结构的导出的问题。

26、【ID1015223】修复了由于备库不允许写属性的操作发生,导致修改max_flashback_time参数后备库不能登录的问题。

27、【ID1015220】在创建plpython3u扩展时会同时执行plpython3u–1.0.sql中的sql,其中包括一个用package实现的内置包utl_tcp,由于package只在Oracle兼容模式下支持,在其他兼容模式下创建package会报错,所以出现在PG兼容模式下plpython3u扩展创建失败。本版本中修复了此问题。

28、【ID1014640】修复了由于磁盘占满导致数据库实例挂掉后,审计信息初始化时陷入while循环不能退出导致再次启动异常的问题。

29、【ID1014506】修复了由于创建内置类型时没有判断指针为空情况,导致varray类型引用错误类型时数据库断开连接的问题。

30、【ID1014161】修复了由于兼容性错误导致在MySQL兼容模式下执行cast函数后的输出结果与MySQL不一致的问题。

31、【ID1010814】修复了由于使用客户端vb_bulkload导入不存在的表触发heap use after free,导致数据库宕机的问题。

32、【ID1010661】修复了使用vb_bulkload导入分区表,由于子线程使用主线程内存上下文mem_cxt初始化共享变量,分区表有多个子线程同时进行初始化,而mem_cxt未加锁,导致申请到相同内存地址,出现status文件名重复,创建文件出错,数据库崩溃的情况。

33、【ID1017412】修复了由于每个并行线程都会消耗一个free proc,DOP开启后空闲proc耗尽导致报错”(query_dop > 1)no free proc is available to create a new connection for.“的问题。

34、【ID1018746】修复了由于过滤null时会根据分区表的分区键做一个处理,但system分区没有分区键导致查询system 分区表,过滤条件为某一列is null ,出现coredump的问题。

35、【ID1017786】修复了由于序列字节未对齐,导致创建序列时debug版本引起挂库的问题。

36、【ID1013131】修复了出现MySQL增量迁移至G100时对一些表update、delete后任务异常终止,报错为“update 0 row”的问题,主要原因是sql中涉及到分区tid扫描,tidscan扫描分区表在ExecInit时没有处理PBE裁剪,导致tidscan认为需要扫描所有分区;而上层Partition Iterator做了裁剪认为只扫描一个分区就可以退出了,最终tidscan每次都只扫描了第一个分区,后面的分区的数据没有扫描并修改。

37、【ID1015840】修复了由于在connect by +rownum使用场景下Vastbase实现与oracle不一致,导致的子查询where过滤条件中rownnum放在connect by后面会无法找到数据的问题。

38、【ID1015970】修复了由于separator不属于Oracle的关键字导致dblink不支持关键字separator查询的问题。