Version 8.2.0
[Release date of V8.2.0.107] September 25, 2023
[Release date of V8.2.0.106] July 17, 2023
[Release date of V8.2.0.103] May 25, 2023
[Release date of V8.2.0.102] April 15, 2023
[Release date of V8.2.0.101] March 13, 2023
[Release date of V8.2.0.100] January 14, 2023
[Release date of V8.2.0]: November 28, 2022
New Feature
Behavior changes
Change Type |
No. |
Change |
Description |
---|---|---|---|
Added |
1 |
Added WindowAgg support for value partition execution plans |
The window function is executed at the outermost layer of statements. If ORDER BY is not used, the data behaviors are in a default order. In version 8.2.0, after enable_value_redistribute is enabled by default, the data becomes unordered. You need to use the ORDER BY clause to specify the order. |
Modified |
2 |
Changed the exception rule configuration mode from tool configuration to syntax configuration. |
In earlier versions, exception rules are configured for Cgroups using gs_cgroup. In 8.2.0, exception rules are configured using the CREATE/ALTER/DROP EXCEPT RULE syntax. |
3 |
Replaced the exception rule qualificationtime with elapsedtime. |
In earlier versions, qualificationtime is used as a rule, but it can only be used together with cpuskewpercent. Their effect is the same as that of elapsedtime. Therefore, this configuration item can be replaced with elapsedtime. |
|
4 |
Tid column name |
Row storage supports the tid column names, which are not supported before. |
|
5 |
max_process_memory |
Changed the number of CNs to half of that of DNs. |
SQL Syntax
Change Type |
No. |
Feature |
Change Description |
---|---|---|---|
Added |
1 |
Table parameter analyze_mode |
Added the parameter analyze_mode, which specifies the ANALYZE modes supported by a table. If this parameter is not set, the previous mode remains unchanged. |
2 |
Hints for disabling subqueries |
Added the hints for disabling subqueries. Format: no_merge (current query) and no_merge(relid) (specified object). |
|
3 |
DML hints |
Added support for hints in INSERT, UPDATE, MERGE, and DELETE statements. |
|
4 |
AGG redistribution hints support specified column names. |
Column names can be specified for AGG redistribution hints. The format is /+ redistribute ((*) (a b c d)) */. |
|
5 |
Count(distinct) hints |
Added hints for specifying the count(distinct) column, effective only in the double Hash Agg scenario. |
|
6 |
invisible |
Added index OPTIONS to specify whether the index scan is visible in the execution plan. |
|
7 |
Backquotes |
Backquotes can be used to distinguish common characters from special characters. |
|
8 |
ON UPDATE in column definition |
When the ON UPDATE attribute is specified in the column definition, the update timestamp is automatically filled when data is updated. |
|
9 |
CREATE/ALTER/DROP EXCEPT RULE |
Added the syntax to add, create, and delete kernel exception rules. |
|
10 |
OPTIONS security_token in CREATE SERVER statements |
Added OPTIONS security_token to transfer security tokens for using temporary AKs and SKs to access OBS. |
|
11 |
OPTIONS security_token in CREATE FOREIGN TABLE statements |
Added OPTIONS security_token to transfer security tokens for using temporary AKs and SKs to access OBS. |
|
12 |
file_split_ threshold in (dist_fdw) option in OBS foreign tables |
Added the file_split_ threshold to the OBS foreign table parameter (dist_fdw) option. |
|
13 |
gds_compress in GDS foreign tables |
Added the gds_compress parameter, which is used for compressed transmission of data between DNs and GDSs during GDS foreign table interconnection. Currently, only the Snappy compression algorithm is supported. |
|
14 |
dataencoding in GDS foreign tables |
Added the dataencoding parameter, which specifies the character set of the data stored in the latin1 database. |
|
15 |
gds_compress in gc_fdw foreign tables (sql on other gaussdb foreign tables) |
Added the gds_compress parameter, which is used for compressed transmission of data between DNs and GDSs during GDS foreign table interconnection. Currently, only the Snappy compression algorithm is supported. |
|
16 |
dataencoding in gc_fdw foreign tables (sql on other gaussdb). |
Added the dataencoding parameter, which specifies the character set of the data stored in the latin1 database. |
|
Modified |
17 |
CREATE/ALTER REDACTION POLICY |
The default value of deltarow_threshold is set to 10000, which specifies the upper limit of rows when column-store tables are imported to the Delta table. This parameter is valid only when the table-level parameter enable_delta is enabled. |
18 |
Syntax of association between resource pools exception rules |
Added the INHERIT option, which specifies whether a policy is inherited from other policies. |
|
19 |
single_node support for OBS foreign table syntax |
In earlier versions, memory exception rules can be configured for resource pools. The exception rules in 8.2.0 are configured via the unified interface: CREATE/ALTER RESOURCE POOL 'pool' with (EXCEPT_RULE='rule1,2'); |
|
20 |
Use server to specify the AK and SK of an OBS foreign table (dist_fdw). |
Single_node supports OBS foreign tables (dfs_fdw). |
Keywords
Change Type |
No. |
Keyword |
Change Description |
---|---|---|---|
Added |
1 |
TRY_CAST |
Added the non-reserved keyword TRY_CAST for the compatibility with the TRY_CAST function in MySQL. If the type conversion fails, NULL is returned. |
System Catalogs
Change Type |
No. |
Name |
Change Description |
---|---|---|---|
Added |
1 |
gs_blocklist_query |
Added the system catalog gs_blocklist_query, which is used to store blocklist statements and exception rule triggering information. |
2 |
pg_except_rule |
Added the system catalog pg_except_rule, which is used to store information about exception rules created in the cluster, including the rule name, rule threshold, and action triggered by the rule. |
|
Modified |
3 |
pg_redaction_policy, pg_redaction_column |
Added the inherited column, which specifies whether a policy is manually created or inherited. |
System Functions
Change Type |
No. |
Function |
Description |
---|---|---|---|
Added |
1 |
pg_stat_get_runtime_relstats |
Queries table-level statistics generated by AUTOANALYZE. |
2 |
pg_stat_get_runtime_attstats |
Queries column-level statistics generated by AUTOANALYZE. |
|
3 |
pg_stat_set_last_data_changed_num |
Interface for manually setting the total size of historical modification for the remedy of the pgstat content loss. |
|
4 |
strcmp() |
Compares two strings. If the first string equals the second string, 0 is returned. If the first string is less than the second string, -1 is returned. If the second string is less than the first string, 1 is returned. If the input parameters contain null, null is returned. |
|
5 |
hex() |
Converts each character or decimal integer in the input parameter into a hexadecimal number. |
|
6 |
unhex() |
Performs the reverse operation of hex(). This function interprets each pair of hexadecimal digits (in the argument) as a number and converts it into a character. The result character is returned in bytea format. |
|
7 |
space(n) |
Returns a string consisting of n spaces. |
|
8 |
rand() |
Obtains a random number ranging from 0.0 to 1.0. |
|
9 |
truncate(x,d) |
Truncates x to d decimal places. If d is a negative number, then the number is truncated to the left side of the decimal point. |
|
10 |
addtime(expr1,expr2) |
Adds time. expr1 is of the time or timestamp type, and expr2 is of the interval type. |
|
11 |
subtime(expr1,expr2) |
Subtracts a time period expr2 from the time expr1. expr1 is of the time or timestamp type. expr2 is of the interval type. The return type is the same as that of expr1. |
|
12 |
timediff(expr1,expr2) |
Calculates the time difference between two expr1 and expr2 (expr1 - expr2). Returns the time type. The arguments must be both of the time or timestamp type. |
|
13 |
curdate() |
Returns the current date (date type). |
|
14 |
curtime([fsp]) |
Returns the current time (time type). fsp indicates the precision of the returned time. |
|
15 |
uuid() |
Returns a universally unique identifier (UUID). |
|
16 |
convert_tz() |
Convert the time zone. |
|
17 |
cast(expr,typename) |
Converts expr to a specified type. |
|
18 |
digest() |
Generates binary hash values of the given data based on different algorithms. |
|
19 |
hmac() |
Calculates the MAC value for the data with the key. |
|
20 |
crypt () and gen_salt () |
The crypt() and gen_salt() functions are used for password hashing. crypt() executes hashes to encrypt data, and gen_salt() generates salted hashes. |
|
21 |
pgp_sym_encrypt() |
Used for symmetric key encryption. |
|
22 |
pgp_sym_decrypt() |
Decrypts a message encrypted using a PGP symmetric key. |
|
23 |
pgp_pub_encrypt() |
Used for public key encryption. |
|
24 |
pgp_pub_decrypt() |
Decrypts a message encrypted using a PGP public key. |
|
25 |
pgp_key_id() |
Extracts the key ID of the PGP public or private key. If an encrypted message is used as the input, the ID of the key used to encrypt the message will be returned. |
|
26 |
armor() |
Converts binary data into PGP ASCII-armor format by the CRC calculation and formatting of a Base64 string. |
|
27 |
dearmor() |
Performs the conversion opposite to the armor() function. |
|
28 |
pgp_armor_headers() |
Returns the armor header in data. |
|
29 |
encrypt |
Original encryption function, which does not support any advanced functions of PGP encryption. The IV is 0. |
|
30 |
decrypt |
Original decryption function, which does not support any advanced functions of PGP encryption. The IV is 0. |
|
31 |
encrypt_iv |
Original decryption function, which does not support any advanced functions of PGP encryption. The IV can be set by users. |
|
32 |
decrypt_iv |
Original decryption function, which does not support any advanced functions of PGP encryption. The IV can be set by users. |
|
33 |
gen_random_bytes |
Generates cryptographically strong random bytes. |
|
34 |
gen_random_uuid() |
Returns a random UUID of version 4. |
|
35 |
get_volatile_pg_class |
Obtains the pg_class metadata related to all volatile temporary tables in memory (metadata in volatile temporary tables is not stored in system catalogs). |
|
36 |
get_volatile_pg_attribute |
Obtains the pg_attribute metadata related to all volatile temporary tables in memory. |
|
37 |
gs_increase_except_num |
Increases the number of query exceptions. |
|
38 |
gs_update_blocklist_hash_info |
Updates the blocklist information in memory. |
|
39 |
gs_append_blocklist |
Adds blocklist statements. |
|
40 |
gs_remove_blocklist |
Removes statements from a blocklist. |
|
41 |
gs_wlm_rebuild_except_rule_hash |
Triggers the building of an exception rule kernel hash table. |
|
42 |
pg_stat_wal_write |
Queries the thread information on the current CN or DN, and the import volume and rate of WAL and data pages. |
|
43 |
pgxc_stat_wal_write |
Queries the thread information about the interaction between CNs and DNs, and the import volume and rate of WALs and data pages. |
|
44 |
get_col_file_info |
Obtains the number of empty CU files and the total number of CU files of a specified column-store table. |
|
45 |
get_all_col_file_info |
Obtains the number of empty CU files and the total number of CU files of all column-store tables. |
|
46 |
col_rebuild_file_relation |
Replaces the Relfilenode and reorganize the CU files of the specified column-store table. After the reorganization, the CU files become consecutive 1 GB files. |
|
Modified |
47 |
pg_query_audit/pgxc_query_audit |
Changed the thread_id field to the session id field to record the session where the statement is executed. |
48 |
login_audit_messages/login_audit_messages_pid |
Added the session id field to record the session where the statement is executed. |
System Views
Change Type |
No. |
View |
Change Description |
---|---|---|---|
Added |
1 |
gs_obs_latency |
Monitors OBS latency. |
2 |
pgxc_stat_wal |
Queries the traffic information about WAL logs and data pages of the current query. |
|
3 |
pgxc_lockwait_detail |
Displays detailed information about the lock wait chain on each node. |
|
4 |
pgxc_wait_detail |
Displays details about the SQL waiting chains of all nodes, including the wait nodes and queries. |
|
Modified |
5 |
gs_obs_read_traffic |
Data aggregation interval is changed to 10 minutes, and the logtime column is added to display time groups. |
6 |
gs_obs_write_traffic |
Data aggregation interval is changed to 10 minutes, and the logtime column is added to display time groups. |
GUC Parameters
Change Type |
No. |
Parameter |
Change Description |
---|---|---|---|
Added |
1 |
enable_wlm_internal_memory_limit |
Controls whether to enable the internal restriction of the WLM. For example, the estimated memory of a job cannot exceed 80%, 90%, or 40%. |
2 |
enable_strict_memory_expansion |
Controls whether job memory expansion is performed on DNs. |
|
3 |
allow_zero_estimate_memory |
Controls whether the estimated memory of a job can be set to 0 when there is no statistics for the job. |
|
4 |
max_process_memory_auto_adjust |
Controls whether to dynamically adjust max_process_memory during a primary/standby CM switchover. |
|
5 |
wlm_memory_feedback_adjust |
Specifies whether to enable the memory negative feedback function in dynamic load management. The value can be on, off, or on(50,40). |
|
6 |
autoanalyze_mode |
A system-level AUTOANALYZE control parameter. By default, the normal mode is the same as before. If the mode is set to light, dynamic sampling is enabled. |
|
7 |
enable_redactcol_computable |
This parameter specifies whether to enable the computable data redaction. By default, this function is disabled. |
|
8 |
windowagg_pushdown_enhancement |
Controls whether to push down the intersection of PARTITION BY and GROUP BY when the window function and GROUP BY appear at the same time. |
|
9 |
enable_from_collapse_hint |
Specifies whether the plans with hints take precedence in execution. By default, the parameter is enabled and statement-level hints are supported. |
|
10 |
enable_value_redistribute |
Specifies whether to use value partition streams to optimize WindowAgg. |
|
11 |
setop_optmode |
Specifies whether to perform deduplication on subqueries of the setop operation. The default value is disable, indicating that deduplication is not performed, which is the same as that in versions earlier than 8.2.0. The value force indicates that deduplication is forcibly performed. The value cost indicates that deduplication is performed based on the cost. (Note: Deduplication is performed only when the bottom layer of the setop branch is the stream operator.) |
|
12 |
security_enable_options |
Indicates that some operations are enabled in security mode. By default, this parameter is left blank. |
|
13 |
audit_object_name_format |
Specifies the displaying mode of objects in the object_name column in audit logs. The default value is single, indicating that a single object is displayed. |
|
14 |
enable_redactcol_equal_const |
Restricts the constant obtaining behaviors in the new version. By default, this function is disabled, and equivalent comparison between anonymized columns and constants is prohibited. |
|
15 |
enable_mixedagg |
Indicates whether to generate a mixed aggregate execution plan. This parameter is disabled by default. |
|
16 |
max_streams_per_query |
Controls whether to report an error in the optimizer phase for a plan with a large number of streams to prevent streams from occupying too many connections. The default value is 10000. |
|
17 |
agg_max_mem |
Controls the maximum estimated memory when the number of aggregation columns exceeds 5. This prevents CCN queuing caused by high estimated memory. |
|
18 |
max_volatile_memory |
Maximum number of memory contexts related to the volatile temporary table. The unit is KB. The value ranges from 1024 to INT_MAX. The default value is 1 GB. |
|
19 |
max_volatile_tables |
Maximum number of volatile temporary tables (including auxiliary tables such as TOAST and CUDESC) in a single session. The default value is 300. |
|
20 |
enable_hashfilter |
Determines whether to generate hash filters. |
|
21 |
volatile_shipping_version |
Controls the sequence pushdown enhancing in 8.2.0. The default value is 1. |
|
22 |
smp_thread_cost |
Control the generated query_dop value. The default value is 1000. |
|
23 |
enable_wal_decelerate |
Specifies whether to limit the flow control rate when data is imported with indexes. |
|
24 |
wal_decelerate_policy |
Specifies the behavior policy after rate limiting is triggered. |
|
25 |
wal_write_speed |
Indicates the maximum WAL write speed (byte/s) of each query on a single DN per second. |
|
26 |
wal_decelerate_trigger_threshold |
Specifies the WAL write rate limit triggered by each query on a single DN. |
|
27 |
enable_cstore_ring_buffer |
Controls whether to enable the column-store ring buffer. |
|
28 |
enable_tsdb_multi_temperature |
Specifies whether to enable the OBS cold and hot storage for time series tables. By default, the OBS cold and hot storage is disabled. |
|
29 |
enable_tsdb_multi_temperature |
Specifies whether to enable the OBS cold and hot storage for time series tables. By default, the OBS cold and hot storage is disabled. |
|
30 |
ddl_lock_timeout |
Specifies the lockwait time for DDL statements. If the lockwait times out, DDL statements are terminated. This parameter is valid only for level-8 locks. The default value is 0, indicating that this parameter does not take effect. |
|
31 |
build_backup_param |
Specifies the minimum specifications for disk backup during incremental build. |
|
Modified |
32 |
comm_tcp_mode |
The parameter type is changed from POSTMASTER to SIGHUP. |
33 |
max_process_memory |
Indicates the maximum memory usage of a process. The type of the parameter is changed from POSTMASTER to SIGHUP. The minimum threshold is 2 GB. You are not advised to set it to the minimum threshold. |
|
34 |
rewrite_rule |
The enumerated value eager_magicset is added to control the magic set enhancement. |
|
35 |
behavior_compat_options |
The normal_session_id parameter is added to behavior_compat_options to determine whether to concatenate the session ID with node_name. By default, normal_session_id is disabled, and the session ID is concatenated with node_name. |
|
36 |
behavior_compat_options |
Added behavior_compat_options to merge_into_with_trigger. After the parameter is enabled, MERGE INTO can be executed on tables with triggers. This parameter is disabled by default. |
|
37 |
behavior_compat_options |
Added the option disable_jsonb_exact_match to control the operator matching. By default, this option is disabled. When this option is disabled, only exact match of JSONB types is supported. If exact match fails, the non-JSONB types are matched. When this option is enabled, and the operator matching does not distinguish types. |
|
38 |
hashjoin_spill_strategy |
Policies 5 and 6 are added. The behavior is the same as that of policies 0 and 1. The original policies 0 and 1 are modified. Originally, if the memory of the internal table is large and the memory of the external table is small, exchange the internal and external tables. After the modification, if the memory of the internal table is large and the memory of the external table is small, continue to divide the internal table until the internal table cannot be divided. Then try to exchange internal and external tables |
|
39 |
sql_use_spacelimit |
Modified the initial value of sql_use_spacelimit to 10% (upper limit) of the disk space where the current instance resides. If the value is less than 10 GB (lower limit), set the value to 10 GB. |
|
40 |
temp_file_limit |
Modified the initial value of temp_file_limit to 10% (upper limit) of the disk space where the current instance resides. If the value is less than 10 GB (lower limit), set the value to 10 GB. |
|
Deleted |
41 |
enable_grant_public |
Indicates that the grant to public syntax is not supported in security mode. |
42 |
enable_grant_option |
Indicates that the grant with grant option syntax is not supported in security mode. |
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot