VastbaseG100

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

Menu

V2.2 Build 12

版本升级指南

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

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

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

注:目前V2.2 Build 12内升级需要重新初始化的版本:暂无。

补丁编号说明

例:2-2.2-10-92-702-9104-kylin-v10sp1-x86-64-hygon-1.0.1-06-20230308.tar.gz

补丁编号规则:

TYPE-VERSION-BUILD-BGCORE-SMCORE-SVN-OSCPU-VPATCHNO-PATCHNO-DATE

编号规则 含义说明
TYPE 类型
One off patch,TYPE=1
PSU,TYPE=2
PSR,TYPE=3
VERSION 适用该补丁的Vastbase G100产品大版本号,如2.2。
BUILD 适用该补丁的Vastbase G100产品BUILD号,如8、9、10。
BGCORE 适用该补丁的Vastbase G100产品内核大版本号,如内核版本号为92.456,此时该值为92。
SMCORE 适用该补丁的Vastbase G100产品内核小版本号,如内核版本号为92.456,此时该值为456。
SVN 适用该补丁的Vastbase G100产品的内部SVN提交号。
OSCPU 标识操作系统和处理器。
VPATCHNO Vpatch版本号。
PATCHNO patch编号。
DATE 发布日期。

升级方法介绍

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

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

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

Vastbase G100 V2.2 Build 12

发布日期

2023年03月17日

新特性

1、支持无过度损失的自动恢复,即当数据库由于GUC参数无效导致进程启动失败时,数据库可以通过单用户single模式登录进入维护模式,并通过该模式修改无效的guc参数。

2、支持数据库启动及安装包完整性校验,对重要文件可以生成对应的MD5文件、提供MD5检验功能、提供恢复功能。

3、新增支持事件触发器

4、支持OEM标识定制,包括安装介质名称、vsql登录显示的产品标签、版本查询函数显示,也可以使用编译参数控制OEM信息和安装包OEM信息。

5、支持IP白名单查询和更新的函数

6、新增GUC参数vb_max_dbms_locks用于限制dbms_lock的最大数量,参见GUC参数说明vb_max_dbms_locks

7、新增Oracle兼容性:

8、新增MySQL兼容性:

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

    • UNIX_TIMESTAMP,获取时间戳。
    • SUBSTRING_INDEX,按照指定的分隔符划分字符串,返回以分隔符分割的原字符串中对应索引位的子字符串。
    • CONV,用于将数值从一种进制转换为另一种进制,函数返回值为目标进制字符串的形式。
    • DATE,用于提取日期或日期时间表达式的中的日期部分。
    • CURRENT_DATE,获取当前日期(不包含时分秒)。
    • FIELD,用于查找特定字符串在给出的若干个字符串序列中的位置。
    • ISNULL,用于判读输入的参数是否为null,如果输入参数为null返回true,否则返回false。
    • JSON_VALID,用于判读输入值是否为合法的JSON数据。如果输入值是合法的JSON数据则返回1,否则返回0。
    • LOCATE,用于查找子字符串在原字符串中的位置。
    • DATEDIFF,用于返回两个日期之间的天数。
  • 支持longblob数据类型,详见数据类型,可以用于存储大型二进制对象(BLOB)。

  • 支持UUID到字符串类型的隐式转换

  • 支持SELECT @i:=expr方式赋值查询,输出查询结果并将查询结果存储到“@i”中,若查询结果有多行,则存储最后一行数据。

  • 支持使用DECLARE … CONDITION语句声明一个命名的错误条件,可以为错误号或者SQLSTATE重命名,在异常处理中可以使用声明的 CONDITION。

  • 支持IGNORE INDEX,参见IGNORE|FORCE INDEX语法

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

  • 多表关联查询支持COUNT函数:支持多表关联查询且无分组,结果集为空的情况下使用COUNT聚合函数。

