更新时间:2024-11-05 GMT+08:00

8.1.0版本说明

【发布日期】:2021年5月15日

【集群版本号】:8.1.0.100

特性变更

表1 8.1.0特性变更

特性

描述

Analyze强化,支持临时表,支持单事务操作

事务、存储过程支持analyze命令;analyze和alter table并发时不会报错;自动analyze支持临时表场景。

向量化引擎性能提升

  • 向量化执行增强(HASH FULL JOIN)
  • string_agg/listagg支持向量化

分区列过滤条件非常量的分区剪枝

分区剪枝优化,当前分区剪枝只能针对常量进行,而对于需要计算的变量不能剪枝,需要进行优化。

全量备份(schema粒度)+细粒度恢复(表级、schema级)

全量备份(schema粒度)+细粒度恢复(表级、schema级)

GDS支持第三方自定义数据转换

支持第三方自定义数据转换。

RTO优化

集群内HA, RPO=0,RTO稳定<60s,POC场景支持RTO<30s。

SQL on HDFS

支持OBS外表导出ORC格式数据。

支持解析XML函数

支持解析XML函数。

支持修改分布列

支持修改分布列。

支持CN故障job自动迁移

当前CN故障后,其对应的job任务可以自动迁移。

支持C函数平滑升级

支持客户的C函数平滑升级。

gsql支持TD DSQL兼容性

  1. 支持动态变量字符串等值比对(不包括其他逻辑操作,不包含与或非逻辑,不包含嵌套)。
  2. GOTO label。
  3. THEN模块只支持sql语句或GOTO语句。

支持时区和国际组织IANA Time Zone Database同步

支持时区和国际组织IANA Time Zone Database同步。

SQL语法

表2 SQL语法

变更类型

序号

名称

变更描述

新增

1

列存分区表支持split操作

列存分区表支持split操作。

2

CREATE TABLE tbl(LIKE tbl2 INCLUDING DROPCOLUMNS )

新增支持LIKE DROPCOLUMNS语法。

3

ALTER TABLE tbl DISTRIBUTE BY

新增支持修改表分布列语法。

4

ALTER TABLE set version

用于切换列存表的新老格式。

5

CREATE/ALTER FOREIGN TABLE Write Only

支持OBS的ORC格式写。

6

CREATE/ALTER FOREIGN TABLE Write Only

支持HDFS的ORC格式写。

7

XML类型

支持在表、函数中使用XML数据类型。

8

ALTER VIEW

alter view viewname REBUILD;

修改

9

VACUUM FULL

vacuum full同一张表并发操作时会发生死锁。

10

DROP TEXT SEARCH CONFIGURATION

如果待删除的TEXT SEARCH CONFIGURATION是当前的default_text_search_config则报错,删除失败。

11

CREATE/ALTER ROLE/USER AUTHINFO 'ldap'

修改原有的指定用户认证类型是ldap的语法,去除64个字符的限制。

12

CREATE USER/ROLE with authinfo 'ldap' password disable

修改创建ldap用户的语法。

13

ALTER USER/ROLE with authinfo 'ldap' password disable

修改更新ldap用户的语法。

删除

14

ALTER TABLE分区表exchange with unlogg表

禁止分区表与unlogged表做exchange交换。

15

ALTER TABLE ... inherit修改继承关系功能

优化器未对表继承做适配,需封禁alter table inherit接口。

关键字

表3 关键字

变更类型

序号

名称

变更描述

新增

1

xmltable

COL_NAME_KEYWORD关键字,已做巡检适配。

2

xmlnamespaces

COL_NAME_KEYWORD关键字,已做巡检适配。

系统表

表4 系统表

变更类型

序号

名称

变更描述

新增

1

dbms_om.gs_wlm_session_info

新增系统表。

2

dbms_om.gs_wlm_operator_info

新增系统表。

修改

3

pg_jobs

对应老系统表pg_job,元数据关系使用oid关联,由于共享系统表已满,无法在一个事务中删除后添加,因此重命名pg_job_proc得来。

4

pg_proc

将函数textanycat和anytextcat修改为非STRICT函数。

