VastbaseG100

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

Menu

Vastbase V2.2 Build 10(Patch No.5)

发布日期

2022年12月15日

升级方式

VPatch工具升级。可参考使用VPatch进行版本控制

commit 标识:11033

新特性

1、新增以下MySQL兼容性:

  • 列名支持使用date_add作为关键字。
  • 支持JSON相关处理函数JSON_EXTRACT用于提取指定key的值。
  • 新增了对下列函数的支持:

    • LAST_INSERT_ID函数:用于返回一个bigint的值,该值是当前会话里最近一次nextval返回的数值。
    • DATE_SUB,用于得到某日期减去指定的时间间隔后的日期。
    • SYSDATE,用于获取当前系统时间。
    • IF,用于判断给定条件是否为TRUE。
    • IFNULL,用于判断参数值是否为NULL。
    • YEAR,用于获取给定时间的年。
    • EXTRACT,用于从时间类型数据或时间格式的字符串中提取指定部分。
    • CONVERT,用于实现数据类型和字符集转换。
    • TIMEDIFF,用于返回两个时间类型之间的差值。
    • SUBDATE,用于将给定日期减去时间值(作为间隔)。
    • MAKEDATE,用于根据给定的年值year和日值dayofyear返回一个日期。
    • QUARTER,用于根据给定的date返回对应的季度值。
    • STR_TO_DATE,用于将时间格式的字符串按照所提供的显示格式转换为DATETIME类型的值。

使用限制

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

缺陷修复

1、【1019849】修复了MySQL兼容模式下,使用STR_TO_DATE函数时format参数的规则范围与MySQL不一致的问题。

2、【1019646】修复了对带有字符单位的表字段执行COPY操作时报超长的问题。

3、【1019629】修复了执行计划不使用only_full_group_by导致系统宕机的问题。

4、【1019314】修复了执行vb_basebackup操作后,数据库无法停库且archive线程一直在后台运行的问题。

5、【1019274】修复了字段插入值超出字段类型int的范围时,缓存导致SQL语句的执行结果与实际预期不符的问题。

6、【1018995】修复了x86_64架构下,向默认值为自增序列的表字段插入数据引发数据库宕机的问题。

7、【1018973】修复了MySQL兼容模式下,通过prepare语句进行insert操作,插入自增列数据而数据库获取的序列last_value值未同步修改的问题。

8、【1018962】修复了多表连接查询时,使用不同schema的相同表名进行外连接,被识别为同一张表的问题。

9、【1018915】修复了PG兼容模式下,修改普通表作为外表的继承表时报错信息不合理的问题。

10、【1018912】修复了PG兼容模式下,未禁止有加密列的表使用继承功能的问题。

11、【1018787】修复了集群状态下,参数replconninfo中的remotehost配置为域名或者主机名时,备库使用vb_basebackup同步主库操作失败的问题。

12、【1018615】修复了使用vb_dump/vb_dumpall进行备份操作时,在获取并保存datcompatibility之前未释放上一次分配的空间导致出现内存泄漏的问题。

13、【1018495】修复了使用to_single_byte函数进行查询时,函数中变量内存访问越界,enable_memory_check包会对内存进行检查从而导致挂库的问题。

14、【1018425】修复了当参数enable_stmt_track和enable_resource_track同时开启(值为on)的情况下,运行SQLsmith/TPCC-C业务时,线程TrackStmtContext占用内存高的问题。

15、【1018390】修复了父线程在子线程启动过程中退出,导致子线程访问父线程申请的内存变为非法内存引发数据库宕机的问题。

16、【1018283】修复了在线创建Gist索引时引发内存泄露从而导致数据库挂库的问题。

17、【1018231】修复了由于传入的字符串参数经逻辑转换后没有在末尾设置'\0',导致strlen访问时越界,出现heap-buffer-overflow的数据库挂库问题。

18、【1017918】修复了并发操作删除函数和vb_dump导出时出现异常的问题。

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

20、【1017795】【1017760】【1017754】修复了当数据库表含有serial、type、text字段类型时,由于序列申请内存时未进行16字节地址对齐而导致异常引发挂库的问题。

21、【1017525】修复了未禁止继承表功能在Oracle兼容模式下使用的问题。

22、【1017523】修复了执行\h CREATE TABLE查看帮助手册信息的内容不全的问题。

23、 【1016106】修复了由于alter system set并发读写conf文件没有加线程安全锁,而是使用了文件锁导致alter system set并行执行出现宕机的问题。 24、【1017057】修复了由于postmaster线程和会话线程之间存在竞态条件,会话线程执行错误导致在创建function时失败的问题。

25、【1017186】修复了并发执行dbms_alert导致数据库挂库的问题。

