VastbaseG100

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

Menu

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

发布日期

2023年8月15日

升级方式

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

commit 标识:15020

新特性

1、新增以下Oracle兼容性:

  • 新增CREATE CONTEXT语法,用于创建用户自定义的namespace。

  • 新增ASCIISTR函数,用于将输入的字符串转换为ascii码串。

  • 新增以下内置包函数:

    • UTL_RAW.BIT_XOR:将输入的RAW r1和RAW r2中的值执行按位逻辑异或运算,并返回异或结果。

    • UTL_RAW.LENGTH:用于返回将输入的RAW r的字节长度。

    • UTL_RAW.SUBSTR:用于返回len个字节,从RAW r的pos位开始计算。

    • DBMS_JOB.SUBMIT:新增Oracle兼容模式下的特定语法,支持在传参时使用参数名=>参数值的写法。

    • DBMS_JOB.CHANGE:修改一个定时任务。

    • DBMS_SESSION.CLEAR_ALL_CONTEXT:用于清除当前命名空间即命名空间中的所有attribute-value值。

    • DBMS_SESSION.SET_CONTEXT:在用户自定义的命名空间下设置attribute-value值。

    • DBMS_RLS.ADD_POLICY新增支持package函数。

  • 新增以下系统视图:

    • DBA_JOBS:提供了用户创建的定时任务的详细信息。

    • DBA_POLICIES:提供了Vastbase支持的虚拟专用数据库(VPD)安全策略。

2、新增以下MySQL兼容性:

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

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

  • 新增以下函数:

    • MY_ENCRYPT_AES128:基于AES算法,使用密钥字符串对明文字符串进行加密。

    • MY_DECRYPT_AES128:根据给出的密钥字符串返回加密字符串的解密结果。

    • HEX:用于将输入的数据转换为十六进制表现形式。

    • UNHEX:用于将一个十六进制编码的字符串解码。

    • TO_BASE64:根据BASE64编码规则,将一个字符串编码成BASE64编码格式,返回字符串的编码结果。

    • FROM_BASE64:根据BASE64编码规则,将一个BASE64编码的字符串解码,返回字符串的解码结果。

  • 新增以下SQL语法特性:

    • 支持在CREATE TABLE建表时指定字符集。

    • 支持ALTER TABLE在使用MODIFY子句修改表的已有字段时使用可选关键字COLUMN。

    • 支持在ALTER TABLE ADD或者ALTER TABLE MODIFY的同时支持通过FIRST或AFTER关键字指定新增字段的位置或被修改后字段的位置。

    • 支持使用CHANGE COLUMN语法修改表列的名字和类型。

    • 支持在INSERT语句中使用IGNORE选项。

3、新增以下SQL Server兼容性:

  • 新增以下函数:

    • DATEPART:返回表示指定 date 的指定 datepart 的整数,返回值为整数类型。212

    • DATENAME:返回表示指定 date 的指定 datepart 的字符串,返回值为varchar类型。

    • GETDATE:返回当前数据库系统的时间戳,函数的返回值为timestamp类型。

    • DATEADD:在日期中添加或减去指定的时间间隔。

使用限制

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

缺陷修复

1、【1029780】修复了在vb_dump导出sequence的过程中,由于在获取sequence oid的语句中,部分sequence name误用了双引号,导致找不到对应的oid从而引起导出失败的问题。

2、【1029627】修复了MySQL兼容模式下使用hour()函数时,若入参时间为NULL,返回结果为0,与MySQL的返回结果NULL不一致的问题。

3、【1029504】修复了创建分区表并插入数据后,分区表数据量分布有误,并且查询分区表数据量分布显示每个分区的num_rows都和表的总条数相同的问题。

4、【1029498】修复了由于sys_connect_by_path不支持level输出列导致该函数无法在函数内引用子查询字段的问题。

5、【1029367】修复了设置参数plsgl_show_all_error = true,resource_track_log='detail' 的前提下,创建函数失败时引起数据库宕机的问题。

6、【1029366】修复了执行DELETE PLAN_TABLE操作引发数据库宕机的问题。

7、【1029365】【1029364】修复了由于代码逻辑问题导致访问了堆上一个被释放的内存地址,导致使用数据库时报错提示“heap-use-after-free”并宕机的问题。

8、【1029061】修复了数据库无法执行vacuum subpartition语法的问题。

9、【1028892】修复了使用convert函数将smalldatetime类型数据转换为空时报错的问题。

10、【1028888】修复了在PL/SQL中无法使用insert all into语法的问题。

11、【1028637】修复了子查询出现在on中,使用外层别名进行查询时报错提示字段不存在的问题。

12、【1028885】保存信息的内存大小判断逻辑有误,导致没有预分配足够大的内存,出现写越界,数据库宕机的问题。

13、【1027615】修复了在数据库中创建包含start with..connect by的物化视图时报错提示ERROR: invalid varno 4的问题。

14、【1024889】修复了使用列存表的auto-updated属性时列自动更新失败的问题。

15、【1024767】修复了跨schema重写父类,包内存储过程调用类型创建包失败的问题。

16、【1024043】修复了由于plpython内存管理机制不合理导致创建扩展plpython3u引发数据库宕机的问题。

17、【1018939】修复了在数据库中执行左表数据重复率100%,右边数据库重复率0%的关联查询,引起系统OOM的问题。

18、【1030535】修复了在配置文件rsyslog.conf所指定的路径下没有记录审计日志的问题。

19、【1030453】修复了主备库数据表使用select count(1)查询的数据量不一致的问题。

20、【1029425】修复了使用json_extract函数时无法通过PrepareStatement.setString传值的问题。

21、【1029305】修复了使用Vpatch升级后存在smalldatetime类型到longtext类型转换的问题。

22、【1030514】修复了由于数据库对初始系统表进行了限额判断导致死锁从而引发数据库宕机的问题。

23、【1027966】修复了因允许在流复制环境对系统表执行dynamic_load函数,导致在数据库集群运行过程中备库core dump的问题。

行为变更说明

变更项升级前升级后
hour()函数传入空字符串时的返回结果 返回0 返回NULL
策略审计日志记录方式变更 策略审计日志的日志信息记录到系统文件/etc/rsyslog.conf指定的路径中。 策略审计日志的日志信息记录到安全审计日志中,使用pg_query_audit函数进行查询。
dynamic_load函数 允许在流复制环境对系统表执行dynamic_load函数。 不允许在流复制环境对系统表执行dynamic_load函数。
GUC参数wal_level设置为logical可能出现主备数据不一致的情况。设置为logical时可以正常使用。