5

pg_proc

修改函数database_to_xml、database_to_xmlschema、database_to_xml_and_xmlschema为非STRICT函数。

6

pg_catalog.gs_wlm_session_info

修改为同名视图。

7

pg_catalog.gs_wlm_operator_info

  1. 修改为同名视图。
  2. 增加nodename字段。

8

pg_catalog.gs_wlm_ec_operator_info

修改为同名视图。

9

pg_catalog.gs_wlm_ec_operator_info

  1. 修改为同名视图。
  2. 增加nodename,plan_node_name,ec_operator,ec_fetch_count四个输出字段。

系统函数

表5 系统函数

变更类型

序号

名称

变更描述

新增

1

pgxc_get_residualfiles

pg_get_residualfiles的cn统一查询函数。

2

pgxc_rm_residualfiles

pg_rm_residualfiles的cn统一查询函数。

3

pgxc_verify_residualfiles

pg_verify_residualfiles的cn统一查询函数。

4

query_to_xmlschema

把Query查询的内容映射成XML模式文档。

5

query_to_xml

把Query查询的内容映射成XML文档。

6

query_to_xml_and_xmlschema

把Query查询的内容映射成XML值和模式文档。

7

table_to_xmlschema

把关系表的内容映射成XML模式文档。

8

table_to_xml

把关系表的内容映射成XML值。

9

table_to_xml_and_xmlschema

把关系表的内容映射成XML值和模式文档。

10

cursor_to_xmlschema

把游标查询的内容映射成XML模式文档。

11

cursor_to_xml

把游标查询的内容映射成XML文档。

12

schema_to_xmlschema

把整个模式的内容映射成XML模式文档。

13

schema_to_xml

把整个模式的内容映射成XML文档。

14

schema_to_xml_and_xmlschema

把整个模式的内容映射成XML值和模式文档。

15

database_to_xmlschema

把整个数据库的内容映射成XML模式文档。

16

database_to_xml

把整个数据库的内容映射成XML文档。

17

database_to_xml_and_xmlschema

把整个数据库的内容映射成XML值和模式文档。

18

xmlpi

创建一个XML处理指令。

19

xmlcomment

创建一个使用指定文本作为内容的XML注释。

20

xmlserialize

从xml类型的值生成一个字符串。

21

xmlparse

从字符数据中生成一个xml类型的值。

22

xpath

返回一个xml值的数组对应xpath表达式所产生的节点集。

23

get_instr_unique_sql_remote_cns

获得除当前CN节点外所有其他CN上面的unique sql数据。

24

xml_is_well_formed

检查text字符串是不是格式良好的xml值。

25

xml_is_well_formed_content

检查text字符串是不是格式良好的内容。

26

xml_is_well_formed_document

检查text字符串是不是格式良好的文档。

27

xmlconcat

将XML值组成的列表串接成一个单独的值。

28

xmlagg

聚集函数,将输入值串接起来。

29

IS DOCUMENT

判断参数值是一个正确的XML文档。

30

IS NOT DOCUMENT

判断参数值不是一个正确的XML文档。

31

xmlexists

判断参数中的XPath表达式是否返回任何结点。

32

xpath_exists

判断参数中的XPath表达式是否返回任何结点。

33

xmlelement

使用给定名称、属性和内容产生一个XML元素。

34

xmlforest

使用给定名称和内容产生一个元素的XML森林(序列)。

35

pg_xlog_replay_completion

显示当前DN Xlog redo的进度信息。

36

pg_data_sync_from_dummy_completion

显示当前DN数据页从dummystandby传输的进度信息。

37

pg_stat_xlog_space

显示当前DN上Xlog空间使用信息。

38

pgxc_stat_xlog_space

显示所有主DN上Xlog空间使用信息。

39

xmlroot

修改一个XML值的根结点的属性。

40

pg_get_residualfiles

用于查询当前节点的所有残留文件列表。

41

pg_get_running_jobs

用于查询当前节点上正在运行的Job。

42

pg_is_residualfiles

用于从当前库中查询指定的relfilenode是否是残留文件。

