VastbaseG100

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

Menu

V2.2 Build 5

升级方法介绍

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

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

  1. 使用vb_dump导出所有对象和数据。

  2. 使用数据库安装程序安装新的数据库。

  3. 开启数据库。

  4. 使用vb_restore导入步骤1中的备份数据到新库中。

方法二: 以下简称为“替换升级”

直接替换安装目录并重启数据库即可,步骤如下:

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.gz

(4)将解压之后的bin、include、lib、share四个目录替换到现有数据库安装目录下。

3、开启数据库。

方法三: 以下简称为“工具升级”

参见”快速入门->升级说明”章节。

版本升级指南

版本号说明

例:V2.2 Build 5(Patch No.1)

大版本:2.2

Build:5

Patch:补丁号,本例中为1

1、 不同大版本以及不同Build的升级必须使用方法一升级。

2、 补丁升级请遵循以下规则(升级前后版本均为V2.2 Build 5,以下表格只体现Patch(补丁号))。

升级前\升级后 V2.2 Build 5 Patch No.1~Patch No.25 Patch No.39 Patch No.75 Patch No.100 Patch No.120 Patch No.161 Patch No.173 Patch No.174
<Patch No.0 重新初始化 重新初始化 重新初始化 重新初始化 重新初始化 重新初始化 重新初始化 重新初始化 重新初始化
>=Patch No.0 N/A 替换升级 替换升级 + 手工运行升级模式 工具升级 工具升级 工具升级 工具升级 工具升级 工具升级

注意: 若原版本号<V2.2 Build 5(Patch No.100),且已使用存储加密或者gs_encrypt函数的SM4算法,需重新初始化,具体见V2.2 Build 5(Patch No.100)注意事项。


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

发布日期

2023年05月19日

新特性

新增vb_licensetool工具用于查看license的相关信息,并且设置临时许可有效期为3个月。

特性优化

精简数据库日志,关闭无用日志的输出。

缺陷修复

1、【1025249】修复nestloop计算代价不合理从而导致的部分SQL查询耗时超过OG3.0两倍的问题。

2、【1025238】修复了长稳执行过程中同步备库和异步备库均报错FATAL:memory is temporarily unavailable的缺陷。

3、【1025226】修复了explain执行计划里没有where条件的缺陷。

4、【1025010】修复了使用vb_dump导出数据时重复生成revoke all语句,从而导致导入文件后模式权限发生改变的缺陷。

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

6、【1024832】修复了执行自治事务的bgworker启动失败导致报错信息未能发送给父线程的问题。

7、【1021901】修复了创建索引导致数据库挂库的问题。

8、【1019317】修复了vb_basebackup使用plain格式进行多个表空间备份失败的问题。

9、【1019315】修复了vb_basebackup执行后,数据库无法再连接,也无法停库,archive线程一直在后台运行的问题。

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

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

12、【1016793】修复了存储加密使用会话全局变量时未判空,可能会导致coredump的问题。

13、【1016529】修复了在执行函数编译后,校验函数search_path前,其他会话将该函数drop而导致的数据库挂库的问题。

14、【1016521】修复了执行PITR后恢复点之后的XLOG日志未清理干净的问题。

15、【1016468】修复了vsql连接数据库时,当设置了--with-decryption时则必须和--with-key一起使用的问题。

16、【1016461】修复了sql语句使用ORDER BY排序前后,结果不一致的问题。

17、【1016458】修复了并发执行dbms_alert时出现创建表冲突的问题。

18、【1015961】修复了红黑树节点使用时未对节点进行判断,有节点的子节点或父节点为空,从而导致数据库挂库的问题。

19、【1015707】修复了pg_stat_statements插件无法处理多条SQL语句同时执行,导致内存越界的问题。

20、【1014536】修复了汉化文件中,把%d写成了%s的问题。

21、【1014172】修复了dba_sequences视图定义中cache_size字段未使用系统表字段值填充,而是直接使用null填充,导致视图不显示序列的cache值的问题。

22、【1013414】修复了读取系统表时,返回空指针并进行空指针访问,导致的数据库挂库问题。

23、【1013350】修复了每次操作数据都无条件获取行级列级安全策略并且未判断表是否为分区表均获取分区表OID列表的问题。

行为变更

变更项 升级前 升级后
oracle_vpd_enabled参数 oracle_vpd功能无参数控制。 新增参数oracle_vpd_enabled控制oracle_vpd功能。
vb_basebackup vb_basebackup无法正常使用plain格式进行备份。 vb_basebackup可以使用plain格式进行备份。


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

发布日期

2022年11月23日

修复缺陷

1、【1010719】修复了创建函数时表字段与函数参数重名导致调用函数报冲突错误的问题。

2、【1011682】修复了SQL语句中同时出现窗口函数和子查询时,因子查询被提升导致后续计算窗口函数的targetlist时找不到对应的字段而报错的问题。

3、【1012021】修复了column_value内部调用函数dbms_sql_cvalue时出现数据库宕库的问题。

4、【1012658】修复了扫描敏感信息文件(配置文件、密钥文件、日志文件)的可读权限的结果中存在不符合要求的文件的问题。

5、【1012839】修复了使用 dbms_job 定时任务调用 sys_guid() 时生成重复值的问题。

6、【1012932】修复了开启require_ssl参数时仍支持使用PostgreSQL原生驱动连接的问题。

7、【1013011】修复了进行alter system set时并发读写conf配置文件没有加线程安全的锁,而是使用了文件锁,导致数据库宕机的问题。

8、【1013351】修复了jdbc_fdw的日志不够完善,使用DBLINK传输数据时报错不清晰的问题。

9、【1016986】修复了数据库集群状态下修改max_flashback_time参数导致备库不能登录的问题。

10、【1018338】修复了进行指定时间点恢复时,执行检查点时,Xlog清理模块回收复用的WAL日志覆盖了vb_probackup工具从归档中恢复的WAL文件,导致读取的文件内容和文件名不符因而恢复失败的问题。

数据库行为变更说明

变更项 升级前 升级后
函数中参数命名规范。 创建函数时表字段与函数参数重名导致函数执行失败。 创建函数时表字段与函数参数重名,函数执行成功。
dbms_sql.column_value,dbms_sql.define_column dbms_sql.column_value返回null值时出现宕机;dbms_sql.column_value,dbms_sql.define_column的参数列索引未增加校验 dbms_sql.column_value返回null值时执行正常;dbms_sql.column_value,dbms_sql.define_column增加列索引参数校验(需>=1)
窗口函数和子查询使用规则。 SQL语句中同时包含窗口函数和子查询时执行报错。 SQL语句中同时包含窗口函数和子查询时执行成功。
require_ssl对PostgreSQL原生驱动客户端的影响。 开启require_ssl后使用pg原生驱动客户端不开启ssl仍能连接到数据库。 开启require_ssl时,不支持pg原生驱动连接数据库
ALTER SYSTEM SET并发特性 并发执行ALTER SYSTEM SET宕机。 并发执行ALTER SYSTEM SET正常。


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

发布日期

2022年8月30日

新特性

1、适配Postgis3.2版本

2、支持jsonb数据类型

3、MySQL兼容性–支持find_in_set函数

4、PG兼容性–字符串连接符+null执行结果对标PG

修复缺陷

1、【ID1009847】修复了(a join b) full join c 的查询结果与原生PG和Oracle的不一致问题

2、【ID1010033】修复了数组元素赋值没有判断数据类型导致数据库宕机问

3、【ID1009859】修复了执行语句select (select q from (select 1,2,3 where f1>0 union all select 4,5,6.0 where f1<=0) q) from int4_tbl失败的问题

4、【ID1009929】修复了执行语句CREATE FOREIGN TABLE xxx SERVER xxx 报错的问题

5、【ID1009897】修复了插入数据infinity, -infinity,查询结果显示为inf, -inf的问题

6、【ID1009932】修复了SELECT '1|2|4|5|6'::tsquery 结果与PG不一致的问题

7、【ID1009904】修复了select current_timestamp = now()结果为f的问题

8、【ID1009860】修复了select '4714-11-23 16:00:00-08 BC' :: timestamptz 执行失败的问题

9、【ID1009637】修复了order siblings by与distinct同时使用会报错的问题

10、【ID1009914】修复了询时区Europe/Moscow时间,与查询时区MSK时间不一致的问题

11、【ID1009918】修复了select xmlparse(content “),content是空值报错的问题

12、【ID1009898】修复了select case when then end 在某些情况下结果与PG不一致的问题

13、【ID1010242】修复了参数track_functions设置为all时发生内存泄漏的问题

14、【ID1010217】修复了order siblings by查询字段与oracle不一致,select * 时结果集会多出伪列的问题

15、【ID1010098】增加了在create tablespace时,会检查pg_tblspc目录下的tablespace软连接的目标是否为软连接,是则报错的提示

16、【ID1010348】修复了含参数的嵌套表使用递归查询参数注入失败的问题

17、【ID1010468】修复了使用order siblings by递归查询报错的问题

18、【ID1009965】修复了表字段名为level,执行start with connect by宕机的问题

19、【ID1010524】修复了重复创建的address_standardizer,报错提示信息不明确的问题

20、【ID1008828】修复了pg_dump中过滤了vb_login_info视图导致恢复时删除public模式报vb_login_info的问题

21、【ID1010538】修复了数据库SEQUENCE序列定义的最小值不正确的问题

22、【ID1010586】修复了含有as datatype的归档数据恢复,恢复后的序列开始值与恢复前的开始值不符的问题

23、【ID1010437】修复了执行pg_stop_backup('t')导致数据库宕机的问题

24、【ID1010700】修复了匿名块执行regexp_matches函数嵌套version函数发生宕机的问题

25、【ID1010721】修复了数据库升级后alter操作旧sequence导致表指针溢出的问题

26、【ID1010881】修复了执行select调用存储过程/函数时,数据库异常崩溃的问题

27、【ID1010868】修复了Vastbase G100大字段pg_toast表不会触发autovacuum的问题

28、【ID1010864】修复了审计日志中审计类型出现错误的问题

29、【ID1011464】修复了使用JDBC连接池测试,不断进行连接执行select 1语句,连接次数达到两百万多次后数据库coredump的问题

30、【ID1010037】修复了元命令\copyright 显示版本归华为公司所有的问题

31、【ID1009776】修复了to_timestamp('20000-1116', 'YYYY-MMDD') 执行失败的问题

注意事项

本次长稳测试集群通过裸数据库搭建,长稳测试环境不涉及has和dcs,本次版本发布仅限于数据库。如果需要使用has和dcs搭建集群,需要咨询开发和测试人员,否则,使用已发布has和dcs搭建集群,在业务压力较高时,可能会出现主备切换导致业务异常的风险。


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

发布日期

2022年5月26日

新特性

1、 新增Oracle兼容性:

  • 递归查询支持connect_by_root、connect_by_isleaf和order siblings by用法

  • select语句中group子句用法增强,支持子查询中出现表达式或者函数的分组列

2、 新增PostgreSQL兼容性:

  • 支持定义游标时将变量名写在cursor关键字的前面

  • 支持to_regclass函数,该函数可用以判断对象是否存在

3、 适配uuid-ossp v1.0插件,该扩展插件提供了多种函数用以产生通用唯一标识符(UUID)

4、创建索引语法增加if not exists可选项

特性优化

登录访问历史信息不记录数据库内部连接信息

修复缺陷

1、【ID1009228】修复了创建btree索引时,使用mod函数会报错的问题

2、【ID1009021】修复了gs_encrypt、gs_decrypt、gs_encrypt_aes128、gs_decrypt_aes128函数不支持密钥检测功能的问题

3、【ID1009402】修复了开启线程池后,使用vb_probackup进行多次增量备份,数据库服务会重启的问题

4、【ID1009619】修复了使用vb_probackup进行全量备份时,使用HA端口访问数据库,备份会失败的问题

5、【ID1009613】修复了connect by与order by后跟不同表别名时,查询结果不正确的问题

6、【ID1009645】修复了升级工具不支持中文环境的问题

7、【ID1009663】修复了关键字authid不支持作为表名、字段名的问题

8、【ID1009688】修复了关键字authid不支持作为字段别名的问题

9、【ID1009628】修复了升级工具不支持升级安装在UOS系统上的数据库的问题

10、【ID1009857】修复了PG兼容模式下,substr函数与substring函数执行结果不一致的问题

11、【ID1009856】修复了PG兼容模式下,substr(string, from [, count])函数的count参数小于0时,执行没有返回异常信息的问题

12、【ID1009854】修复了GRANT/REVOKE时使用current_user/current_session会执行报错的问题

13、【ID1009803】修复了PG兼容模式下,创建策略时不允许USING和WITHCHECK同时设置为空的问题

14、【ID1009847】修复了查询语句中表连接形如(a join b) full join c时查询结果不正确的问题


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

发布日期

2022年3月25日

修复缺陷

1、 【ID1008403】修复了connect by中不支持distinct关键字,不支持order by使用表别名的问题

2、 【ID1008444】修复了pg_hba.conf不reload即生效的问题

3、 【ID1008720】修复了原地升级不支持CentOS7.9的问题

4、 【ID1008071】修复了exchange分区指定update global index后,查询分区视图出错的问题

5、 【ID1008790】修复了存储加密的SM4算法、AES加密算法生成的encryptKey文件存储的密钥密文为非随机值的问题,以及gs_encrypt函数的SM4算法生成为非随机值的问题

6、 【ID1008702】修复了V2.2 Bulid5(Patch No.X)升级到V2.2 Bulid5(Patch No.75)后修改用户密码报text_to_cstring函数错误的问题

7、 【ID1008721】修复了中止哈希表顺序扫描时未处理内存泄露的问题

8、 【ID1007865】修复了TRUNCATE一级分区同时更新全局分区索引后,再次执行查询出错的问题

9、 【ID1007931】修复了TRUNCATE二级分区同时更新全局分区索引后,再次执行查询出错的问题

10、 【ID1005844】修复了不支持LIST/HASH分区表执行带更新全局索引的exchange分区操作的问题

11、 【ID1008148】修复了分区表执行DDL后回滚,再使用全局分区索引扫描,数据会丢失的问题

12、 【ID1008669】修复了安装包缺失mysql_fdw插件等相关文件的问题

13、 【ID1008879】修复了使用to_date(text)函数创建函数索引失败的问题

14、 【ID1008714】修复了更新license后数据库无法启动的问题

15、 【ID1008957】修复了创建rule后执行delete from视图操作,导致数据库宕机的问题

16、 【ID1009023】修复了decoderbufs插件在处理值为infinity的timestamp时间类型时会导致数据库宕机的问题

17、 【ID1006859】修复了代码存在错误过滤条件,错误计算index scan node的输出行数,导致SQL查询效率低的问题

18、 【ID1008774】修复了最大可用模式是on时,同步备库停止后,vb_probackup备份失败的问题

19、 【ID1008592】修复了修改审计策略,导致数据库宕机的问题

20、 【ID1009216】修复了配置文件postgresql.conf使用了错误参数后,重启数据库会一直等待的问题

21、 【ID1008862】修复了开启极致RTO时,连续多次创建、删除表空间后,导致备库回放失败的问题

22、 【ID1009347】修复了升级工具未适配麒麟系统的问题,以及检查版本大小号时使用了字符串进行比较,导致升级失败的问题

注意事项

针对【ID1008790】修复了存储加密的SM4算法、AES加密算法生成的encryptKey文件存储的密钥密文值非随机,gs_encrypt函数的SM4算法生成的值非随机的问题,若已使用存储加密或者gs_encrypt函数的SM4算法,只能重新初始化,否则直接替换升级即可。


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

发布日期

2022年1月24日

新特性

1、 安全审计功能默认关闭,关闭时可审计数据库启停、用户删除及修改、修改系统参数行为

2、 mod函数兼容性增强,增加参数支持的类型

3、 支持数据库升级工具

4、 支持rowidtochar函数

5、 支持chartorowid函数

6、 支持函数调用可不加括号

7、 支持GROUPING_ID和grouping函数

8、 支持DBMS_UTILITY.get_hash_value函数

9、 适配pg_bulkload并支持双字节分隔

10、 Date类型去除数据毫秒部分,不作四舍五入

11、 增加all函数兼容性

12、 取消SQLServer TOP语法

修复缺陷

1、 【ID1007952】修复了vb_initdb初始化数据库指定–dbcompatibility参数为PG,无法初始化系统视图的问题

2、 【ID1007039】修复了线程池模式下多次执行plpgsql函数时返回错误的问题

3、 【ID1007963】修复了DBMS_CRYPTO,DBMS_OBFUSCATION_TOOLKIT包中的加密密钥不满足K1≠K2≠K3的问题

4、 【ID1007910】修复了设置query_dop>1,with function执行出错的问题

5、 【ID1008067】修复了dbcompatibility是PG情况下,generated仍被识别为关键字的问题

6、 【ID1007956】修复了发布软件包及源码中存在硬编码的问题

7、 【ID1008136】修复了rowid和in条件中多余10个而报错的问题

8、 【ID1007957】修复了存储加密的密钥使用base64编码写入文件后,没有被加密的问题

9、 【ID1008069】修复了rowid类型的数据值为NULL时出发coredump的问题

10、 【ID1007672】修复了开启线程池模式下参数设置错误导致序列未生成的问题

11、 【ID1007968】修复了html, cpp 代码中含华为公网地址、邮箱的问题

12、 【ID1007976】修复了普通用户首次登录未强制修改口令;管理员重置普通用户口令后,普通用户登录时未强制要求修改口令的问题

13、 【ID1008059】修复了默认口令用户首次登录未强制要求修改口令的问题

14、 【ID1005654】修复了开启汉化,主备库架构下开启线程池会报错的问题

15、 【ID1007166】修复了标记的输入、输出用户不是安全管理员的问题

16、 【ID1007784】修复了系统管理员和普通用户不能向安全管理员、审计管理员及相同属性的用户授予权限的问题

17、 【ID1008143】修复了PIVOT不支持直接跟别名的问题

18、 【ID1008358】修复了dbms_application_info相关函数传入参数为空串而导致宕机的问题

19、 【ID1008402】修复了dbms_pipe函数list_pipe及create_pipe部分场景锁未释放的问题

20、 【ID1008409】修复了管理员,安全管理员,审计管理员的旧默认密码存在于数据库文件中的问题

21、 【ID1008540】修复了使用gbk字符集初始化实例后,存在中文乱码且vsql功能不正常的问题

注意事项

关于新功能Date类型去除数据毫秒部分,不作四舍五入,该功能会将新插入的date类型数据的毫秒直接去掉,原本已经插入的date类型数据还是做四舍五入,新的date类型数据库没有四舍五入,造成在条件查询时,如果条件查询的date类型数据的原本毫秒是五入的,就会结果和以前版本的有所差异。


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

发布日期

2021年12月24日

新特性

SQLServer TOP语法

缺陷修复

1、 【ID1007442】修复了JDBC连接数据库并使用DBLINK执行DELETE、INSERT操作导致宕库的问题

2、 【ID1007555】修复了定时任务dbms_job调用存储过程失败的问题

3、 【ID1007481】修复了DROP INDEX CONCURRENTLY在事务内执行导致宕库的问题

4、 【ID1007108】修复了IPv6测试中集群搭建完后使用vb_ctl query查询信息时,显示的IPv6地址有误,后台日志不断显示“could not bind IPv6 socket”的问题

5、 【ID1007130】修复了IPv6测试中HAS配置文件中仅支持压缩的IPv6且字母为小写的写法,不支持其他合法的IPv6格式的问题

6、 【ID1007167】修复了ALL_TAB_COLS系统视图执行效率慢的问题

