8.2.0版本说明
【V8.2.0.107版本发布时间】2023年9月25日
【V8.2.0.106版本发布时间】2023年7月17日
【V8.2.0.103版本发布时间】2023年5月25日
【V8.2.0.102版本发布时间】2023年4月15日
【V8.2.0.101版本发布时间】2023年3月13日
【V8.2.0.100版本发布时间】2023年1月14日
【V8.2.0版本发布时间】:2022年11月28日
新增功能
行为变更
变更类型 | 序号 | 名称 | 变更描述 |
|---|---|---|---|
新增 | 1 | 支持windowagg生成value partition执行计划 | 窗口函数出现在语句的最外层,如果没有加order by,基线行为数据会是有序的,8.2.0版本默认开启enable_value_redistribute以后,数据会变成无序的,需要指定order by子句才能保证有序。 |
修改 | 2 | 异常规则配置方式变更,由工具变更为语法配置 | 异常规则原来由gs_cgroup对其对应的控制组做配置,8.2.0更改为CREATE/ALTER/DROP EXCEPT RULE语法配置,新版本使用gs_cgroup配置时会给出相应提示。 |
3 | 异常规则内部去除qualificationtime,以elapsedtime取代 | qualificationtime在旧版本作为一个规则,但是只能与cpuskewpercent合并使用,效果和elapsedtime相同。因此去除该配置项,直接配置elapsedtime即可。 | |
4 | tid字段名 | 行存支持tid字段名,原行存不支持tid字段名。 | |
5 | max_process_memory | CN调整为DN的一半。 |
SQL语法
变更类型 | 序号 | 名称 | 变更描述 |
|---|---|---|---|
新增 | 1 | 表属性参数analyze_mode | 新增表级analyze模式的控制参数(该表支持哪种analyze),不设置时与前向无变化。 |
2 | 禁用子查询提升hint | 增加禁用子查询提升hint,支持形式:no_merge当前查询,no_merge(relid)指定对象。 | |
3 | hint在DML语句中生效 | 增加支持hint在insert/update/merge/delete语句中生效。 | |
4 | agg重分布hint增加支持指定列名 | agg重分布hint增加支持指定列名,形式为/+ redistribute ((*) (a b c d)) */。 | |
5 | agg重分布hint增加支持指定count(distinct)列 | agg重分布hint支持指定count(distinct)列在双层hashagg场景下生效。 | |
6 | invisible | 新增索引OPTIONS,用于设置索引扫描在执行计划中是否可见。 | |
7 | 支持MySQL中的反引号 | 支持使用反引号区分普通字符和特殊字符。 | |
8 | 创建表时,列定义支持指定on update属性 | 列定义指定on update属性时,当数据有更新时,自动填充更新时间戳。 | |
9 | CREATE/ALTER/DROP EXCEPT RULE | 新增语法用于新增、创建、删除内核异常规则。 | |
10 | CREATE SERVER增加OPTIONS security_token | 新增OPTIONS security_token用于传递securitytoken用于临时AK,SK访问OBS。 | |
11 | CREATE FOREIGN TABLE增加OPTIONS security_token | 新增OPTIONS security_token用于传递securitytoken用于临时AK,SK访问OBS。 | |
12 | OBS外表(dist_fdw)option参数新增file_split_ threshold选项 | OBS外表(dist_fdw)option参数新增file_split_ threshold选项。 | |
13 | GDS外表新增gds_compress参数 | 基于GDS管道文件导入导出,用于GDS互联互通时候数据在DN和GDS之间压缩传输,目前仅支持snappy压缩算法普通文件的导入导出不支持该参数。 | |
14 | GDS外表新增dataencoding参数 | 用于表示latin1数据库中保存的数据的字符集。 | |
15 | gc_fdw互联互通外表(sql on other gaussdb外表)新增gds_compress参数 | 用于GDS外表互联互通时候数据在DN和GDS之间压缩传输,目前仅支持snappy压缩算法。 | |
16 | gc_fdw互联互通外表(sql on other gaussdb)新增dataencoding参数 | 用于表示执行端laint1数据库中保存的数据的字符集。 | |
修改 | 17 | CREATE/ALTER REDACTION POLICY | 表级参数deltarow_threshold的默认值设置为10000,指定列存表导入时小于多少行的数据进入delta表,只在表级参数enable_delta开启时生效。 |
18 | 资源池关联异常规则语法变更 | 新增INHERIT选项,说明策略是否继承自其他策略。 | |
19 | single_node支持obs外表语法 | 资源池旧版本可用于配置内存异常规则,8.2.0统一异常规则接口为 CREATE/ALTER RESOURCE POOL 'pool' with (EXCEPT_RULE='rule1,2'); | |
20 | OBS外表(dist_fdw)支持使用server指定AK、SK | single_node支持obs外表(dfs_fdw)。 |
关键字
变更类型 | 序号 | 名称 | 变更描述 |
|---|---|---|---|
新增 | 1 | TRY_CAST | 新增非保留关键字TRY_CAST,用于兼容MySQL中的TRY_CAST函数,当类型转换失败时,返回NULL。 |
系统表
变更类型 | 序号 | 名称 | 变更描述 |
|---|---|---|---|
新增 | 1 | gs_blocklist_query | 新增系统表用于保存黑名单语句和异常规则触发信息。 |
2 | pg_except_rule | 新增pg_except_rule系统表,用于存储当前集群所创建的异常规则信息,包括规则名称,具体规则阈值,以及规则触发的action。 | |
修改 | 3 | pg_redaction_policy,pg_redaction_column | 新增inherited列,说明策略是否由用户手动创建 |
系统函数
变更类型 | 序号 | 名称 | 变更描述 |
|---|---|---|---|
新增 | 1 | pg_stat_get_runtime_relstats | 新增函数,开启动态采样后autoanalyze生成的表级统计信息存放于内存中,该函数用于查询。 |
2 | pg_stat_get_runtime_attstats | 新增函数,开启动态采样后autoanalyze生成的列级统计信息存放于内存中,该函数用于查询。 | |
3 | pg_stat_set_last_data_changed_num | 新增手动设置表历史累计修改量接口,用于pgstat内容丢失的补救措施 | |
4 | strcmp() | 字符串比较,相等返回0,小于返回-1,其他返回1,入参含null返回null | |
5 | hex() | 入参字符串的每个字符或十进制整数转化为十六进制数字。 | |
6 | unhex() | 执行从HEX(str)的反向操作。就是说,它将参数中的每一对十六进制数字理解为一个数字,并将其转化为该数字代表的字符。结果字符以bytea的形式返回。 | |
7 | space(n) | 返回n个空格构成的字符串 | |
8 | rand() | 获取0.0 到 1.0 之间的随机数。 | |
9 | truncate(x,d) | 将x截断为d位小数。d为负数时截断整数位为0。 | |
10 | addtime(expr1,expr2) | 增加时间。expr1是time或timestamp类型,expr2是interval类型。 | |
11 | subtime(expr1,expr2) | 特定时间减去指定的时间。expr1 - expr2 expr1为time、timestamp类型。expr2为interval类型,返回类型同expr1。 | |
12 | timediff(expr1,expr2) | 计算两个参数的时间差。expr1 - expr2,返回time类型, 入参需同为time类型或timestamp类型。 | |
13 | curdate() | 返回当前日期,date类型。 | |
14 | curtime([fsp]) | 返回当前时间,time类型 fsp-它指定返回的小数秒精度。 | |
15 | uuid() | 返回通用唯一标识符(UUID)。 | |
16 | convert_tz() | 进行时区转换。 | |
17 | cast(expr,typename) | 将expr转换为指定type。 | |
18 | digest() | digest()函数可以根据不同的算法生成数据的二进制哈希值。 | |
19 | hmac() | hmac()函数可以根据不同的算法为带有密钥的数据计算出MAC值。 | |
20 | crypt()和gen_salt() | crypt()和gen_salt()函数专用于哈希密码。crypt()执行哈希用于加密数据,gen_salt()用于生成加盐哈希。 | |
21 | pgp_sym_encrypt() | 用于对称密钥加密。 | |
22 | pgp_sym_decrypt() | 用于解密PGP对称密钥加密后的消息。 | |
23 | pgp_pub_encrypt() | 用于公共密钥加密。 | |
24 | pgp_pub_decrypt() | 用于解密PGP公共密钥加密后的消息。 | |
25 | pgp_key_id() | 用于提取PGP公钥或者私钥的密钥ID;如果传入一个加密后的消息,将会返回加密该消息使用的密钥ID。 | |
26 | armor() | 用于将二进制数据转换为PGP ASCII-armor格式,相当于Base64加上CRC以及额外的格式化。 | |
27 | dearmor() | 用于执行与armor()函数相反的转换。 | |
28 | pgp_armor_headers() | 函数用于返回数据中的armor header。 | |
29 | encrypt | 原始加密函数,不支持PGP加密的任何高级功能。IV是0。 | |
30 | decrypt | 原始解密函数,不支持PGP加密的任何高级功能。IV是0。 | |
31 | encrypt_iv | 原始解密函数,不支持PGP加密的任何高级功能。IV可由用户设定。 | |
32 | decrypt_iv | 原始解密函数,不支持PGP加密的任何高级功能。IV可由用户设定。 | |
33 | gen_random_bytes | gen_random_bytes()函数用于生成具有强加密性的随机字节。 | |
34 | gen_random_uuid() | gen_random_uuid()函数用于返回一个version 4的随机UUID。 | |
35 | get_volatile_pg_class | 获取内存中volatile临时表的pg_class相关元数据(volatile临时表元数据不存储系统表)。 | |
36 | get_volatile_pg_attribute | 获取内存中volatile临时表的pg_attribute相关元数据。 | |
37 | gs_increase_except_num | 新增函数,用于增加查询异常触发次数。 | |
38 | gs_update_blocklist_hash_info | 新增函数用于更新内存中黑名单信息。 | |
39 | gs_append_blocklist | 新增函数用于新增黑名单语句。 | |
40 | gs_remove_blocklist | 新增函数用于将语句移出黑名单。 | |
41 | gs_wlm_rebuild_except_rule_hash | 新增gs_wlm_rebuild_except_rule_hash函数用于主动触发build异常规则内核hash表。 | |
42 | pg_stat_wal_write | 用于查询当前cn或dn上的线程信息,以及wal和数据页导入量及速率。 | |
43 | pgxc_stat_wal_write | 用于查询cn与dn交互的线程信息,以及wal和数据页导入量及速率。 | |
44 | get_col_file_info | 获取指定列存表的空CU文件数和总CU文件数。 | |
45 | get_all_col_file_info | 获取所有列存表的空CU文件数和总CU文件数。 | |
46 | col_rebuild_file_relation | 更换Relfilenode,重新整理指定列存表的CU文件,重整后变回连续的1GB文件。 | |
修改 | 47 | pg_query_audit/pgxc_query_audit | 修改thread_id字段为session id字段,记录语句执行所在的session。 |
48 | login_audit_messages/login_audit_messages_pid | 新增session id字段,记录语句执行所在的session。 |
系统视图
变更类型 | 序号 | 名称 | 变更描述 |
|---|---|---|---|
新增 | 1 | gs_obs_latency | 新增视图用于监控OBS延迟。 |
2 | pgxc_stat_wal | 查询当前query的wal日志和数据页的流量信息。 | |
3 | pgxc_lockwait_detail | 显示每个节点中锁等待链详细信息。 | |
4 | pgxc_wait_detail | 显示所有节点SQL等待从上至下的等待链详细信息,包括wait_node、query等。 | |
修改 | 5 | gs_obs_read_traffic | OBS读写带宽视图,修改为按10分钟间隔聚集,增加logtime列显示时间分组。 |
6 | gs_obs_write_traffic | OBS读写带宽视图,修改为按10分钟间隔聚集,增加logtime列显示时间分组。 |
GUC参数
变更类型 | 序号 | 名称 | 变更描述 |
|---|---|---|---|
新增 | 1 | enable_wlm_internal_memory_limit | 控制是否打开wlm内部的限制,如:作业估算内存不超过80%/90%/40%的限制。 |
2 | enable_strict_memory_expansion | 控制作业是否在DN上做内存扩展。 | |
3 | allow_zero_estimate_memory | 控制作业在没有统计信息情况下,是否允许将估算内存设置为0。 | |
4 | max_process_memory_auto_adjust | 控制CM在主备切换情况下是否对max_process_memory做动态调整。 | |
5 | wlm_memory_feedback_adjust | 控制CCN的动态负载管理中的内存负反馈功能是否开启,支持:on、off、on(50,40) 三种设置方式。 | |
6 | autoanalyze_mode | 新增系统级autoanalyze模式的控制参数(默认normal与前向行为一致,设置为light则启用动态采样)。 | |
7 | enable_redactcol_computable | 用于设置是否开启数据脱敏可算功能,默认关闭。 | |
8 | windowagg_pushdown_enhancement | 控制窗口函数和group by同时出现时是否将partition by和group by的交集下推。 | |
9 | enable_from_collapse_hint | 控制是否启用优先选择hint的计划,默认启用,并支持语句级hint参数。 | |
10 | enable_value_redistribute | 用于设置是否使用value partition stream优化windowagg。 | |
11 | setop_optmode | 控制setop操作的各个子查询分支是否做去重操作,默认值disable,即不去重,跟8.2.0之前版本保持一致;配置值force:强制走去重;配置值cost,基于cost选择是否去重。(注:setop分支的底层为stream算子的时候才会尝试去重)。 | |
12 | security_enable_options | 控制是否允许使用grant_to_public、grant_with_grant_option和foreign_table_options这三种功能,出于安全考虑,这些操作默认禁止,用户可根据实际需求进行配置。 | |
13 | audit_object_name_format | 控制审计日志中object_name字段显示对象名的格式,默认single,显示单对象。 | |
14 | enable_redactcol_equal_const | 用于限制新版本脱敏下允许常量套取的行为,默认关闭,禁止脱敏列与常量做等值比较。 | |
15 | enable_mixedagg | 用于控制是否生成Mixed Agg执行计划,默认关闭。 | |
16 | max_streams_per_query | 用于控制对stream数量过多的plan在优化器阶段报错,避免stream建连占用过多连接,默认值10000。 | |
17 | agg_max_mem | 用于控制Agg算子聚集列超过5个时,最大的估算内存,防止估算内存过大导致CCN排队。 | |
18 | max_volatile_memory | volatile临时表相关内存context的最大量,单位KB,取值范围1024-INT_MAX,默认1GB。 | |
19 | max_volatile_tables | 单个session中volatile临时表(包括创建时的附属表,如toast、cudesc)的个数限制,默认300。 | |
20 | enable_hashfilter | 用来控制是否可以生成hashfilter。 | |
21 | volatile_shipping_version | 控制8.2.0版本sequence下推增强能力,默认1。 | |
22 | smp_thread_cost | 用于控制生成的query_dop值。默认值为1000。 | |
23 | enable_wal_decelerate | 用于带索引导入时的流控限速的总开关。 | |
24 | wal_decelerate_policy | 用于表示触发限速后的行为策略。 | |
25 | wal_write_speed | 用于表示单DN每个query每秒最大允许触发wal写入动作的速度Byte/s。 | |
26 | wal_decelerate_trigger_threshold | 用于表示单DN每个query触发wal写入限速的门限。 | |
27 | enable_cstore_ring_buffer | 控制是否开启列存RingBuffer。 | |
28 | enable_tsdb_multi_temperature | 控制是否开启时序表的obs冷热功能,默认为关闭。 | |
29 | enable_tsdb_multi_temperature | 控制是否开启时序表的obs冷热功能,默认为关闭。 | |
30 | ddl_lock_timeout | 用于单独指定阻塞DDL语句等锁的时间,让DDL拿不到锁快速终止,只对八级锁有效,默认值为0,表示不生效。 | |
31 | build_backup_param | 控制增量build过程中用于磁盘备份的最小满足规格。 | |
修改 | 32 | comm_tcp_mode | 参数类型从POSTMASTER修改为SIGHUP。 |
33 | max_process_memory | 进程的最大内存,由POSTMASTER类型修改为SIGHUP;最小阈值为2G,不推荐设置为最小阈值。 | |
34 | rewrite_rule | 新增eager_magicset枚举值控制magic set增强功能。 | |
35 | behavior_compat_options | behavior_compat_options新增normal_session_id取值,用于控制是否session id是否拼接node_name,默认关闭,session id拼接node_name。 | |
36 | behavior_compat_options | merge_into_with_trigger新增behavior_compat_options,开启后支持对有触发器的表执行MERGE INTO,默认关闭 | |
37 | behavior_compat_options | 增加选项disable_jsonb_exact_match,控制操作符匹配规则,默认关闭; 参数关闭时,仅支持jsonb相关类型的精确匹配;若精确匹配失败,则会在剩余不含jsonb类型的备选中匹配; 参数打开时,行为回退,操作符匹配不区分类型; | |
38 | hashjoin_spill_strategy | 新增两种策略5,6。行为与原来0、1相同。原来0、1行为修改。从内表较大内存放不下,外表较小时进行内外表交换,改成内表较大内存放不下,继续划分内表,直到无法划分,再尝试内外表交换。 | |
39 | sql_use_spacelimit | 对sql_use_spacelimit参数初始值进行设置。将其修改为当前实例所在磁盘的10%(上限),不足10G(下限)时,设置为10G | |
40 | temp_file_limit | 对temp_file_limit参数初始值进行设置。将其修改为当前实例所在磁盘的10%(上限),不足10G(下限)时,设置为10G。 | |
删除 | 41 | enable_grant_public | 设置是否允许使用grant to public语法。 |
42 | enable_grant_option | 设置是否允许使用grant with grant option语法。 |

