VastbaseG100

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

Menu

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

发布日期

2024年4月2日

升级方式

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

commit 标识:19388

新特性

1、支持在触发器内声明自治事务,包括DML类型的触发器和DDL事件触发器。详见自治事务

2、DBMS_SQL.DEFINE_COLUMN 函数新增了对 DATE、CHAR 和 VARCHAR这三种数据类型的支持。详见DBMS_SQL

升级须知

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

已知问题

运行过程中线程会获取操作系统环境变量的值,由于数据库在调用getenv接口时会添加pthread_mutex_lock保护并发访问,但pthread_mutex_lock并没有异常清理机制,倘若在线程持有该锁的情况下异常中止(锁未释放),会出现系统夯住的情况。

行为变更说明

模块 变更项 变更前 变更后 注意事项
GUC参数 skewed_param_factor - 新增此参数,用于指定选用自适应custom计划(plan_cache_mode = 'adaptive_custom_plan' 时)时的偏斜因子。行数最多的值与最少的值之间相差超过这个阈值,认为数据存在偏斜。 新增此参数
enable_ignore_no_data_found_error - 新增此参数,用于控制当PL/SQL中select into返回空值时,是否返回NO_DATA_FOUND错误。开启该参数时,select into返回空值不返回抛出NO_DATA_FOUND错误。 新增此参数
vastbase_sql_mode 请参考vastbase_sql_mode 取值范围新增:pad_char_to_full_length -
max_query_retry_times - 废弃该参数。 -
插件 postgis插件适配st_asgeojson函数的record重载函数 不支持st_asgeojson函数的record重载函数。 支持st_asgeojson函数的record重载函数。 -
SQL语法 B模式下,insert的value列数小于表列数,且不指定列名的情况。 插入成功。 与MySQL一致,结果报错。 例如:
create table t1(a int, b int);
insert into t1 values(1);
修改前,Vastbase插入成功(a=1,b=null),修改后Vastbase与MySQL表现一致,插入失败。需排查业务中相关语句进行修改。
select col from table当col是char(n)时的返回结果。 select col from table当col是char(n)时带空格。 select col from table当col是char(n)时,pad_char_to_full_length开启则选出带空格,否则不带空格,默认pad_char_to_full_length开启。 可根据需求修改参数pad_char_to_full_length设置当col是char(n)时select col from table的返回结果
是否允许消除DISTINCT ON子查询中的ORDER BY子句。 允许消除DISTINCT ON子查询中的ORDER BY子句。 不允许消除DISTINCT ON子查询中的ORDER BY子句。 -
B兼容下的create table … with data/with no data语法。 与PG兼容行为一致。 不再支持这种语法(因为MySQL中并没有这种语法)。 需修改B模式下create table … with data/with no data相关语句

缺陷修复

SQL语法

【1040695】【严重】修复了业务代码执行SQL时在数据库端自行添加了模式名的问题。