7、 【ID1007855】修复了PL/pgSQL 关联数组运行过程中存在内存泄漏的问题

8、 【ID1007793】修复了迁移分区表的主键会报错的问题

9、 【ID1007276】修复了创建插件pgcrypto后短时间内使用内置包DBMS_OBFUSCATION_TOOLKIT的des3encrypt函数对text类型数据加密结果会变化的问题

10、 【ID1006538】修复了用户创建public database link后其他用户无法使用该dblink的问题

11、 【ID1007554】修复了递归查询connect by NOCYCLE prior语法和oracle不一致的问题

12、 【ID1005993】修复了数据库启动时出现warning和failed相关信息的问题

注意事项

1、 针对【ID1007167】修复了ALL_TAB_COLS系统视图执行效率慢的问题,如果使用“替换升级”方式进行升级,需要手动执行以下步骤,并在每个database执行以下SQL:

在数据库配置postgresql.conf中,追加配置参数upgrade_mode=1

重启数据库,使用vsql登录超级管理员,执行以下脚本。完成后去掉upgrade_mode=1,并重启数据库。

START TRANSACTION;
SET search_path TO information_schema;

SET IsInplaceUpgrade = on;

drop VIEW if exists pg_catalog.all_tab_cols;
drop VIEW if exists all_tab_cols;
drop VIEW if exists ora_columns;

SET LOCAL inplace_upgrade_next_system_object_oids=IUO_CATALOG,false,true,7355,0,0,0;

CREATE VIEW ora_columns AS
    SELECT ba.rolname AS table_OWNER,
           nc.nspname AS table_schema,
           c.relname AS table_name,
           a.attname AS column_name,
           a.attnum AS ordinal_position,
           (CASE WHEN a.attgenerated not in ('s') THEN pg_get_expr(ad.adbin, ad.adrelid) END)  AS column_default,
           (CASE WHEN a.attnotnull OR (t.typtype = 'd' AND t.typnotnull) THEN 'NO' ELSE 'YES' END
             )
             AS is_nullable,

           (
             CASE WHEN t.typtype = 'd' THEN
               CASE WHEN bt.typelem <> 0 AND bt.typlen = -1 THEN 'ARRAY'
                    WHEN nbt.nspname = 'pg_catalog' THEN format_type(t.typbasetype, null)
                    ELSE 'USER-DEFINED' END
             ELSE
               CASE WHEN t.typelem <> 0 AND t.typlen = -1 THEN 'ARRAY'
                    WHEN nt.nspname = 'pg_catalog' THEN format_type(a.atttypid, null)
                    ELSE 'USER-DEFINED' END
             END)
             AS data_type,

             _pg_char_max_length(_pg_truetypid(a, t), _pg_truetypmod(a, t))
             AS character_maximum_length,

             _pg_char_octet_length(_pg_truetypid(a, t), _pg_truetypmod(a, t))
             AS character_octet_length,

             _pg_numeric_precision(_pg_truetypid(a, t), _pg_truetypmod(a, t))
             AS numeric_precision,
             _pg_numeric_scale(_pg_truetypid(a, t), _pg_truetypmod(a, t))
             AS numeric_scale,

           CAST(null AS character varying) AS character_set_name,

       (
             CASE WHEN t.typtype = 'd' THEN
               abt.rolname
             ELSE
               at.rolname
             END)
             AS DATA_TYPE_OWNER,
       a.attlen

    FROM (pg_attribute a LEFT JOIN pg_attrdef ad ON attrelid = adrelid AND attnum = adnum)
         JOIN (pg_class c JOIN pg_namespace nc ON (c.relnamespace = nc.oid) LEFT JOIN pg_authid ba on (ba.oid = c.relowner)) ON a.attrelid = c.oid
         JOIN (pg_type t JOIN pg_namespace nt ON (t.typnamespace = nt.oid) LEFT JOIN pg_authid at on (t.typowner = at.oid)) ON a.atttypid = t.oid
         LEFT JOIN (pg_type bt JOIN pg_namespace nbt ON (bt.typnamespace = nbt.oid) LEFT JOIN pg_authid abt on (bt.typowner = abt.oid))
           ON (t.typtype = 'd' AND t.typbasetype = bt.oid)

    WHERE (NOT pg_is_other_temp_schema(nc.oid))
          AND a.attnum > 0 AND NOT a.attisdropped AND c.relkind in ('r', 'v', 'f')
          AND (pg_has_role(c.relowner, 'USAGE')
               OR has_column_privilege(c.oid, a.attnum,
                                       'SELECT, INSERT, UPDATE, REFERENCES'));

GRANT SELECT ON ora_columns TO PUBLIC;