9、新增SQL Server兼容性:

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

    • CHARINDEX,在第二个字符表达式中搜索一个字符表达式,返回第一个表达式(如果发现存在)的开始位置。
    • STR,返回数字数据转换来的字符数据,具有指定长度和十进制精度。
    • SYSDATETIME,返回计算机的日期和时间,返回值为timestamp类型。
    • COUNT_BIG,返回表中的非空记录条数,返回值为bigint类型。
    • LEN,返回字符串的字符数,不包含尾随空格。
    • DATENAME,返回表示指定 date 的指定 datepart 的字符串,返回值为varchar类型。
    • DATEPART,返回表示指定 date 的指定 datepart 的整数,返回值为整数类型。
    • DATEADD,在日期中添加或减去指定的时间间隔。
    • CONVERT,将表达式由一种数据类型转换为另一种数据类型,返回值为函数中指定数据类型。
    • GETDATE,返回当前数据库系统的时间戳,函数的返回值为timestamp类型。
    • ISNULL,判断表达式的值是否为NULL。当表达式值被判断为NULL时,使用指定的值替换NULL值。
    • DATEDIFF,计算两个日期之间的时间间隔。
  • 新增了对以下数据类型的支持:

    • VARBINARY,可变长度二进制字符串类型,存储的是二进制数据。
    • TABLE,作为表值参数,以INPUT输入形式传递到存储过程或函数中。
    • SQL_VARIANT,保存非用户定义类型(除特殊说明的类型)的值,并保留原类型信息。
    • NTEXT,可变长度,用于存储大量Unicode文本数据。
    • SMALLMONEY,代表货币或货币值的数据类型。
    • DATETIME2,datetime2类型结合了24小时制时间的日期,精确到小数点后6位。
    • UNIQUEIDENTIFIER,用于确保表的多个副本中唯一标识行。
  • 支持对字符串进行加法操作,字符串相加的操作作为字符串的连接返回,参见字符操作符+

  • 支持使用TRY CATCH捕捉异常。

  • 支持OUTPUT语法,返回受SQL语句影响的各行中的信息。

10、新增平台适配情况如下:

CPU型号 操作系统 操作系统版本号
飞腾s2500 Kylin V10专用版操作系统
FusionOS 22
UOS V20(1050a)
V20(1050e)
飞腾s2000 UOS V20(1020d)
龙芯 UOS V20(1050a)
海光 UOS V20(1050e)

特性优化

1、SQL语法

2、审计日志

3、备份工具

支持vb_dump导出SQL文本格式时使用子命令--table conditions指定导出条件。

4、外部数据封装器

支持POSTGRE_FDW功能连接PostgreSQL 11数据库。

使用限制

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

缺陷修复

1、【1021159】修复了由于存储绑定变量的变量大小为8192,当批量使用MERGE INTO 语句时绑定变量超过8192时引发数据库宕机的问题,增加了校验逻辑,大于8192时则报错。

2、【1022911】修复了MySQL语法解析位置报错顺序错误的问题。

3、【1021043】CLUSTER过程中使用tuplesort_performsort排序,内存不足时采用外部排序,在归并阶段从磁盘读取元组到内存时会统计内存消耗,但目前代码中并非每次读取元组时都会申请内存,现有代码的统计内存消耗逻辑有误,导致执行cluster pg_class引起数据库挂库。

4、【1020289】修复了由于select to_char在rm和RM格式时未考虑输入月份为负数的情况,通过数组获取结果时越界,导致数据库挂库的情况。

5、【1022984】修复了当jdbc设置的setmaxrows行数大于表的总记录数时,由于未结束事务,导致没有关闭表并释放表级锁资源的问题。

6、【1020553】修复了由于jdbc_fdw每次连接远端读取数据只读一行,导致通过DBLINK查询Oracle表耗时久的问题。

7、【1020786】修复了MySQL兼容模式下使用SUBDATE(expr,days)时,date为time类型,返回结果与MySQL不一致的问题。

8、【1020431】修复了在存储过程中,注释符#放在end之前,注释与结束符号识别冲突,导致创建存储过程报错的问题。