26、【1017374】修复了由于删除plpython3u插件时未清理存储插件相关函数的线程变量,在重新创建plpython3u插件时重复保存函数导致的内存不足问题。

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

28、【1017429】修复了由于rollback中存在error报错出现无限rollback,导致通过dblink连接Oracle后在Oracle端杀掉该会话,引起Vastbase数据库coredump的问题。

29、【1017459】修复了由于存储dbms_lob包相关hash表的变量为会话级别,导致多并发时线程异常退出并释放资源的情况下,继续访问dbms_lob功能的hash表时内容非法而挂库的问题。

30、【1013503】函数的缓存是否被释放,是通过判断函数是否被使用(func->use_count==0)来决定的,没有被使用就会被释放。修复了该标记在plpgsql_call_handler中是在校验了search_path之后才增加导致数据库挂库的问题。

数据库行为变更说明

P
变更项 升级前 升级后
继承表 所有兼容性模式均可使用继承表功能;加密列表可使用继承功能;\h create table\h alter table帮助手册无继承功能语法;外部表使用继承表功能报错不合理。 限制继承表功能仅在PostgreSQL兼容模式下使用;禁止有加密列的表使用继承功能,禁止继承表添加加密列;\h create table\h alter table添加继承功能语法;添加对外部表创建继承关系时的报错信息。
COPY导入功能 COPY导入数据时带有中文字符会出现数据超出的报错。 COPY导入数据可导入中文字符。
forall...returning bulk collect into返回结果。 forall...returning bulk collect into集合变量,集合变量只是最后一次循环returning的结果值。 forall...returning bulk collect into集合变量,保存每次循环的结果,变量值是整个forall循环下的值。
xml数据 xml数据为中文字符集时解码失败。 xml数据为中文字符集时可以正常解码。
to_single_byte函数 调用to_single_byte函数时出现数据库异常。 to_single_byte函数正常调用。
vb_dump导出数据 vb_dump与删除函数并发操作时导出失败。 vb_dump与删除函数并发操作时导出成功。
vb_dumpall性能 当vb_dump、vb_dumpall工具处理多个database时,每个database都获取datcompatibility,但是没有及时释放上一次分配的空间,导致内存泄露。 在获取并保存datcompatibility之前,先对上一次分配的内存进行释放,避免内存泄漏。
uuid_ossp插件函数 在MySQL兼容模式下使用uuid-ossp插件函数uuid_generate_v3()、uuid_generate_v5()时,传入的uuid字符串没有用"-"作为分隔符时,数据库宕机。 在MySQL兼容模式下使用uuid-ossp插件函数uuid_generate_v3()、uuid_generate_v5()时,传入的uuid字符串没有用"-"作为分隔符时,可正常执行。
CREATE TABLE使用date_add关键字 不支持date_add作为列名 支持date_add作为列名
year、extract函数 MySQL兼容模式下,year、extract函数不支持字符串。 MySQL兼容模式下,year、extract函数支持字符串。
JSON相关处理函数 不支持函数JSON_EXTRACT。 支持使用函数JSON_EXTRACT提取指定key的值。
MySQL兼容模式下,函数支持情况 不支持字符和数据类型处理函数CONVERT。
date_add函数参数不支持运算表达式。 不支持以下条件表达式函数:
  • IF
  • IFNULL
  • 不支持以下时间和日期处理函数:
  • DATE_SUB
  • SYSDATE
  • YEAR
  • EXTRACT
  • TIMEDIFF
  • SUBDATE
  • MAKEDATE
  • QUARTER
  • STR_TO_DATE
  • 支持字符和数据类型处理函数CONVERT。
    date_add函数参数支持运算表达式。 支持以下条件表达式函数:
  • IF
  • IFNULL
  • 支持以下时间和日期处理函数:
  • DATE_SUB
  • SYSDATE
  • YEAR
  • EXTRACT
  • TIMEDIFF
  • SUBDATE
  • MAKEDATE
  • QUARTER
  • STR_TO_DATE
  • 集群状态下备库使用vb_basebackup进行备份 主库replconninfo中remotehost配置域名或主机名,由于is_node_internal_connection函数中不会进行域名解析,导致备库使用vb_basebackup备份失败。 is_node_internal_connection函数中会进行域名解析,备库使用vb_basebackup备份成功。
    MySQL升级脚本 不支持利用升级MySQL函数兼容。 支持利用升级MySQL函数兼容。
    函数 不支持last_insert_id函数。 新增控制变量last_insert_id_supported,该变量默认为off,当last_insert_id_supported设置为true之后可以调用函数last_insert_id。

    相关链接:升级方法介绍