CREATE VIEW all_tab_cols AS
    select c.table_OWNER AS OWNER,
        c.table_name AS TABLE_NAME,
        c.column_name AS COLUMN_NAME,
        c.data_type AS DATA_TYPE,
        NULL AS DATA_TYPE_MOD,
        c.DATA_TYPE_OWNER,
        COALESCE(c.character_maximum_length,c.numeric_precision,c.character_octet_length,c.attlen,0) AS DATA_LENGTH,
        c.numeric_precision AS DATA_PRECISION,
        c.numeric_scale AS DATA_SCALE,
        c.is_nullable AS NULLABLE,
        c.ordinal_position AS COLUMN_ID,
        NULL AS DEFAULT_LENGTH,
        c.column_default AS DATA_DEFAULT,
        s.n_distinct AS NUM_DISTINCT,
        NULL AS LOW_VALUE,
        NULL AS HIGH_VALUE,
        CASE WHEN s.n_distinct <> 0 then
            1/s.n_distinct
        ELSE
            NULL
        END
        AS DENSITY,
        NULL AS NUM_NULLS,
        NULL AS NUM_BUCKETS,
        NULL AS LAST_ANALYZED,
        NULL AS SAMPLE_SIZE,
        NULL AS CHARACTER_SET_NAME,
        c.character_octet_length AS CHAR_COL_DECL_LENGTH,
        NULL AS GLOBAL_STATS,
        NULL AS USER_STATS,
        s.avg_width AS AVG_COL_LEN,
        c.character_octet_length AS CHAR_LENGTH,
        NULL AS CHAR_USED,
        NULL AS V80_FMT_IMAGE,
        NULL AS DATA_UPGRADED,
        NULL AS HIDDEN_COLUMN,
        NULL AS VIRTUAL_COLUMN,
        NULL AS SEGMENT_COLUMN_ID,
        c.ordinal_position AS INTERNAL_COLUMN_ID,
        NULL AS HISTOGRAM,
        c.column_name AS QUALIFIED_COL_NAME
    FROM information_schema.ora_columns c
    LEFT JOIN pg_stats s on s.schemaname = c.table_schema and s.tablename = c.table_name and s.attname = c.column_name;

CREATE VIEW pg_catalog.all_tab_cols AS
    select * from all_tab_cols;

SET LOCAL inplace_upgrade_next_system_object_oids=IUO_CATALOG,false,true,0,0,0,0;

commit;
CHECKPOINT;

2、 针对【ID1005993】修复了数据库启动时出现warning和failed相关信息的问题,对部分warning和failed信息,如需避免打印日志,需要手动执行以下步骤:

(1)LOG: [Alarm Module]Get ENV GS_CLUSTER_NAMEE failed!

可将GS_CLUSTER_NAME变量配置成postgresql.conf配置文件中pgxc_node_name的值来避免该日志打印。

(2)WARNING: could not create any HA TCP/IP sockets

若数据库为单机模式,可在启动参数中加上“-M normal”来避免该日志打印。

(3)WARNING: No explicit IP is configured for listen_addresses GUC.

可根据监听需要修改配置文件postgresql.conf中listen_addresses的值为具体IP地址来避免该日志打印。例如用数据库所在机器的IP地址替换“*”(需要注意的是,如果机器上有多个网卡,则需要配置多个IP地址)。


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

发布日期

2021年11月23日

新特性

支持国密算法

  • 登录口令支持SM3算法

  • 存储加密支持SM4算法

  • 传输加密支持SM4、SM3、SM2算法

  • 适配JDBC SM3登录

影响范围

1、数据库运行

2、jdbc_fdw使用returning返回时间类型数据

3、plpgsql

4、线程池模式下登录日志的记录

5、数据类型:timestamp with local time zone, binary,longtext,datetime,longblob

函数:date_add,date_format

其他:show create table,auto_increment

缺陷修复

1、【ID1007225】修复了混合负载长稳测试中集群运行过程出现warning:out of shared memory的问题

2、【ID1007043】修复了jdbc_fdw连接Oracle插入时间类型数据returning导致数据库宕机的问题

3、【ID1007271】修复了数据表有TYPE字段,在触发器中使用该字段创建失败的问题

4、【ID1006998】修复了ipv6测试replconninfo参数中设置的localport相同时,启动数据库后报端口被占用的问题

5、【ID1007356】修复了混合负载长稳测试中通过vsql连进去备库时,报错cannot assign TransationIds during recovery的问题

6、【ID1007344】修复了v2.2.5不支持MySQL binary/longtext/date_add等特性的问题

漏洞修复

1、 【CVE-2021-24032】Zstandard 安全更新

2、 【CVE-2021-3449】OpenSSL安全更新

3、 【CVE-2021-3537】 【CVE-2021-3518】 【CVE-2021-3517】 【CVE-2021-3541】Libxml2安全更新

注意事项

在postgresql.conf(HAS配置文件vastbase.yml)中配置replconninfo时,以实际IPV6为准,目前vastbase处理函数中IPV6采用的是strcmp硬比较,如果私自缩写IPV6、扩展IPV6和更改大小写会出现匹配问题


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

发布日期

2021年11月15日

影响范围

集群主库归档

缺陷修复

【ID1007202】修复了集群主库归档失败的问题


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

发布日期

2021年11月15日

影响范围

HAS集群中,主节点提供服务

缺陷修复