9、【1016837】修复了当自定义类型成员方法与get关键字重名时,无法通过自定义变量名.函数名的方式调用的问题。

10、【1016767】修复了member procedure无法直接通过自定义变量名.存储过程名的形式调用的问题。

11、【1021967】修复了集合方法delete/trim/first/last/count等方法无参数调用时带括号,语法报错的问题。

12、【1020876】修复了memcheck模式下,由于上下文异常导致宕机的问题。

13、【1020875】修复了由于释放表达式上下文过早,运行plpgsql语句时出现了使用已释放内存的现象,导致memcheck模式下执行dbms_metadata出现宕机的问题。

14、【1020874】修复了package中自定义的varray类型作为package函数或者存储过程入参类型,当数组使用数组ARRAY[1,2,]方式给该函数或者存储过程传参时,没有将数组和plpgsql集合类型的数组进行转换适配导致执行plpgsql_override_out出现宕机的问题。

15、【1018333】修复了由于number类型的interval分区间隔内存中使用了二级指针存储,导致某些时候二级指针下存储实际的间隔值会与表处于不同的内存上下文,则功能无法正常使用的问题。

16、【1022885】修复了由于deparse函数不准确,导致的SELECT OUTPUT结合TOP语法查询前n%条数据执行报错的问题。

17、【1021244】修复了interval分区不支持select subpartition for功能的问题。

18、【1021532】修复了使用DBMS_LOB包中copy存储过程报错的问题。

19、【1020323】修复了由于包含int128类型的变量Estate结构体申请的内存首地址未进行16字节内存对齐,导致调用存储过程时数据库挂库的问题。

20、【1019663】修复了SQL Server兼容模式下设置result_case_mode成功且生效的问题。

21、【1019400】修复了查询条件中使用is null=''=' ' is null或者 = ''查找空值时,select结果与预期不符合的问题。

22、【1018546】修复了由于调用array_ref函数实现判断null功能,同时调用array_seek函数导致数据库卡住的问题。

23、【1021239】修复了变量保存在package编译所得结构体中,没有在调用内置包函数时重置的问题。

24、【1022278】修复了由于审计模块收集约束报错信息时,对信息的截断代码有问题导致触发约束时需要打印的报错信息大于2000字节时报错的问题。

25、【1021855】修复了PGHOST环境变量导致数据库启动失败的问题。

26、【1021824】修复了分区表不记录vacuum信息的问题。

27、【1021777】修复了EVENT TRIGGER对应的帮助信息打印返回错误的问题。

28、【1021733】修复了在MySQL兼容模式下,触发器设置自定义变量报错的问题。

29、【1021117】修复了pg_get_tabledef()查询表结构时,如果只带on update属性,会多出default关键字。

30、【1021113】修复了ceil()函数内部嵌套函数tan(),结果为-0的问题。

31、【1021110】修复了由于未检查子分区的tablespace 是否为pg_global,导致二级分区表分区可以指定tablespace为pg_global的问题。

32、【1022658】修复了由于在生成下层query时,输出列分组编号丢失导致语句含order by时报错的问题。

33、【1022585】修复了copy语句返回内容出错的问题。

34、【1022561】修复了system表在执行增加列操作后备份成功,但恢复时出现报错的问题。

35、【1022329】修复了IGNORE INDEX和INDEX HINT同时使用时二者优先级别的问题。

36、【1022314】修复了\h insert语法树中没有insert into value的问题。

37、【1022313】修复了\h insert语法树中没有insert ignore的问题。

38、【1022312】修复了\h insert语法树中没有ignore index的问题。

39、【1022307】修复了未兼容mysql格式日期的问题。

40、【1021794】修复了由于原有行专列算子在维护算子的ps_num时没有适配列向量,导致行存表打开强制向量化后执行含rownum的用例执行结果与预期不符的问题。

41、【1021396】修复了由于false常量下推逻辑出错,导致在查询DBLINK表,where条件为false时报错的问题。

42、【1021131】修复了修改jdbc_fdw.maxheapsize参数值后,后台日志持续报错的问题。