43

pg_rm_residualfiles

用于将指定的残留文件列表中的文件删除。

44

pg_verify_residualfiles

用于验证指定的文件中记录的残留文件列表是否确实为残留文件。

45

table_distribution

增加一个参数、参数类型为regclass的table_distribution函数。

46

XMLTABLE

支持XMLTABLE函数用于解析XML数据。

修改

47

pgxc_get_senders_catchup_time

增加catchup过程信息字段。

48

pg_stat_get_data_senders

增加catchup过程信息字段。

49

pgxc_get_thread_wait_status

增加参数num_node_display。

50

pg_stat_get_status

增加参数num_node_display。

51

pg_catalog.pgxc_get_wlm_session_info_bytime

第一个参数从区分大小写修改为不区分大小写。

系统视图

表6 系统视图

变更类型

序号

名称

变更描述

新增

1

pg_job_single

单节点job信息。

2

pg_job

用于向前兼容pg_job系统表,分布式pg_job_single集合。

3

pgxc_get_stat_all_partitions

获取所有分区表各个分区的insert/update/delete/live/dead元组数及脏页率信息。

4

gs_view_dependency

级联查询视图的依赖关系,是上面两个函数的union。

修改

5

pgxc_get_instr_unique_sql

使用get_instr_unique_sql_remote_cns获得其他CN上的unique sql数据。

6

pg_stat_replication

修复功能。

7

pg_get_senders_catchup_time

增加catchup过程信息字段。

8

pg_catalog.gs_wlm_operator_history

增加nodename字段。

9

pg_catalog.pgxc_wlm_operator_history

增加nodename字段。

10

pg_catalog.pgxc_wlm_operator_info

增加nodename字段。

行为变更

表7 行为变更

变更类型

序号

名称

变更描述

修改

1

cn retry支持存储过程影响实时打印

存储过程打印输出则实时打印,如遇到cn retry则输出notice提示输出消息会重复。还未输出打印时遇cn retry不输出notice。

GUC参数

表8 GUC参数

变更类型

序号

名称

变更描述

新增

1

wal_compression_level

PFI日志压缩功能zlib压缩级别,默认9。

2

wal_compression

PFI日志压缩功能开关,默认关闭。

3

max_xlog_backup_size

xlog日志备份大小。当节点备份的xlog日志size超过该值时,自动删除备份的最旧xlog日志,直到备份日志size小于该值的90%。

4

max_cache_partition_num

表示在重分布过程中,最多在内存中保留的分区数量,多余该数量,把最早的分区按CU格式下盘。

5

password_encryption_type

该参数决定采用何种加密方式对用户密码进行加密存储。新增取值2,表示采用sha256方式对密码加密。

如果当前集群为8.0.0及以下版本升级到当前版本,该参数的默认值为保持前向兼容和原低版本集群一致,即默认值保持向前兼容仍旧是1;新安装集群默认值为2。

6

join_num_distinct

控制join列的默认distinct值,默认值-20。

7

cost_model_version

控制本次cost估算优化是否生效的参数,默认值为1,代表生效。

8

qual_num_distinct

控制过滤列的默认distinct值,默认值200。

9

behavior_compat_options

新增varray_verification选项,支持回退此次新增的校验。

10

behavior_compat_options

新增check_function_conflicts选项支持对IMMUTABLE函数内部是否有非IMMUTABLE行为的校验。

11

auto_process_residualfile

自动记录残留文件功能开关。默认为true,表示功能打开。

12

default_colversion

用于指定用户创建列存表时的默认建表格式,默认格式为1.0。

13

enable_partition_dynamic_pruning

分区表扫描是否支持动态剪枝,默认打开(支持动态剪枝)。

14

enable_join_pseudoconst

控制是否在等于常量的join表达式上生成join表达式,类似t1 inner join t2 on t1.a=t2.a where t1.a = 1场景下,可以根据t1.a=t2.a生成join表达式(以前的时候这类join条件不能做join cond)。

15

view_independent

参数作用:控制视图依赖解耦功能的开关。

默认值:off。

16