【ID1006922】修复了HAS集群中,主节点不能提供服务的问题


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

发布日期

2021年11月11日

影响范围

vacuum的使用

缺陷修复

【ID1007060】修复了执行DROP DATABASE操作时未考虑后台autovacuum线程导致vacuum报错的问题


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

发布日期

2021年11月3日

影响范围

replconninfo参数绑定IPV6地址和端口

缺陷修复

【ID1006998】修复了replconninfo参数绑定多个IPV6地址和端口时报端口占用的问题

注意事项

配置replconninfo时,需以实际IPV6显示为准,目前暂不支持拓展IPV6和更改IPV6大小写的写法


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

发布日期

2021年11月3日

影响范围

Vastbase G100远程连接

缺陷修复

【ID1006986】修复了使用远程连接工具连接数据库出现连接超时的问题


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

发布日期

2021年11月3日

影响范围

使用DO作为表别名、使用POSITION作为列别名

缺陷修复

1、【ID1006858】修复了使用POSITION作为列别名报错的问题

2、【ID1006845】修复了使用DO作为表别名报错的问题


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

发布日期

2021年10月19日

影响范围

OM_GAUSSLOG环境变量

缺陷修复

【ID1006837】修复了GAUSSLOG环境变量缺失的问题


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

发布日期

2021年10月19日

影响范围

增量build效率

缺陷修复

修复了增量build效率低的问题


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

发布日期

2021年10月19日

影响范围

1、切主后,原异步库连接新主库

2、同步备断网后,异步备升为同步备

缺陷修复

1、【ID1006824】修复了切主后,原异步库不能正常连接到新主库的问题

2、【ID1006824】修复了同步备断网后,异步备无法升为同步备的问题


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

发布日期

2021年10月14日

影响范围

数据库关键字sysid作为别名时省略as

缺陷修复

【ID1006827】修复了数据库关键字sysid作为列别名省略as的问题


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

发布日期

2021年10月14日

影响范围

数据库关键字account、ip、time作为别名时省略as

缺陷修复

【ID1006707】修复了数据库关键字account、ip、time作为表达式别名、子查询别名或常量别名时省略as的问题


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

发布日期

2021年10月11日

影响范围

jdbc匿名块中update/insert绑定变量

缺陷修复

1、【ID1006688】修复了MyBatis通过匿名块批量insert出错的问题

2、【ID1006708】修复了MyBatis通过匿名块批量update出错的问题

注意事项

在匿名块中使用绑定变量时,存在以下限制:

  • 绑定变量的类型仅支持数值类型、字符类型、时间类型、二进制类型、布尔类型

  • 不能在匿名块中declare类似$1,$2…$n的变量,否则使用绑定变量会存在问题


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

发布日期

2021年10月11日

影响范围

targetlist 的语法使用

缺陷修复

【ID1006707】修复了数据库关键字account、ip和time做别名时不带AS报错的问题


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

发布日期

2021年10月11日

影响范围

数据库适配CentOS8,RedHat8系统

缺陷修复


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

发布日期

2021年09月18日

影响范围

audit_stop_policy开启时的审计功能

缺陷修复

【ID1006429】修复审计参数audit_stop_policy为on时,多次修改审计参数audit_file_remain_threshold导致数据库宕机的问题


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

发布日期

2021年09月14日

缺陷修复

【ID1006485】修复unreserved_keyword或col_name_keyword,作为package名或package指定的schema名时,创建package会报错的问题


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

发布日期

2021年09月13日

特性优化

新增vb_isready工具用于维护模式获取数据库状态


Vastbase V2.2 Build 5

发布日期

2021年09月13日

新特性

1、 Oracle兼容性

  • 支持BFILE数据类型
  • PLpgSQL-TYPE … IS RECORD
  • PLpgSQL支持集合类型
  • 内置包DBMS_LOB
    • DBMS_LOB.FILEOPEN
    • DBMS_LOB.READ
    • DBMS_LOB.FILECLOSE
  • 支持pivot操作

2、 ECPG工具适配Vastbase

3、 RAS:对于SIGBUS信号的处理

4、 RAS:基于4p pro的故障感知

特性优化

1、 Oracle兼容性

  • 内置包DBMS_LOB功能增强,新增DBMS_LOB.GETLENGTH函数支持获取BFILE对象的长度

2、 upsert功能增强

  • 兼容PG中upsert的用法

3、 DBLINK功能增强

  • 支持调用远程数据库的存储过程与函数

4、 密码有效期最大值修改为100*365天

5、 WDR snapshot更新统计信息

6、 全局分区索引适配支持ANALYZE VERIFY FAST

缺陷修复

1、 【ID1005180】修复函数中的connect by语句无法传入变量的问题

2、 【ID1005363】修复汉化环境下调用函数导致数据库宕机的问题

3、 【ID1005401】修复对于函数有多个传参类型,无法指定函数调用的问题

4、 【ID1005804】修复创建的用户名包含##时不能创建的问题

5、 【ID1005893】修复聚集SQL中rownum未出现在group by clause报错的问题