43、【1020944】修复了由于未将rownum过滤条件下推,导致列存表外层having引用子链接中的目标列时出现报错的问题。

44、【1020916】修复了connect by 语法中start with 中使用条件表达式:greatest、least、nullif、decode、casewhen 均报不支持的问题。

45、【1020912】修复了connect by 语句 where中使用条件表达式,结果与Oracle不一致的问题。

46、【1020139】修复了打开query_dop后,执行含/*+ choose_adaptive_gplan */ 的pbe的connect by 查询语句时,execute执行时报错的问题。

47、【1019943】修复了unpivot 查询与/*+ choose_adaptive_gplan */ 交互使用时出现报错的问题。

48、【1018747】修复了由于在保存Plan时重新设置包含subquery的var的varno属性时,导致varno与原来的不符,再次查询时找不到对应下标的relation,导致打开enable_cachedplan_mgr后,执行含/*+ choose_adaptive_gplan */的PBE查询报错的问题。

49、【1014134】修复了由于ModifyTable的partitionOid属性在copyfuncs函数中没有处理,导致通过触发器给system分区插入数据报错不支持的问题。

50、【1022676】修复了建表字段使用Like 语句的报错信息错误的问题。

51、【1022262】修复了在MySQL兼容模式下,更新varchar为字段的值为boolean值,查询结果出错的问题。

52、【1022103】修复了ALTER TABLE报错信息内容错误的问题。

53、【1022071】修复了由于对排序表达式进行处理的时候未考虑一元表达式的情况下空指针错判,导致数据库挂机的问题。

54、【1020906】修复了由于自增列在视图查询处理类型为'L',查询中没有添加上该类型的查询,导致在MySQL兼容模式下,创建含有自增列字段的表查看不到该序列视图。

55、【1021035】修复了由于未对T_WORD类型双引号情况处理,导致在Oracle兼容模式下,函数名重载时参数名包含双引号引用的特殊字符,包内调用存储过程失败的问题。

56、【1020695】修复了在MySQL兼容模式下,由于反引号和特殊字符会识别为操作符,导致创建表名带反引号、特殊字符时创建失败。

57、【1020643】修复了由于非法模型时数组访问越界,导致CREATE MODEL引起数据库挂库的问题。

58、【1019913】修复了由于pg_pltemplate表中的tmpllibrary列除了plpgsql都未做特殊处理,导致执行create language plperl/pltcl时提示环境 变量中包含非法符号 “$”错误的问题。

59、【1019741】修复了由于sql语句密码脱敏时处理不当,导致执行alter user后数据库挂库的问题。

60、【1019716】修复了由于函数表别名处理没有敏感处理,导致出现大量内核失败的error的问题。

61、【1019447】修复了由于glibc 2.12 fork与dprint/vdprint/syslog同时使用时会导致fork失败,则调用python初始化的库会引起数据库挂库的问题。

62、【1019404】修复了dbms_lob.copy分配内存失败,导致数据库挂库的问题。

63、【1019290】修复了在 memcheck版本全密态执行vb_dump时,对于列密钥的导出会有heap-buffer-overflow(内存未置0,遍历时以\0为结束标识,导致访问到分配的内存之外)和内存泄漏的问题。

64、【1018652】修复了在设置plpgsql.enable_native_code成功后,创建存储过程提示warning,不能识别该参数的问题。

65、【1021256】修复了在MySQL兼容模式下,执行character_unit/character_unit_parallel出现宕机的问题。

66、【1021255】修复了在MySQL兼容模式下,执行db4ai_gd_snapshots出现宕机的问题。

67、【1021185】修复了执行gs_restore命令时挂库的问题。

68、【1020647】修复了由于Oracle中集合类型只有varry和嵌套表在调用函数prior/next/first/last/delete/extend/trim/count时,没有初始化时报集合没初始化的错误,导致没有定义元素时调用PRIOR函数报错的问题。

69、【1020535】修复了由于package中声明的变量与一般pl_block块中声明的变量保存位置不同,在寻找变量时没有找到,导致在package body中不支持自定义exception类型变量的问题。