enable_view_update

支持单表视图更新。

修改

17

enable_index_nestloop

enable_index_nestloop从C80以及之前的版本升级到最新的补丁版本保持off。

enable_index_nestloop从6.5.0或6.5.0版本升级上来,保持前向兼容。

enable_index_nestloop安装默认on.

18

archive_mode

xlog日志归档开关,默认值从off变更为on;在部分场景对性能有小幅影响,性能比拼等POC场景建议手动规避。

19

cost_param

默认值修改为16,对应本次的cost估算优化内容。

20

rewrite_rule

去除partialpush(部分下推)参数选项。

21

behavior_compat_options

新增strict_concat_functions参数选项,用作函数textanycat和anytextcat的前向兼容。

22

behavior_compat_options

增加'strict_text_concat_td'选项,TD模式下使textcat/textanycat/anytextcat变为strict函数。

23

behavior_compat_options

增加strict_text_concat_td选项,兼容TD模式下NULL的拼接行为。

24

behavior_compat_options

增加bpchar_text_without_rtrim选项,兼容TD模式下bpchar字符串操作对尾部空格处理的风格。

时区

表9 时区

变更类型

序号

名称

变更描述

修改

1

Asia/Beijing北京时区的定义改为与Asia/Shanghai一致

  1. 1901年前的时区偏移从08:00:00调整为08:05:43。
  2. 新增了1940年至1949年的夏令时规则。
    • 1940年6月1号到10月12号采用夏令时。
    • 1941年3月15号到11月1号采用夏令时。
    • 1942年1月31日直到1945年9月1号都采用夏令时,这三年都使用夏令时区是因为期间发生了二战,政府没有在进行时区规则全国调整。
    • 1946年05月15日到09月31日采用夏令时。
    • 1947年04月15日到10月31日采用夏令时。
    • 1948年05月01日到09月30日采用夏令时。
    • 1949年05月01日到09月30日采用夏令时。
  3. 1986年至1991年间的夏令时规则也进行了调整。
    • 1986至1991年夏令时调整从凌晨零点改为凌晨两点。
    • 1987至1991年夏令时调整到标准时区从9月10号以后第一个周日改为11号以后第一个周日。

2

Asia/Shanghai定义修改

  1. 1901年前的时区偏移从08:05:57调整为08:05:43。
  2. 调整1940至1941年夏令时规则。
    • 1940年夏令时时间,从6月3日到10月1日改为6月1日到10月12日。
    • 1941年夏令时时间,从3月16日到10月1日改为3月15日到11月1日。
  3. 新增了1942年至1949年夏令时规则。
    • 1942年1月31日直到1945年9月1号都采用夏令时,这三年都使用夏令时区是因为期间发生了二战,政府没有再进行时区规则调整。
    • 1946年05月15日到09月31日采用夏令时。
    • 1947年04月15日到10月31日采用夏令时。
    • 1948年05月01日到09月30日采用夏令时。
    • 1949年05月01日到09月30日采用夏令时。
  4. 1986年至1991年间的夏令时规则也进行了调整。
    • 1986至1991年夏令时调整从凌晨零点改为凌晨两点。
    • 1987至1991年夏令时调整到标准时区从9月10号以后第一个周日改为11号以后第一个周日。

3

Asia/Urumqi

1980年5月后的时区偏移从东八区调整为东六区。

4

原民国时期按照物理时区定义的五大时区调整为两大时区

  1. Asia/Harbin(长白时区),Asia/Chongqing(陇蜀时区),Asia/Shanghai(中原标准时区)时区名保留,定义都指向新定义的Asia/Shanghai(中国标准时区)。全国统一使用。
  2. Asia/Kashgar(昆仑时区),Asia/Urumqi(新藏时区)时区名保留,定义都指向新定义的Asia/Urumqi(乌鲁木齐时区)。当地同时使用两个时区定义。

5

初始化默认时区可能会变更

数据库初始化时会评估一个最符合操作系时区的数据库内部支持时区作为默认时区。因数据库内部支持的时区定义变化,可能会导致初始化默认时区有变化。