VastbaseG100

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

Menu

V2.2 Build 10(Patch No.10)

发布日期

2023年07月11日

升级方式

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

commit 标识:14301

新特性

1、新增Oracle兼容性:

  • 新增如下函数:

    • PERCENTILE_DISC函数,可以根据输入的百分比与排序规则从集合中返回一个元素。

    • DBMS_UTILITY.FORMAT_ERROR_STACK函数:返回与当前错误(SQLCODE的返回值)所关联的错误堆栈。

    • DBMS_UTILITY.FORMAT_ERROR_BACKTRACE:用于显示异常引发点的调用堆栈。

  • 新增GUC参数result_case_mode,支持结果集中的字段名大小写可控,详见返回字段名大小写控制

2、新增MySQL兼容性:

  • 新增如下函数:

    • DATEDIFF函数,用于返回两个日期之间的天数。

    • ISNULL函数,用于判读输入的参数是否为null,如果输入参数为null返回true,否则返回false。

  • 支持SELECT使用关键字作为别名,即可以将部分非保留关键字在不加引号(如双引号,单引号或反引号)的情况下,作为SQL语句中的标识符(即别名)。

  • 支持在执行INSERT...ON DUPLICATE KEY UPDATE语句时字段重复,可参见INSERT-ON-DUPLICATE-KEY-UPDATE

  • 支持对字段定义zerofill属性(仅为语法兼容,实际功能与UNSIGNED属性一致),可参见column定义支持ZEROFILL-UNSIGNED属性

  • 支持在CREATE TABLE时定义table的注释,参见table支持comment定义

3、新增SQL Server兼容性函数:

  • SYSDATETIME,返回计算机的日期和时间,返回值为timestamp类型。

  • CONVERT,将表达式由一种数据类型转换为另一种数据类型,返回值为函数中指定数据类型。

  • DATEDIFF,计算两个日期之间的时间间隔。

  • ISNULL,判断表达式的值是否为NULL。当表达式值被判断为NULL时,使用指定的值替换NULL值。

4、新增PostgreSQL兼容性:

  • 为实现客户端之间消息队列的监听和通知功能,新增支持以下功能:

  • 新增如下函数:

    • JSONB_INSERT函数,可以将一个新值插入到JSONB值中的指定路径位置。

    • JSONB_SET函数,可以替换指定路径上的值或者在指定的路径上插入值。

缺陷修复

1、【1028885】修复了由于在返回所有匹配模式时,保存信息的内存大小判断逻辑有误,导致没有预分配足够大的内存,出现越界,引起数据库宕机的问题。

2、【1028776】修复了由于链表指向的对象内存上下文被清理,链表没有置空,导致数据库宕机的问题。

3、【1028715】修复了由于DBMS_JOB.run函数中不支持有事务的存储过程,导致在匿名块中调用存储过程,且存储过程中含有COMMIT和ROLLBACK时,单独执行一次job,没有成功插入数据的问题。

4、【1028448】修复了由于在G_GET_SQLSTRING数组中缺少PLPGQL_STMT_ARRAY的stmt获取sqltring的方法,导致在存储过程的sql是NULL时,出现数据库宕机的问题。

5、【1028328】修复了由于sys_guid生成guid未满足不重复需求,导致sys_guid()在并发场景下,会出现重复值的问题。

6、【1028248】修复了gs_encrypt不通过-t参数指定硬件加密时,未对-k参数范围进行校验的问题。

7、【1028247】修复了由于提示信息不全,导致alter tablespace使用tab补全时缺少resize的问题。

8、【1028246】修复了pg_resetxlog 设置-O的报错信息。

9、【1028243】修复了错误信息审计日志格式不匹配的问题。

10、【1028242】修复了由于列存表不允许for update,但视图没有对引用的表进行检查,导致在查询列存表for update时出现数据库宕机的问题。

11、【1028213】修复了MySQL兼容模式下with cte中cte没有大小写敏感的问题。

12、【1028090】修复了报错信息太长没有做截断的问题。

13、【1027715】修复了由于函数输入没有判断null,导致在MySQL兼容模式下,dbms_assert.enquote_literal输入空串报错的问题。

14、【1027704】修复了PL/pgSQL内存越界的问题。

15、【1027682】修复了由于未检查函数pg_partition_size(oid,oid)传入的表oid,导致表oid和分区oid不匹配,即表不是分区表或分区oid不属于指定分区表,把普通表当成分区表来使用,引起使用relation结构体中的成员时出现空指针访问的问题。

16、【1027675】修复了中文环境下升级失败的问题。

17、【1027674】修复了database拼写错误的问题。

18、【1027651】修复了由于useroid被函数创建者的useroid替换,导致在MySQL兼容模式下,审计用户(audit_user)参数配置不生效的问题。

19、【1027637】修复了由于获取物化视图未考虑同义词场景,导致在为物化视图创建同义词时,refresh失败的问题。

20、【1027636】修复了由于在可作为别名关键字列表中缺少了keys,导致执行information_schema._pg_expandarray函数相关报语法错误的问题。