70、【1022714】修复了由于设置审计线程数时,当已存在的审计日志文件数小于新设置的审计线程数,重启数据库在为pos - thread_num时,因pos < thread_num且为无符号整型导致计算结果为一个超大值 ,导致后续根据这个超大值作为偏移量访问到非法内存而启动审计线程失败,数据库启动后宕机的问题。

72、【1022943】修复了由于isnull标记为false,导致构造元组时values为空指针,从而引起挂库的问题。

73、【1020769】由于在创建的pipelined函数的返回类型还是集合类型,导致使用pipeline函数的时,jdbc返回数组失败。

74、【1019502】修复了JDBC连接时传入空user返回提示信息出错的问题。

75、【1018714】修复了由于show命令的逻辑处理中,部分pgut_strdup函数拷贝的变量未进行释放,导致vb_probackup执行失败的问题。

76、【1017942】修复了由于在RemoveTempNamespace的时候,释放信息不合理,导致后续步骤中使用到了前面已释放的内存。

77、【1021859】修复了由于大对象创建、删除时未进行权限控制,导致在开启三权分立的情况下,vbaudit、vbsso管理员可以创建大对象,无法修改大对象所有者的情况。

78、【1021620】修复了由于计算元组大小时出现空指针,导致查看内置系统管理函数信息时执行select pv_builtin_functions()数据库宕机的问题。

79、【1020805】修复了由于在包体编译过程中语义解析时代码逻辑错误,导致在包体内引用包名失败的问题。

80、【1020123】修复了由于package调用同名函数的优先级未处理,导致当package中函数与数据库中存在的函数同名时,调用package中函数失败的情况。

81、【1018933】修复了包内包含同名存储过程时,跨用户调用创建同义词调用失败的问题。

82、【1021161】修复了由于decoderbufs插件部分日志级别有误,导致pg_log输出大量复制槽相关日志的情况。

83、【1022832】修复了由于在MySQL兼容模式下,参数类型转换时没有对USERVAR类型特殊处理,导致用户自定义变量赋值进行除法运算时报错的情况。

84、【1022825】修复了在字符安装数据库时,不指定实例路径执行vb_stop命令时数据库core dump的情况。

85、【1022003】修复了在SQL Server兼容模式下,含NULL值的SQL查询结果的排序顺序与SQL Server不一致的情况。

86、【1021985】修复了由于array first、last、count、prior、next、exists函数未处理完全,导致PLSQL关联数组下标无法引用对象属性的情况。

87、【1021611】修复了在x86(海光)架构的kylin v10sp1系统上构建安装包失败的情况。

88、【1020339】修复了由于在线程主循环中,pagewriter进行waitlatch操作以后没有resetlatch,导致其在循环中不断识别到latch操作,从而占用CPU达到100%的问题。

89、【1021765】修复了由于第三方连接池durid导致在裸机主备环境tpcc压测过程出现中连接不可用、传输过程出错的报错信息的情况。

90、【1020873】修复了在MySQL兼容模式下,处理相关字段时引号信息判断出错,导致函数中使用case when条件语句创建函数成功但调用报错的问题。

91、【1014644】修复了在MySQL兼容模式下,不可用PostGIS但没有报错信息的问题。

92、【1013584】修复了由于Vastbase不支持修改外部表的模式,导致报错的问题。

93、【1022898】修复了由于MySQL兼容模式下默认大小写敏感,vsql在建立连接时,如果-C开启全密态则会执行一条SQL查询type.oid,但执行sql中oid写为'Oid',而在获取查询结果时,是和'oid'进行比较导致-C创建加密表报错的问题。

94、【1022655】修复了由于优化全连接时生成错误targetlist,导致full join报错的问题。

95、【1022617】修复了由于在MySQL兼容模式下,int类型的所有二元操作符都会把int当numeric用,引起函数匹配失效,导致在使用jsonb相关操作符时报语法错误。