6、 【ID1005963】修复表字段为sessiontimezone时,插入数据时不带双引号报错的问题

7、 【ID1006054】修复重命名SCHEMA后,使用\d 命令查看带序列的表结构报错的问题

8、 【ID1006135】修复创建或修改行存表时,字段名称为tid时会报错的问题

9、 【ID1006153】修复REGEXP_REPLACE函数没有适配Oracle的问题

10、 【ID1006156】修复jdbc_fdw访问数据表字段为Vastbase关键字时无法识别的问题

11、 【ID1006273】修复初始化GBK字符集数据库报错的问题

12、 【ID1006308】修复建表使用link关键字报错的问题

13、 【ID1005771】修复security lable帮助信息缺少表字段相关信息的问题

14、 【ID1005788】修复审计开关无法开启的问题

15、 【ID1005880】修复使用gs_guc工具设置参数,输出异常提示的问题

16、 【ID1006016】修复vb_dump导出PACKAGE,vsql导入失败的问题

17、 【ID1006141】修复删除pldbgapi扩展失败的问题

18、 【ID1006151】修复PIPELINED与PIPE ROW无法使用的问题

19、 【ID1006157】修复参数vastbase_login_info不生效,无法开启登录信息显示的问题

20、 【ID1006192】修复KylinV10SP1使用安装程序安装数据库提示缺少依赖的问题

21、 【ID1006254】修复三权分立下,管理员使用pg_restore导入数据库后,三权分立状态自动关闭的问题

22、 【ID1006304】修复USER_TAB_PARTITIONS视图不显示分区信息的问题

23、 修复恢复pg_dw_single文件时跳过了对索引为0位置的数据页面的处理的问题

24、 修复分区表交换分区时,如果指定verbose会报错的问题

25、 修复普通表的数据迁移到分区报错,压缩标记有定义的时候,把它置为NOCOMPRESS

26、 修复分区表并发访问,锁冲突导致的系统hang

27、 修复gs_probackup增量备份数据不完整的问题

28、 修复两个memcheck检测到的内存越界访问问题

29、 修复build完成后数据flush落盘

30、 修复cm_ctl build时产生core文件的问题

31、 扩展逻辑复制时候,cmd命令的长度限制从1024到100*1024

32、 向心跳线程发送SIGTERM信号时机后移

33、 增加nblock cache,降低smgrnblock造成的系统负载高

34、 修复fix shared_buffers设置极小时,淘汰策略ring size为0的问题&设置过大时,可能存在的内存问题

35、 修复report_iud_time函数中try catch跳转后锁队列混乱的问题

36、 修复极致rto脏页面漏刷问题

37、 修复远程读因invalidbuffer频繁core问题

38、 修复执行引擎的两个问题

39、 修复guc参数 behavior_compat_options 设置为-1时,statement_history内is_slow_sql字段依然为true的问题

40、 修复autovacuum分区表问题

41、 修复执行业务期间,upsert语句报错unrecognized heap_lock_tuple status:4的问题

42、 修复子事务里内存报错core问题

43、 修复heap-use-after-free checkstatement-stat-level问题

44、 修复percentworker在业务空闲场景下,线程占用cpu 7%的问题

45、 The SIGUSR2 flag bit is reset to False when a thread exits and interrupts are interrupted

46、 打印日志过程中增加屏蔽响应信号机制

47、 lib文件夹下的安全编译

48、 修复basebackup内存泄露问题

49、 修复probackup内存泄露问题

50、 修复 arm 机器 buf_state读取不到最新值的问题

51、 修复打开线程池频繁出现卡死问题,影响业务正常建立连接的问题

注意事项

1、 暂不支持汉化功能

2、 暂不支持语法CREATE MATERIALIZED VIEW WITH NO DATA

3、 暂不适配enable_opfusion参数,请关闭此参数以避免数据库宕机,另生产环境中不建议开启此参数

4、 参数query_dop设置为1,否则可能会引起SQL执行出错

5、 此版本暂不支持mysql_fdw功能

6、 不能注释参数wal_level及max_wal_senders

7、 为了避免备库增量同步失败问题:”FATAL: Forbit remote connection with initial user. gs_rewind receive ERROR, it will exist.“,请在主库pg_hba.conf文件中添加以下行:

# 必须写在 host all all 0.0.0.0/0 md5 行前面
host all <数据库初始用户名> <备库IP地址>/32 trust

8、 参数synchronous_commit不能设置为remote_apply,否则可能会存在严重的性能问题

9、 凝思操作系统下审计功能存在缺陷,需暂时关闭,设置参数audit_enabled=off

10、 在高负载情况( 7x24小时TPC-C测试)下,同步备库会有xlog日志堆积的问题,避免此问题有两种解决方法:

(1)开启极致RTO,参数配置请参考《Vastbase G100部署指南》

(2)在不存在异步备的情况下开启流控

enable_xlog_prune=on
recovery_time_target=1800 #开启流控,指备机能够在recovery_time_target时间内完成日志的写入和回放,单位为秒,示例表示1800秒即30分钟