21、【1027633】修复了由于pg_zhtrgm插件的脚本是utf8编码且存在中文注释,导致gbk编码数据库在读取插件脚本时发生编码错误的问题。

22、【1027609】修复了由于升级脚本没有增加varchar到json的类型转换,导致在升级版本中JSON函数无法通过PrepareStatement.setString传值的问题。

23、【1027390】修复了Oracle兼容模式下,to_yminterval函数DEFAULT语句不完整时报错信息不明确的问题。

24、【1027376】修复了由于在异常发生时没有清理子事务上下文,和没有清理errorarea结构体内存,导致执行存储过程引起数据库内存持续增长,最后数据库宕机的问题。

25、【1027372】修复了vbtrace工具未汉化的问题。

26、【1027354】修复了由于未对fdw_private中的节点类型进行检查,导致删除外部表数据时宕机的问题。

27、【1027339】修复了由于vb_bulkload获取匹配文件时,未校验文件权限,导致后续读取文件失败后线程退出,导入任务失败的问题。

28、【1027328】修复了\help update未查询到多表关联更新的语句信息的问题。

29、【1027323】修复了由于禁止replace操作自增列,导致在MySQL兼容模式下,表字段含自增属性,replace into语法修改表数据报错的问题。

30、【1027317】修复了\help select查询不到select for update wait n语句信息的问题。

31、【1027149】修复了由于min没有支持oradata,导致oradate字段类型与聚集函数做计算后返回值有误的问题。

32、【1027126】修复了由于MySQL兼容模式下大小写敏感,在创建表的流程中全密态客户端查询数据库系统表时使用了大写字段名导致未查询到oid,导致创建加密表时报错Segmentation fault(core dumped)的问题。

33、【1027098】修复了MySQL兼容模式下,connect by结合any_value函数报错的问题。

34、【1027047】修复了由于缺少非Oracle兼容模式下gs_sm3的入参判空逻辑,导致非Oracle兼容模式下,gs_sm3函数入参为空值时未返回NULL的问题。

35、【1027012】修复了MySQL兼容模式下,当substring_index函数的delim参数为空字符串时,结果返回完整字符串,与MySQL结果不同的问题。

36、【1026697】修复了MySQL兼容模式下视图大小不敏感的问题。

37、【1026292】修复了MySQL兼容模式下,IFNULL函数结合表使用的执行结果与MySQL不同的情况。

38、【1026124】修复了由于未开启enable_cbm_tracking,pg_cbm_tracked_location函数返回空字符串,导致securec_check_for_sscanf_s检查失败,vb_probackup增量备份失败的问题。

39、【1025052】修复了xmltype_extract()、xmltype_sequence()函数的出入参返回结果与预期不符的问题。

40、【1024295】修复了由于未对连接判空,释放非法内存,导致通过vsql调用dblink_connect连接成功后,退出会话,数据库宕机的问题。

41、【1022066】修复了由于缺少继承表的检查逻辑,导致多继承表修改和更新表时,结果不符合预期的问题。

42、【1020080】修复了MySQL兼容模式下,str_to_date函数未忽略字符串末尾的额外字符串的问题。

43、【1020060】修复了匿名块中调用dbms_job.run函数执行定时任务,数据库宕机的问题。

44、【1017973】由于在无法分配出内存的场景,数据库内置变量无法被合理初始化,导致数据库宕机,在本发布中针对此问题的修复方案做出了调整。

45、【1017454】修复了由于dbms_lob中使用的哈希表写坏内存,导致出现数据库宕机的问题。

46、【1016711】修复了创建存储过程时用自治事务将存储过程的SQL内容写入gs_source数据字典,自治事务的实现在并发较高时存在race condition导致bgworker slots被耗尽。

47、【1024151】修复了由于参数default_with_secids开启,导致影响create … as执行,引起数据库宕机的问题。

48、【1021830】修复了由于未完全删除pldebugger插件功能,导致用户仍可以使用pldebugger插件的问题。

49、【1028244】修复了pg_resetxlog设置”-x 事务id”为-1,1,2值时成功,但设置后数据库无法启动的问题。

50、【1028252】修复了sigbus信号处理会写pg_log日志的问题。

行为变更

变更项 升级前 升级后
guc参数default_with_secids default_with_secids参数影响create...as...语法。 default_with_secids参数不影响内核逻辑,参考PostgreSQL做保留设计。
pldebugger/pldbgapi插件 支持使用pldebugger/pldbgapi插件。 不支持使用pldebugger/pldbgapi插件。
pg_resetxlog的参数值 pg_resetxlog的参数值-x、-e、-o、-m 可以为负数,且-x的值可以<3。 pg_resetxlog的参数值-x、-e、-o、-m 不可为负数,且同时-x的值需要 >= 3。
sigbus信号的处理 sigbus信号的处理可能会写系统日志(受syslogger线程周期的影响)。 sigbus信号的处理不会写系统日志。

相关链接:升级方法介绍