96、【1022529】修复了在MySQL兼容模式下,执行reindex index concurrently 报语法错误的问题。

97、【1022220】修复了受enable_default_ustore_table=onignore_system_indexes=on两个参数配置的影响,向ustore表插入toast数据出现数据库宕机的问题。

98、【1022072】修复了由于未涉及权限检查 ,导致对数据库对象设置敏感标记后,执行insert语句出现core dump的问题。

99、【1022054】修复了在SQL Server兼容模式下,设置try_vector_engine_strategy参数后,执行select top语句出现core dump的问题。

100、【1022007】修复了由于并行回放逻辑有问题,导致在MySQL兼容模式下执行备份恢复后数据库无法启动的情况。

101、【1021867】修复了由于重复inline CTE造成逻辑错误,导致执行full jion语句报错,提示could not find plan for CTE ‘%s’ when set cte pathlist。

102、【1021758】修复了在MySQL兼容模式下,NULL没有被转成小写null,但使用strcmp函数只针对null,导致copy语句不识别NULL关键字的问题。

103、【1021746】修复了由于在MySQL兼容模式下,compression为非保留关键字,alter table 语法中缺少compression语法,导致执行alter table tablename reset (compression)语法报错的问题。

104、【1021737】修复了由于动态脱敏相关的函数在创建时内部调用的是大写的regexp_replace,而该函数存储在系统表中实际上是小写的,导致在执行动态脱敏操作时报错找不到函数的问题。

105、【1021724】修复了由于declare cursor语法与原有cursor语法冲突,导致在MySQL兼容模式下,创建存储过程中将loop循环和游标结合,报语法错误的情况。

106、【1021682】修复了在MySQL兼容模式下创建大写视图名称会转为小写,导致通过大写名称查询无法查询到的问题。

107、【1021815】修复了由于参数类型中不包括case when语句,导致subdate中使用case when语句报错的情况。

108、【1021464】修复了由于pg_default系统表空间删除或者从系统表pg_tablespace中删除不会报错,导致使用该表空间创建或者删除数据库的时候无法创建数据库目录,出现MySQL兼容模式下创建视图并删除数据后无法重新创建vastbase数据库的情况。

109、【1020132】修复了create table like语句报错信息出错的问题。

110、【1018938】修复了由于insert all在dual视图在重写视图规则时,使用了视图定义的投影,该视图只有一个属性dummy,导致使用insert all语句插入unknown类型时,报错信息提示不匹配未进行隐式转换的问题。

111、【1017551】由于full join 重写时会创建新的RTE表,遍历joinaliasvars生成新的vars替换之前旧的vars,当vars不为单纯的T_VAR类型时会直接拷贝该node用于后续替换,但前序处理中对jointree做了表达式处理,在更新jointree时判断表达式vars无法替换导致采用旧的vars,导致full join执行报错:JOIN qualification cannot refer to other relation。

112、【1016457】修复了insert all的投影是最后一条插入表的投影,因此子查询的计划投影被替换成了insert all的投影,导致插入记录获取子查询的记录属性就是最后一张表的投影对应的所有属性,但是when中的属性却不在该投影中,因此在进行条件判断时属性不在返回的记录中的情况。

113、【1016285】修复了由于insert all向表插入数据库时,没有获取各张表的索引信息,则插入索引就不会进行主键约束校验,导致insert all&first语句插入有主键限制的表时,重复数据会插入成功的情况。

114、【1020329】修复了由于翻译原因导致产生core dump文件的问题。

115、【1020328】修复了topology的sql脚本中会将topology加入到search_path中,但是没有考虑当前schema,导致使用新建的schema下创建postgis_topology扩展,无法创建成功的情况。

116、【1019731】修复了由于varchartojsonb、varchartojsonpath输入参数错误,导致单机长稳产生core dump文件的情况。

117、【1021858】修复了由于探测包依赖性的函数只有依赖当前包的包对象,没有当前包依赖的包对象,导致pkg中函数调用另一pkg中变量,会话中无pkg编译结果时,call执行与匿名块执行结果不一致的情况。