【1037661】【1037804】【严重】修复了执行vacuum时报错:ERROR: [HeapTupleSatisfiesNow set HEAP_XMIN_INVALID xid don't abort]的问题。

【1040625】【严重】修复了由于inlist2join中subquery使用不当,导致的SQL执行报错:ERROR: no relation entry for relid 1的问题。

【1037641】【严重】修复了由于对排序表达式进行处理的时候未考虑一元表达式的情况,导致空指针错判,数据库实例crash的问题。

【1035525】【1036187】【严重】修复了由于目标列表中包含了drop的列,导致最后列数与tuple实际不符,最终导致数据库宕机的问题。

【1027428】【一般】修复了connect_by_isleaf选项查询当前行是否为树的叶子节点时查询结果出错的问题。

【1020989】【一般】修复了由于多列统计信息缺失导致的多表关联优化器选择低效率的nestloop的问题。

【1032381】【一般】修复了SQL中存在longtext字段,有重复主键时报错信息有误的问题。

【1033193】【一般】修复了SQL Server兼容模式下,由于语法解析问题导致的datepart(year,getdate())列定义vb_dump导出再导入报错的问题。

【1037111】【一般】修复了由于分区表校验LOCAL唯一索引时从主表读取数据,但主表中不存储数据,没有实际物理文件,导致读取报错ERROR: could not open file "xxx"的问题。

【1037182】【一般】修复了由于longtext的opclass不对,导致执行查询语句时报错ERROR: missing support function 1(25,85) for attribute 1 of index "users_pkey"的问题。

数据类型

【1022465】【严重】修复了由于oradate类型缺少相关索引处理函数,导致使用索引过程中找不到函数,从而报错missing support function的问题。

【1037673】【严重】修复了由于object类型删除时没有删除构造函数在pg_shdepend中的记录,导致用户存在依赖关系无法删除的问题。

【1040929】【严重】修复了由于缺失long/long_raw等基础类型对应的数组类型,导致Long raw 类型获取结果失败的问题。

【1040557】【一般】修复了定义as object复杂对象类型,匿名块中select into赋值失败的问题。

【1021379】【一般】修复了由于内核未添加varchar到json的数据类型转换,导致的向json类型字段插入数据时报错类型不匹配的问题。

函数

【1037052】【一般】修复了函数中超过30个else if,创建会报错ERROR: memory exhausted的问题。

【1034274】【提示】修复了由于检查参数的函数调用逻辑混乱,导致-p格式导出时,指定加密算法错误,报错信息不合理的问题。

PL/SQL

【1039610】【严重】修复了由于不支持数组类型嵌套,导致的自定义type作为package中嵌套表类型的基类型,创建包头时报错的问题。

【1039630】【严重】修复了由于部分场景下A模式会抛出NO_DATA_FOUND错误,导致当存储过程中含有select xxx into xxx语法时,若返回结果为空调用存储过程报错的问题。

【1036524】【一般】修复了由于函数变量和包常量在PL/pgSQL中作为条件表达式时无法进行常量优化,导致存储过程中游标where条件使用变量时执行效率低的问题。

备份恢复

【1034732】【1040843】【一般】修复了vb_dump在导出SQL创建视图语句时变成了创建表语句的问题。

【1036751】【严重】修复了由于vb_dump代码在处理发布订阅的信息时,把申请的内存提前释放了,导致导出数据库表时报错Segementation fault(core dumped) 的问题。

【1039445】【严重】修复了vb_probackup backup备份的备份集通过vb_probackup restore恢复,恢复成功后启动数据库时候数据库coredump的问题。

系统表和系统视图

【1039663】【一般】修复了sys.dba_sequences、sys.all_sequences等相关视图未包含大序列的问题。

【1030317】【严重】修复了由于对出是系统表的限额判断导致的数据库core dump的问题。

【1030381】【严重】修复了由于系统表记录是所有登录历史的,在登录检索最近一次失败登录记录时会检索了全表。当表过大时,检索时间过长,进而登录时卡住的问题。

插件

【1037651】【一般】修复了postgis插件的st_asgeojson函数缺少record重载函数的问题。

内存

【1031030】【严重】修复了由于全局变量PROJ_CACHE和POSTGIS_CONSTANTS引用会话级内存作为缓存,在Vastbase的多线程架构中会出现使用错误缓存和使用释放后内存的错误,从而导致的数据库实例crash的问题。

【1039916】【严重】修复了由于内存不足导致的数据库coredump的问题。

高可用集群

【1033302】【严重】修复了集群旧主和新主分别发生实例crash,引起集群切换的问题。

【1040190】【一般】修复了主库预生成的xlog文件太多的问题。

【1039302】【致命】修复了由于备库开启并行回放时被备库慢SQL阻塞,导致主库业务阻塞的问题。

安装升级

【1040864】【1040891】【严重】修复了由于PL/SQL包管理问题,导致升级时,升级环境默认public和初始化环境默认pg_catalog,两个地方创建的包都未指定NSP,升级重建时未成功重建原有的包,utl_raw.cast_to_raw报错不存在的问题。

【1040867】【严重】修复了由于升级过程创建的包在其他兼容模式下导出失败,导致的vb_dump备份,vsql恢复时出现报错的问题。

驱动

【1038927】【严重】修复了通过JDBC接口使用逻辑复制功能时运行一段时间后报错org.apache.kafka.connect.errors(onnectException: java.lang.RuntimeException: orq.postqresgl.util,PSQLException: [172,25.0.11:47664/192.168.32.2:5433] FATAL: can't create logical decode dispatcher

外部数据封装器

【1040430】【提示】修复了重复创建oracle_fdw时,报错提示与预期不符的问题。

GUC参数

【1037813】【严重】修复了SIGHUP级别参数audit_enabled,使用alter system set设置未生效的问题。

【1038544】【一般】修复了由于参数behavior_compat_options设置为'proc_outparam_override'时,本地跨库查询报错ERROR: insufficient data left in message的问题。

【1039848】【一般】单机环境下废弃参数max_query_retry_times。

【1040085】【一般】修复了由于屏蔽关键字检查时将重复设置的关键字遗漏了,导致的参数vb_exclude_reserved_words不能够在参数文件中重复设置。

[【1030688】】(#1030688)【严重】修复了在过滤条件选择率高时,关闭enable_pbe_optimization参数后,PBE执行计划第6次走的generic plan与打开enable_pbe_optimization参数时的执行计划一样,未作优化的问题。

Oracle兼容性

【1041005】【严重】修复了Oracle兼容模式下,TIMESTAMP WITH LOCAL TIME ZONE类型无法使用的问题。

【1040237】【一般】修复了Oracle兼容模式下,由于FunctionCallInfoData结构内的prealloc_argTypes成员没有赋初始值,其值为随机值,造成查找不到相关系统表元组,导致的聚合函数中使用distinct报错的问题。

MySQL兼容性

【1039607】【1040969】【严重】修复了MySQL兼容模式下,自增序列serial与MySQL实际结果不一致的问题。

【1039975】【严重】修复了MySQL兼容模式下,SELECT列表及HAVING子句同时使用聚合函数报错:ERROR: aggregate function calls cannot be nested的问题。

【1040956】【严重】修复了MySQL兼容模式下,create table as + with no data语句执行报错的问题。

【1036541】【一般】修复了MySQL兼容模式下,由于userset表达式返回错误,子查询上拉之后relid没有加上偏移量,导致select关联查询中给@变量赋值报错rel 1 already exists的问题。

【1036687】【一般】修复了MySQL兼容模式下,Vastbase G100中COPY未能识别大写的字段名称的问题。

【1039668】【严重】修复了MySQL兼容模式下,查询char字段类型数据,空格未自动过滤的问题。

【1039955】【1032553】【一般】修复了MySQL兼容模式下,由于transformColumnRef() 中没有对 B 模式下无入参进行处理,导致的JSON_ARRAY函数查询结果有误的问题。

【1040940】【一般】修复了MySQL兼容模式下,WEEK函数入参数据类型为数值类型、字符型、bool型,执行结果不为NULL,而是当前日期的问题。

【1040937】【一般】修复了MySQL兼容模式下,由于缺少非法字符逻辑考虑,导致day()和dayofmonth()函数,入参异常时,执行结果报错的问题。

【1040935】【一般】修复了MySQL兼容模式下,由于缺少异常处理,导致day()和dayofmonth()函数,入参为字符类型时,执行结果报错的问题。

【1040934】【一般】修复了MySQL兼容模式下,由于缺少数值类型的处理函数,导致day()和dayofmonth()函数,入参为数值类型时,执行结果报错函数不存在的问题。

PostgreSQL兼容性

【1039989】【严重】修复了PostgreSQL兼容模式下,由于rewrite_rule参数默认值为magicset,会消除子查询中的order by操作,导致子查询中的SELECT DISTINCT ON语义错误的问题。