118、【1011618】修复了由于postmaster线程和会话线程之间存在竞态条件导致会话线程执行错误,导致自治事务从共享内存获取返回值长度为0的问题。

119、【1019662】修复了在SQL Server兼容模式下,可以使用long类型且建表可以成功的情况。

120、【1019493】修复了由于varchar适配了按字符计算长度,但bulkload没有对此情况进行特殊处理,导致使用vb_bulkload向表字段类型为character(3 char)导入长度在范围内的数据时报错提示超长的情况。

121、【1015486】修复了在MySQL兼容模式下调用存储过程带入传参修改,未对into的场景按照execsql处理,导致在自定义函数使用call function into将返回值传给变量失败的情况。

122、【1022687】修复了datediff函数无参无括号调用时,数据库断开连接的情况。

123、【1022669】修复了设计上防篡改表不支持ustore引擎,但是代码逻辑上并未限制,导致创建成功但是hash列没有值的情况。

124、【1022607】修复了由于在insert索引时,slot的desc和表的desc不匹配,当获取hash列值时attrno大于slot->desc的总列数,导致在防篡改表创建索引后,设置enable_opfusion为off,插入数据报错attribute number 3 exceeds number of columns 2的情况。

125、【1021931】修复了非Oracle兼容模式下,无法支持不加as时authid作为别名的情况。

126、【1021826】修复了由于date被映射为oradate类型,未允许oradate类型创建防篡改表,导致防篡改用户表不支持date类型的情况。

127、【1021612】修复了字段类型为布尔类型时指定auto_increment属性,查询结果布尔值与MySQL不一致的情况。

128、【1018964】修复了数据库参数配置不合理,数据库启动失败时的提示信息出错的情况。

129、【1023247】修复了由于在改写SQL时忽略常量处理,导致数据库中常量后加聚合函数嵌套报错的问题。

130、【1021925】修复了由于创建同义词没有判断是否存在同名的关系、类型、函数和存储过程,导致视图与同义词使用相同名称时未报错,但仅可查出视图数据的情况。

131、【1023271】修复了增删改查操作之后不支持交换二级分区的报错信息内容不明确的情况。

132、【1023266】修复了由于系统分区不能使用isTupleLocatePartition判断tuple是否在分区中,导致普通表增加一列后再删除,与系统分区做交换时报错的情况。

133、【1022764】修复了对range分区使用DBMS_UTILITY.ANALYZE_SCHEMA存储过程报错的问题。

134、【1022746】修复了建表将模式名加双引号设为大写,DBMS_UTILITY.ANALYZE_SCHEMA的schema入参为大写模式名时报错的问题。

135、【1022741】修复了由于未给DBMS_UTILITY.ANALYZE_SCHEMA最后三个入参设置默认值,导致入参省略后三个参数时执行存储过程报错的问题。

136、【1022622】修复了由于tupledesc->attrs中存在被删除的列,导致用分区表的分区键所在列去找对应的普通表的列错误的问题。

137、【1022555】修复了由于对于含有游标类型参数的包函数进行拷贝游标数据操作时pkg包中的ndatum变量两边对不上,导致产生数组越界,数据库断开连接的情况。

138、【1022430】修复了CTE表中的字段与SELECT出来的字段大小写一致的,大小写敏感,导致定义CET之后查询使用别名作为连接条件回报错的情况。

139、【1022282】修复了由于没有在执行BULK COLLECT INTO前会先将目标对象清空,导致执行SELECT BULK COLLECT INTO到数组结果与Oracle不一致的情况。

140、【1022061】修复了由于语法解析出错,导致将%ROWTYPE声明的变量赋值后插入表后报错的情况。

141、【1022048】修复了由于子程序赋值父程序游标变量后使用了pkg 参数,没有排除子程序影响导致执行含显式游标的匿名块时数据库断开连接的情况。

142、【1022043】修复了由于dbms_output.put_line函数重载,但在确定函数重载形式时jobs的tupdes未赋值,导致获取重载函数时失败的情况。

143、【1021615】修复了由于默认的buffer大小为20000,sql语句的数据输出超过了分配的内存大小,导致dbsm_output.put_line输出变量值报错buffer flow的问题。

144、【1021173】修复了regexp_instr函数中第二个参数为正则表达式时,查询结果错误的问题。

145、【1021171】修复了regexp_instr函数中第三个或者第四个参数为null时,查询结果错误的问题。

146、【1019344】修复了在层次查询中组合函数使用,查询报错找不到列的情况。

147、【1021774】修复了reassign owned语法修改触发器属主失败,但原属主drop owned删除失败,新属主删除成功的问题。

148、【1021708】修复了使用ignore hint时,float4/float8类型在非法输入时插入失败的问题。

149、【1020768】修复由于未增添对列存表的检查,导致为列存表设置敏感标记成功的情况。

150、【1020756】修复了由于未添加用户权限检查,导致普通用户删除敏感标记成功的情况。

151、【1022301】修复了由于default_with_secids错误生效导致数据库宕机的问题。

152、【1019678】修复了由于在备机进行reset_shared操作,重新为dbms_shmmc申请共享内存时,全局指针变量list没有置空,跳过了初始化操作,后续操作使用了已被释放过的无效内存地址,导致在执行级联备库和备库切换时,级联备库宕机的问题。

行为变更说明

变更项 升级前 升级后
date_sub和date_add函数 MySQL兼容模式下:
date_sub和date_add函数中时间类型为time,加减的时间间隔类型属性中含有不属于time类型中的属性时,报waring:Datetime function :time field overflow ,并返回NULL。
MySQL兼容模式下:
  • 当时间类型为time时,加减的时间间隔类型属性中为day时,正常执行,其他情况保持不变。
  • 运算结果超过MySQL中对time类型的限制范围时,报waring:Datetime function :time field overflow ,并返回NULL。
  • GUC参数b_compatibility_mode 在MySQL兼容模式下,#被识别为注释符号。 增加GUC参数b_compatibility_mode,默认值为0。在MySQL兼容模式下:
    • 参数值置为1,则将#识别为注释;
    • 参数值置为0,则将#识别为异或。
    number类型 不允许创建间隔值很大的number类型interval分区表。 number类型interval分区表支持使用较大的间隔值。
    GUC参数result_case_mode 在非Oracle兼容模式下可以设置result_case_mode参数。 所有兼容模式都允许show和set result_case_mode,但仅Oracle兼容模式能生效。
    pg_proc表的prokind列 查询pg_proc表中存在prokind列为0值。 查询pg_proc表中所有函数的prokind都有对应的值,且为'f','w','p'三者之一。
    内置包函数DBMS_SESSION.modify_package_state() 函数入参为2时,变量未立即重置,直至下一次执行package初始化块。 函数入参为2时,在不释放package内存的情况下重置package内变量、初始化标记等。比直接释放package内存,立即重置变量的效率更高。
    unpivot 查询与/*+ choose_adaptive_gplan */ 交互使用 unpivot 查询与/*+ choose_adaptive_gplan */ 交互使用报错。 unpivot 查询与/*+ choose_adaptive_gplan */ 正常交互使用。
    开启三权后,审计员和安全员创建、删除大对象 审计员和安全员创建、删除大对象成功。 审计员和安全员创建、删除大对象失败。
    jdbc_fdw jdbc_fdw无fetchsize选项。 jdbc_fdw增加fetchsize选项,用于指定预取行数。
    外部表 不允许修改外部表的模式。 允许修改除mot内存表外的外部表的模式。
    AUTO_INCREMENT自增列 MySQL兼容模式下,AUTO_INCREMENT自增列支持BOOL类型。 MySQL兼容模式下,AUTO_INCREMENT自增列不支持BOOL类型。
    GUC参数default_with_secids 参数default_with_secids影响create...as...的使用。 参数default_with_secids保留,但不影响内核设计,即该参数被废弃。