Help Center/ Data Warehouse Service/ Product Bulletin/ Product Notice/ Version 8.2.1/ New Features and Resolved Issues in 8.2.1.x
Updated on 2026-07-07 GMT+08:00

New Features and Resolved Issues in 8.2.1.x

8.2.1.260 Patch (June 2026)

Table 1 Resolved Issues in 8.2.1.260

Symptom

Cause

Version

After the cluster patch 8.2.1 is installed, an error similar to the following is reported when the convert_from() function is executed:

ERROR: invalid byte sequence for encoding "GB18030_2022": 0x96 0x37

When the encoding value of a character falls within the range of 0x90308130 to 0xE3329A35, the system automatically converts the GB18030-2022 encoding to UTF-8. If the displacement of the byte pointer (that is, the number of bytes occupied by the character) is not correctly calculated when the convert_from() function is called, the rare character may be incorrectly identified.

8.2.1.x

INSERT and UPDATE in MERGE INTO support comments.

In the 8.2.1 cluster version, INSERT and UPDATE in MERGE INTO do not support comments. In the new patches, they support comments.

8.2.1.258

The pg_namespace system catalog contains invalid pg_toast_temp_xxx records.

In some processes, invalid pg_toast_temp_xxx records are not cleared in a timely manner. As a result, they remain in the pg_namespace system catalog. In normal service scenarios, the pg_toast_temp_xxx and pg_temp_xxx records must coexist. If the pg_toast_temp_xxx records are residual but the pg_temp_xxx records do not exist, gs_clean cannot clear the invalid the pg_toast_temp_xxx records. These records do not affect services.

8.2.1.x

The number of records in the pg_relfilenode_size system catalog is greater than the actual number of tables.

When a table is deleted, the corresponding records in the pg_relfilenode_size system catalog are not deleted. As a result, the number of records in pg_relfilenode_size increases, and the I/O usage for scanning is high.

8.2.1.x

When GDS exports data, the newly generated data file cannot be obtained occasionally in the CN retry scenario.

In abnormal scenarios, after an export task reports an error, the CN retry mechanism is triggered to re-deliver the export task. GDS asynchronously clears residual files that report errors. When the system re-submits an export task, GDS is still clearing residual files. As a result, new files are deleted by mistake.

8.2.1.220

During the cluster scale-out, some database object names are in uppercase. As a result, the scale-out fails.

During the cluster scale-out, the uppercase database object names are not correctly escaped. As a result, the system incorrectly identifies them as lowercase names and reports an error indicating that the object does not exist. Consequently, the scale-out fails.

8.2.0.107

A core dump occurs on DNs due to user-defined C functions.

If memory leakage occurs in user-defined C functions, the length of data sent by the functions to DNs may be different from that of the received data.

8.2.1.251

8.2.1.259

Table 2 New features/Resolved issues in 8.2.1.259

Type

Feature or Resolved Issue

Cause

Version

Handling Method

New features

None

-

-

-

Resolved issues

After the patch is installed, the cm_server instance is in the down state.

When multiple threads of cm_server interact with each other, there is a possibility that packets are out of order, causing a core dump. The more cm_agent instances interact with cm_server, the higher the probability that packets are out of order in the main thread of cm_server.

8.2.1.x

Install the patch 8.2.1.259.

8.2.1.258

Table 3 New features/Resolved issues in 8.2.1.258

Type

Feature or Resolved Issue

Cause

Version

Handling Method

New features

pg_get_raw_viewdef records SQL statements about raw view definitions.

When using a database, you need to obtain the raw SQL statements for creating views. When you query the view definition, the raw and easy-to-understand creation statement can be directly returned.

pg_get_raw_viewdef(viewname text) is used to obtain the complete raw view creation statements, including comments in the /**/ format.

-

-

An X8000 agent can process backup and restoration tasks of multiple clusters at the same time.

When an X8000 agent delivers backup and restoration tasks, different storage devices are dynamically mounted. When DWS writes backup sets to the X8000 agent through the XBSA protocol, task IDs are not used. The X8000 agent cannot determine which mounted storage device is to be accessed when processing XBSA access requests.

-

-

Resolved issues

The management plane version is compatible with Java 17. udstool.jar is compiled using Java 17. The user-defined function (UDF) does not adapt to Java 17.

Currently, gs_extend_library calls the udstools.py file in the kernel. The file call udstool.jar on the management plane to deploy the JAR package. This function is affected by the Java version on the management plane and therefore is decoupled to the kernel.

8.2.1.x/9.1.0.x

Install the patch 8.2.1.258.

The CVE-2024-10976 vulnerability in DWS needs to be fixed.

Row-level security policy tables are not completely tracked. As a result, reused queries can view or change unexpected rows. This means that an incorrect policy may be applied when a specific role is used. A query is initially executed under one role, but now can be executed under other roles. This may allow users to perform prohibited read and modification operations.

8.1.3.x/8.2.1.x

An alarm is generated when the NIC of a cluster is abnormal. Subsequent cluster services are blocked, and the retry still fails. The fault is rectified after the NIC is restarted.

The NIC driver of a service is abnormal. As a result, a physical NIC of bond0 is occasionally down, the network is abnormal, and services are blocked. The fault is rectified after the network service is restarted.

8.2.1.x

An alarm is generated when the NIC of a cluster is abnormal. Cluster services are blocked, and the retry fails.

The system may use the configuration information of an earlier version when establishing a connection. The waiting mechanism during the connection cannot be woken up, blocking the connection.

8.2.1.x

The per-database shared memory is not released in a timely manner.

When a volatile temporary table is created in a column-store mode and an index is created on its auxiliary table, the pgstat information of the index cannot be cleared after the table is deleted.

8.2.1.x

The result set is incorrect when the HAVING clause uses the alias defined by SELECT.

In the condition of the HAVING clause, when the alias of the aggregate function is the same as a column name in the table, the system usually uses the alias of the aggregate function. However, DWS uses the column name by default, which is different from the behavior of Oracle. In Oracle-compatible mode, the result set may not meet the expectation.

8.2.1.x

In the rough check scenario, the query result set is not as expected due to multiple duplicate IN conditions.

When multiple duplicate IN conditions are pushed down to DNs, the DN number is incorrectly calculated during condition reduction. As a result, the conditions are incorrectly selected and the result set is not as expected.

8.2.1.255

During the upgrade, the system function trunc() needs to be modified. In the user production environment, some user tables depend on this function. The upgrade fails because the objects that depend on the system function are not decoupled.

When there are tables that depend on the trunc() function, CASCADE cannot be performed to delete these tables during the upgrade. As a result, the upgrade fails.

8.2.1.x

The error "inserted partition key does not map to any table partition" is occasionally reported.

The partition to which the data belongs cannot be found when the data is inserted.

8.2.1.x

The error "malformed array literal" is reported during ANALYZE due to special characters in the table data.

In a database using the GBK character set, if an array contains a backslash (\), the system does not correctly calculate the length of the backslash. As a result, the character length is incorrectly calculated.

8.2.1.x

Fine-grained restoration fails because the data length of a record in a rch file is inconsistent with the actual compressed data length.

If there are DROP DATABASE operations in a cluster-level backup, the HEAD+DATABASE path will be recorded in a rch file. When the cluster-level backup is used for fine-grained restoration, the system skips subsequent operations if the head type is DROP DATABASE. As a result, the DATABASE path is not read, and subsequent rch files are misplaced.

8.2.1.x

When a cluster-level incremental backup with fine-grained parameters is used for restoring tables, a few CU pages are not backed up. As a result, the incremental restoration fails.

During incremental backup, the system reads the CBM to query the incremental information of each relfilenode and backs up the corresponding incremental data based on the information. Currently, the system records the fine_file_list information only when the incremental data of a relfilenode starts to be backed up. If a rch file is changed during the backup, fine_file_list is also changed. However, the new fine_file_list does not record the relfilenode information. As a result, some incremental data may be lost during restoration.

8.2.1.x

8.2.1.256

Table 4 New features/Resolved issues in 8.2.1.256

Type

Feature or Resolved Issue

Cause

Version

Handling Method

New features

None

-

-

-

Resolved issues

View rebuilding fails due to an error during the reverse parsing

The system misinterprets the nvl function as the coalesce function during view reverse parsing. This error causes the loss of type conversion and prevents rebuilding the view.

8.2.1

Install the patch 8.2.1.256.

Redistributing tables across several logical clusters alters the execution plan during scale-out.

By default, expected_computing_nodegroup is set to bind. For users logged in to a logical cluster, the system adjusts the compute node group to match the user logical cluster's node group. If the table has been distributed to a new node group during scale-out, the execution plan may change.

8.1.3

Different logical clusters are specified when tables are created in anonymous blocks. As a result, metadata is incorrect.

During table creation, some DDL operations may be abnormal occasionally due to memory context switching errors.

8.2.1

The system does not free up the user-level memory specified by used_spill_space.

When a transaction is rolled back and the user changes, the system switches the transaction to the previous user and counts resources using the previous user's OID. This can lead to incorrect counting results.

8.1.3

After auto vacuum is disabled, the auto vacuum thread is blocked in a database.

After auto vacuum is disabled, only system catalogs are cleared. Many preset tables and service tables are not system catalogs and cannot be cleared. As a result, frozen XID cannot be advanced, and only one database can be cleared cyclically during force freeze, affecting performance.

8.1.3

The VACUUM FULL operation takes a long time.

Running VACUUM FULL scans the PG_CLASS table and updates the datfrozenxid64 field in PG_DATABASE. Large PG_CLASS tables can cause performance issues.

9.1.1

Changed parameter settings for resource management do not take effect.

If the allocated CPUs are discrete, the string that records the CPU information is long. Adding more CPUs causes the string to exceed a 64-character limit, resulting in becoming empty. Once the string becomes empty, only one CPU is detected. This causes the setup to fail silently without an error message.

8.2.1

The stmt_type field shows incorrect data in the sub-statement of a historical top SQL stored procedure.

When the sub-statement of a stored procedure generates a query plan, the SQL function is executed first. The query plan and type record the SQL function, and an error occurs.

8.2.1

The UDF process does not respond.

The UDF process runs in fork mode. Child processes retain locks that were set by the parent process. This blocks log writing operations.

8.2.1

When debugging is enabled for a session, every ANALYZE operation will log a large number of details.

When system collects samples during ANALYZE operations, a large number of zero CUs or constant CUs will result in a large amount of log data.

8.2.1

The error message "relation xxx already exists" is displayed when a temporary table is created in a stored procedure.

CREATE TABLE LIKE splits into separate commands for creating a table and inserting data when used in stored procedures or PBE. In the semantic analysis phase, a table is created and an insertion plan is generated. During execution, the system checks the validity of the plan cache. If the plan cache is invalid, the system attempts to execute CREATE TABLE LIKE again. However, if the target table already exists, an error occurs.

8.2.1

Foreign tables in text format can use NULL to fill in non-existent fields.

Any missing columns will be filled with NULL values for a TEXT or CSV foreign table because of the fill_missing_fields setting.

9.1.1

SQL performance sometimes drops under heavy hybrid loads on large clusters.

During idle periods, the libcomm send proxy thread checks all connections to DNs. Each connection check lasts 1 ms. In large clusters with over 100 connections, this process can exceed 100 ms, potentially delaying the next packet's transmission.

8.2.1

The CN node experiences high CPU usage during concurrent import of row-store tables in copy mode.

After the data page channel is enabled, all dirty pages in the shared buffer must be written to the disk before commit or rollback Xlogs are generated. This ensures that data pages can be restored when DNs restart unexpectedly. Although no batch insert operations are performed on CNs, the system still traverses shared buffers, consuming CPU resources.

8.1.3

Backup and fine-grained DR are hardened.

Fine-grained DR and backup are not well adapted to interaction with peripheral systems.

8.2.1

8.2.1.255

Table 5 New features/Resolved issues in version 8.2.1.255

Type

Feature or Resolved Issue

Cause

Version

Handling Method

New features

None

-

-

-

Resolved issues

LLVM is disabled by default.

The mmap or munmap generated during LLVM-based code compilation will lock mmap for write, blocking the process-level page fault read lock.

8.2.1

Install the patch 8.2.1.255.

GDS generates a large number of garbled characters during data export.

When GDS splits fields for a row of text, the parsing process processes each character and considers 0x5C as an escape character (backslash). When an empty string ('') appears at the end of a field, the field is incorrectly discarded. In the gb18030_2022 encoding, 0x815C is a complete double-byte character. However, the priority of escape characters is higher than that of common characters. The character is incorrectly split during parsing, and only the single-byte part 0x81 is retained, while the other byte is lost, damaging the character integrity.

8.1.3

When foreign tables are used to import data, DN nodes frequently fail.

The sock of the CON generated by gc_fdw is directly assigned a value, and the DUP operation is not used. A connection is closed once when data is received, and then closed again when the transaction is interrupted. As a result, the double-close issue occurs.

8.1.3

The definition of the information_schema.columns view is optimized.

The definition of the information_schema.columns view is optimized to ensure that the view query uses index scans as much as possible.

8.1.3

The error "cannot alter type of a column used in a redaction policy" is displayed.

When the definition of a table with a redaction policy is modified, the system forcibly verifies the type consistency of redaction columns. As a result, the table cannot be modified due to policy dependency.

8.1.3

A user can log in to other CN nodes even if they are locked out of one.

After a user is locked on a CN, the user information is stored in the pg_user_status system catalog, but it is not synchronized to other CNs.

8.1.3

The cluster status cannot be queried by running the cm_ctl command.

After the connection between cm_ctl and cm_server is established, the thread processed by cm_server times out due to too many nodes.

8.2.1

Hive table DR is supported.

After a Hive table is backed up, restored, or protected, snapshots are generated in the table path. The table path cannot be deleted.

8.2.1

An error is reported when case-insensitive sorting is performed.

Case-insensitive sorting fails because the system's GB18030 conversion does not include rare characters from the newer GB18030-2022 standard. The sorting algorithm's code range requires an update.

8.2.1

If you remove the case_insensitive attribute from the table before rebuilding it, recreating dependent views with CREATE OR REPLACE VIEW will cause problems. The view keeps its case sensitivity, leading to inaccurate outcomes.

When view decoupling is enabled, the system does not check whether the attcollation column is the same during CREATE OR REPLACE VIEW. As a result, the collate case_insensitive information of related columns in pg_attribute of views is not cleared, and the query result is abnormal.

8.2.1

The issue of plan management is resolved.

-

8.2.1

8.2.1.251

Table 6 New features/Resolved issues in version 8.2.1.251

Type

Feature or Resolved Issue

Cause

Version

Handling Method

New features

None

-

-

-

Resolved issues

The cluster scale-out fails because invalid views cannot be deleted.

The invalid views in a cluster cannot be deleted. When the views are deleted during scale-out, the scale-out fails because the invalid views fail to be deleted.

8.2.1.225

Install the patch 8.2.1.251

The disk I/O usage of the pgxc_lockwait_detail view is high, affecting system performance.

In concurrent scenarios, the pgxc_lockwait_detail view aggregates all lock data from every node to the CN for analysis. This process is resource-intensive, especially with large datasets, due to heavy disk I/O.

8.1.3

An error is reported when a long field is imported to the database in JSON format.

When querying a JSON foreign table with over 1,024 objects, a memory initialization error causes abnormal JSON parsing and query failure.

8.2.1

When VACUUM and DELETE operations are performed concurrently in a column-store table, the error "CU Delete bitmap is missing" is displayed.

A system exception can occur if a snapshot contains an uncommitted transaction ID (XID) that is older than its recorded minimum active transaction (XMIN), leading to a logic error in data visibility determination.

9.1.0

An error is reported after HashJoin is changed to Nestloop.

The hash join error occurs because partitions pass an inconsistent number of columns to the subplan. When a hash join is performed in a non-nested loop manner, the partition pass three columns to the subplan. When a hash join is performed in a nested loop manner, the partition passes the four columns to the subplan. The later partition introduces a new condition, requiring an extra column (e.g., a hash value) that earlier partitions do not provide.

8.2.1

The try_cast function causes many DN instance exceptions.

When try_cast encounters incompatible data types, the data is left in an error-handling memory context. This causes premature memory reclamation and DN instance exceptions.

8.2.1

The statement timeout log is incorrect. The start time and alarm time are incorrect.

According to section 7.16 paragraph 3 of the C standard, va_list can be passed to another function as the ap parameter. However, once va_arg is called in a function, the ap value in the function is uncertain. The C standard also allows the va_list pointer to be passed to another function as a parameter. When va_arg is called, the original list is accessed through the pointer.

8.2.1

The number of processes on the node increases sharply. The DN threads on the node cannot exit. Services are executed slowly. The primary/standby switchover is not performed.

The OS is abnormal and the number of processes increases sharply. Services are executed slowly. Such exceptions cannot be identified by the existing mechanism.

8.1.3

In the same transaction, an INSERT...SELECT is performed on table A. A subsequent ALTER operation on the same table then fails, indicating that the table does not exist.

Debug logs are added to record the error similar to "relation not exist".

8.2.1

The database connection is abnormal and the memory usage of space management is high. As a result, there is a low probability that the service reports an error.

When processing messages of space management, the system records database connection failures. If a database fails to be connected for 20 consecutive times, the system does not attempt to connect to the database for subsequent processing. As a result, the messages for space management may be stacked.

8.2.1

The memory estimated by ANALYZE deviates significantly from the actual memory, so CCN is queued abnormally.

Before ANALYZE is executed, the memory is estimated based on the average width (avgwidth) of columns. If the column is wide, the estimated memory is large. In the actual ANALYZE process:

  • When there is a toast column in row storage and the width exceeds 1024 bytes, ANALYZE calculates only the average width and does not decompress data.
  • When the width of a column exceeds 1024 bytes, no data is read.

Once the width of a column exceeds 1024 bytes, no data is read in both row-store and column-store tables. You need to adjust the memory estimation algorithm.

8.1.3

The dynamic configuration file is empty, and the CM Server cannot be started.

  1. After gs_replace is used to restore a node, only the CM Server, instead of the cluster, will be restarted. The cluster_dynamic_config file is deleted automatically.
  2. CM Server exits abnormally (terminated twice) after initialization. As a result, the dynamic configuration file becomes empty.

8.1.3

During the JOIN operations of column-store and row-store tables, full and incremental distribution of large tables time out.

The query optimizer performs a series of checks when processing column-store and row-store join operations. The operation fails because the system detects that the tid type is not supported.

8.2.1

After the redistribution is complete, the error "Unsupported xxx command during online expansion" is displayed when services are executed in some tables.

During redistribution, the system incorrectly locks a table by using the original table's name to construct the lock statement. This causes subsequent processes to fail in the following scenario:

After redistribution is started, table A is renamed to table B and a new table named table A is created (the new table is distributed in the new NodeGroup). In this case, table B is not redistributed and table A is considered as the original table for redistribution. An error is reported when the ADD NODE command is executed to redistribute table A, indicating that the table already exists on the new node.

8.2.1

A deadlock occasionally occurs during redistribution of a partitioned table with a masking policy. As a result, the redistribution fails.

In the redistribution phase, data in the base table needs to be inserted into the temporary table (data_redis) of the schema. A deadlock can occur when data from a partitioned base table (with a masking policy) is inserted concurrently into a single temporary table. This happens because the temporary table inherits the base table's masking policy, leading to a conflict that fails the redistribution.

8.1.3

A memory leak occurs when clients like DBeaver execute SQL and save query job information to the TopSQL history view.

  1. After a job completes and its DN resource data is collected, the corresponding Top SQL memory is not released. This makes the top SQL memory full.
  2. The partitioned table name of the Top SQL uses the shared memory context, which is not released in abnormal scenarios.

8.1.3

A unique_sql_id is mapped to different service SQL statements, affecting service analysis.

In PBE scenarios, re-executing a SQL statement does not reset the value of unique_sql_id. This leads to an empty SQL string being hashed, generating a constant ID (2817148525). Consequently, all subsequent SQL statements incorrectly share this same ID, corrupting analysis.

8.2.1

During migration to a new cluster, a parameter synchronization failure causes widespread parameter inconsistencies and a startup failure. A residual file of the old cluster is transferred to the new cluster during migration, corrupting the new cluster's configuration file and leading to erroneous parameter modifications.

Cluster A has been restored. postgresql.conf in the backup set is restored to postgresql.conf.backup, which has not yet been deleted. During synchronization from primary cluster A to standby cluster B, both the postgresql.conf and postgresql.conf.backup files of cluster A are backed up. They are restored to postgresql.conf.backup, but only the postgresql.conf.backup of the residual postgresql.conf.backup is retained. In this case, the GUC in postgresql.conf.backup of cluster A exists in cluster B.

8.1.3

The error "The inserted partition key is not mapped to the specified '%s' partition" is reported when the UPDATE operation is executed.

A bug in the partition statistics calculation causes an incorrect partition lookup during UPDATE operations, resulting in a partition matching error.

8.2.1

The error "value too long for type nvarchar2(20)" is reported during distribution key query.

The system throws an error if a query on a distribution key of type NVARCHAR2 uses a predicate string that exceeds the column's defined maximum length.

8.1.3

8.2.1.236

Table 7 New features/Resolved issues in version 8.2.1.236

Type

Feature or Resolved Issue

Cause

Version

Handling Method

New features

DWS can find dependent dynamic libraries without using the LD_LIBRARY_PATH environment variable during DWS cluster installation and upgrade.

-

-

-

The date type is supported when a foreign table is created using DWS.

-

-

-

In TD compatibility mode, when importing data via a GDS foreign table, multiple whitespace characters in a source column are incorrectly parsed as 0 and inserted into the target column of the INTEGER type. The value needs to be parsed as NULL.

-

-

-

Resolved issues

If the IN clause exists in a recursive query referenced by the parent query for multiple times, an exception occurs.

If a recursive query containing the INLIST parameter is referenced for multiple times, the system copies multiple execution plan copies. Each copy's data points are stored separately. This makes address-based checks fail, causing execution process errors and cluster failures.

8.2.1

Install the patch 8.2.1.236.

When JDBC executes a statement using preparedStatement and the query plan is invalid (for example, DDL operations are performed in the involved table), unique_sql_id of the same statement is not unique.

The parse-bind- execute (PBE) protocol is used to execute SQL statements through JDBC. During phase B, if a query plan is invalid, a new plan is generated. During this regeneration, the system receives an input length of 0, and generates a SQL ID (unique_sql_id is 2817148525). The system executes statement (phase E) to save the incorrect ID to the top SQL information.

8.2.1

After VACUUM FULL is executed, the value queried by the get_col_file_vacuum_info function is not updated.

This function retrieves table information from cache. If cached data exists, it is not updated. As a result, the value of rewritten_file_num does not change.

8.2.1

The show-progress command does not contain the estimated RTO, which makes monitoring difficult.

The show-progress command for cluster DR does not contain the estimated RTO.

8.2.1

When high-concurrency and heavy-traffic queries are continuously executed, there is a low probability that a memory application error is reported.

During concurrent operations, the communication library's temporary memory usage can exceed the value of comm_usable_memory. This excess memory is slow to release and has low reuse, leading to memory exhaustion and "out of memory" errors.

8.2.1

Data import fails when an ORC foreign table contains a field that is longer than the maximum length allowed by the corresponding column in the target database table.

The ORC foreign table processes the VARCHAR type as text and does not verify the length. When data is imported to the target table, an error is reported, indicating that the length verification fails.

8.1.1.100

After data is written from the foreign table for interconnection to the internal table using INSERT OVERWRITE, the internal table query is abnormal.

During INSERT OVERWRITE, if the source table is a foreign table for interconnection, the mapping between the temporary table and the target table is lost.

8.1.3

The cluster instance is restarted due to unknown reasons.

There is an extremely low probability that the NTP monitoring script stops the GaussDB process by mistake.

8.2.1

A query on a parquet foreign table will fail if a string-based filter exceeds 1024 bytes in length.

During a query on a parquet foreign table, a memory copy fails if a string filter exceeds the default buffer size of 1024 bytes. The query then fails.

8.3.0

The performance is poor when a user-defined PL/pgSQL function is called in a query statement.

Each time the PL/pgSQL function is executed, the ResourceOwner clearing operation is triggered. This causes high costs and poor query performance.

8.2.1.225

If one CN in a JDBC URL's IP list is faulty, a connection attempt may fail.

In CN load balancing of JDBC, the URL information of all connections is cached. If a CN is faulty and its cache information is not cleared, a connection error is reported when the CN is reused.

8.2.1

When a distributed DML statement is executed on the Arm platform, there is a low probability that the statement hangs.

The lock-free queue under the Arm platform has a flag bit for the stream operator's distributed execution plan. When updating memory sequence number of the atomic operation, the flag bit is out of order. As a result, the execution hangs.

8.3.0

8.2.1.230

Table 8 New features/Resolved issues in version 8.2.1.230

Type

Feature or Resolved Issue

Cause

Version

Handling Method

New features

Fine-grained backup and restoration support online DDL operations, allowing tables to be modified while performing backups.

-

-

-

Fine-grained table-level restoration allows tables to be restored to a heterogeneous cluster, regardless of any topology consistency between the target and restored clusters.

-

-

-

Fine-grained backup and restoration support cross-version restoration.

-

-

-

Cluster-level and schema-level physical fine-grained backup support the backup of permissions and comments.

-

-

-

During the redistribution phase of online scale-out, the priority can be adjusted dynamically.

-

-

-

Resolved issues

Catchup conflicts with the DDL service lock and can last a long time.

If DDL operations are performed in a stored procedure, the catchup operation might not end before the transaction is submitted, resulting in a lock timeout error.

8.0.x

Upgrade to 8.2.1.230.

The WITH RECURSIVE statement runs indefinitely.

In the Arm environment, if thread information synchronization is disrupted, variables may not be updated at the same time.

8.1.3.322

The memory usage of gs_wlm_readjust_relfilenode_size_table is high.

The pg_relfilenode_size table is completely loaded to the memory, occupying too much memory.

8.1.3.323

As the cluster runs for an extended period, the memory usage of TopMemoryContext rises.

After the stream thread returns to the thread pool, there is a delay in releasing the memory, resulting in a gradual increase in the TopMemoryContext memory usage.

8.2.1.22

The SQL statement execution stops unexpectedly, and the error message " canceling statement due to coordinator request" is displayed.

An error occurs when executing a statement with the stream operator. The cancel message is sent to the substream thread, which has already returned to the stream thread pool. The next query reuses the stream thread. Due to the lack of strong consistency verification on the query ID, the residual signal from the previous statement is responded to, causing the statement to terminate abnormally.

8.1.3.110

During the schema space query, the value of usedspace exceeds that of permspace.

When determining the maximum limit of the schema space, the system compares the used space with the limit. Consequently, the actual usage surpasses the limit.

Versions earlier than 8.2.1.230

The service fails to be executed when the max_files_per_node parameter is set to -1.

During SQL execution, when a stream thread is created, the system reads the max_files_per_node parameter, which defaults to 50,000. An error message indicates that the number of handles exceeds the limit.

So even if guc is set to -1, it does not take effect.

8.1.3.321

The error message "Stream plan check failed." is displayed during SQL statement execution. Execution datanodes list of stream node mismatch in parent node.

In the process of generating a plan, any changes made to a plan node will affect all nodes, as the lower-layer plan node relies on the upper-layer plan node.

Versions earlier than 8.2.1.230

Service statements cannot be terminated when xc_maintenance_mode is disabled during redistribution after scale-out.

During the scale-out redistribution phase, functions like pg_cancel_query and pg_cancel_backend can only be used when xc_maintenance_mode is enabled, meaning user service statements cannot be terminated during redistribution.

Versions earlier than 8.2.1.230

8.2.1.225

Table 9 New features/Resolved issues in version 8.2.1.225

Type

Feature or Resolved Issue

Cause

Version

Handling Method

New features

None

-

-

-

Resolved issues

Replacement of GDS invalid characters fails.

When invalid GDS characters are replaced with special characters (�), an exception occurs. This is because the replacement changes the string length, but the original length is still used in subsequent processing. As a result, some characters are truncated and cannot be replaced correctly.

Versions earlier than 8.2.1.225

Upgrade the version to 8.2.1.225.

During concurrent pressure tests, gather performance occasionally deteriorates.

If a statement includes the stream operator, multiple stream threads are generated on DNs. The topConsumer thread, which integrates substream thread data and sends it to the CN, can only clear the stream thread group after all substream threads exit.

Versions earlier than 8.2.1.225

8.2.1.223

Table 10 New features/Resolved issues in version 8.2.1.223

Type

Feature or Resolved Issue

Cause

Version

Handling Method

New features

None

-

-

-

Resolved issues

Cluster exception detection triggers a switchover.

Before signal reconstruction, the unreliable SIGUSR2 was used for IPC. After reconstruction, reliable signals 34 and 35 are used. However, sending too many signals increases the likelihood of timer creation failures.

8.2.1.220

Upgrade to 8.2.1.223.

A core dump (GsCgroupIsClass) occurs when pgxc_cgroup_reload_conf messages are sent concurrently.

This happens because of unlocked pointer access. When the reload function modifies the pointer, it results in a wild pointer access and a core dump.

8.2.1.220

The table size reported by the gs_table_distribution function differs significantly from the actual size.

This happens when data in the pg_refilenode_size system catalog is read in batches and calculated, causing repeated accumulation of the current batch's table size.

8.2.1.220

Executing an SQL statement may result in the error "Could not open file 'pg_clog/000000000075'".

After VACUUM FULL on a column-store table, clogs may be prematurely reclaimed, making them inaccessible during ANALYZE after a primary/standby switchover.

8.2.1.119

The issue of freememory showing a large negative value due to uninitialized temporary variables has been resolved.

Declaring a temporary variable without assigning a value led to unexpected parameter values and excessively negative memory usage, causing test case failures when the network adapter was faulty.

8.2.1.220

After configuring VACUUM FULL for intelligent O&M, the actual execution time can exceed the configured range.

When the scheduler kills the VACUUM FULL task, a new task is inserted, preventing complete execution of the kill task.

8.1.3.x

8.2.1.220

Table 11 New features/Resolved issues in version 8.2.1.220

Type

Feature or Resolved Issue

Cause

Version

Handling Method

New features

  • MERGE INTO allows for specified partitions.
  • Plan management is supported.
  • GDS now supports the fault tolerance parameter compatible_illegal_chars for exporting foreign tables.
  • The window function last_value supports the ignore nulls feature.

-

-

-

Resolved issues

The SQL statement's execution is unstable and slow, with pgxc_thread_wait_status showing HashJoin - nestloop for extended periods.

Each partition group has about 10,000 rows, causing prolonged nestloop execution due to data variations.

8.1.3.300

Upgrade to 8.2.1.220.

The database's large number of objects leads to slow performance and high memory usage during queries.

This is mainly due to numerous tables with the internal_mask option in column storage mode, causing inefficient permission verification.

Versions earlier than 8.2.1.119

Excessive expressions during LLVM compilation result in high CPU usage.

Enabling LLVM and having a large number of expressions can result in prolonged execution times. Disabling LLVM reduces execution time from several hours to just over 10 minutes when expressions exceed 1,000.

8.1.3.320

The cursor fetches 2,000 records each time, with memory usage exceeding estimates by 24 MB per fetch. As a result, when the total number of data records reaches 20,000,000, the query execution fails.

In PBE scenarios, the previously generated plan is reused, and the estimated memory increases by a fixed value each time. This can lead to memory overestimation and CCN queuing.

8.1.3.323

Memory leakage during JSON-type queries causes high memory usage.

This happens when there is unreleased memory in the jsonb out function.

8.1.3.x

Executing SELECT * FROM WITH clause in customer service SQL statements causes a CN core dump.

ProjectionPushdown updates the rte but fails to update the var based on the new rte, leading to a core dump during quals processing.

8.1.3.323

Overflow occurs when the number of WHERE conditions in a DELETE statement exceeds the upper limit.

The number of WHERE conditions in the DELETE statement exceeds the int16 limit of 32,767. This causes an overflow and results in a core dump.

8.1.2.x

During scale-out, the redistribution process restarts, causing a suspension of over an hour when generating a table list.

To generate a table list, the system catalog is queried on the CN and INSERT INTO needs to be executed for each record inserted into the distributed table pgxc_redistb. However, if there are numerous tables, using the VALUES statement can be time-consuming.

8.1.3.110

CN memory leakage occurs during transaction rollback caused by primary key conflicts.

  1. In JDBC, the PBE protocol inserts data through CN lightweight, but primary key conflicts cause errors.
  2. A transaction with multiple cross-CN lightweight queries or unnamed statements sent by JDBC saves the global LightProxy object to the portal before execution. If not released after the transaction, it causes memory accumulation.
  3. Numerous CachedPlanQuery memory contexts appear in the pv_session_memory_detail view of the CN.

8.2.0.103

Actual memory usage exceeds estimates in COUNT DISTINCT and UNION ALL scenarios.

In multi-branch serial execution, only the memory when the lower-layer operator returns data is considered, not during its actual execution, leading to underestimated memory usage.

8.1.3.321

After a cluster restart, only the first session connection can use SQL debugging, with subsequent connections failing. Breakpoints do not work when debugging SQL statements in DataStudio.

The scheduling entry variable is released after database disconnection, resulting in a null pointer and failed debugging logic.

  • 8.1.1.x
  • 8.1.3.x

The WITH RECURSIVE statement runs indefinitely in Arm environments.

Abnormal thread information synchronization in the Arm environment can result in variables not being updated synchronously.

8.1.3.323

Executing INSERT OVERWRITE for a specific partition overwrites the entire table.

In PBE logic, INSERT OVERWRITE does not copy partition information, causing FILENODE exchange on the entire table.

Versions earlier than 8.2.1.220

The subquery result set containing WindowAgg is abnormal.

The subquery result set containing WindowAgg is abnormal. WindowAgg is not considered when generating a bloom filter. If the join association column is not a WindowAgg grouping column, grouping data is reduced, affecting the window function's grouping result.

8.1.3.x

Memory insufficiency errors occur and the view shows that the SQL statements with high memory usage are VACUUM FULL operations.

Performing VACUUM FULL on every partition of a partitioned table prevents memory from being released, causing memory usage to keep growing until an error is triggered.

8.1.3.x

Restarting the logical cluster times out.

This happens because of the default use of 10 IP addresses by the CM, requiring dynamic adaptation.

8.2.1.200

After a version update, numerous "Wait poll time out" errors occur.

The LibcommCheckWaitPoll function behaves unexpectedly when passed -1.

8.2.1.200

8.2.1.119

Table 12 New features/Resolved issues in version 8.2.1.119

Type

Feature or Resolved Issue

Cause

Version

Handling Method

New features

The last_value window function now supports ignore nulls and is compatible with Redshift.

-

-

-

Resolved issues

Error when using try_cast function on column-store tables.

The try_cast function is incompatible with the vectorized executor, causing errors during execution.

8.2.1.100 and earlier versions

Upgrade the version to 8.2.1.119.

Slow insert operations post-cluster restart.

Indexes are required to scan full data during insert operations after a restart, impacting performance.

8.2.1.100 and earlier versions

CCN count abnormalities not triggering calibration, leading to queuing issues.

A bug in code processing prevents the calibration mechanism from activating when CCN counts are abnormal.

8.2.1.100 and earlier versions

Primary key conflict error and CN memory leak when inserting data via JDBC using PBE protocol.

The CN lightweight process does not release the lightweight object post-transaction, leading to memory accumulation.

8.2.1.100 and earlier versions

Incorrect plan generation when enable_stream_ctescan GUC hint is set.

The rollback to a non-ShareScan plan is incomplete when CTE memory usage estimates exceed thresholds, resulting in execution failure.

8.2.1.100 and earlier versions

Metadata restoration failure when backup size exceeds 64 MB on OBS.

Code vulnerabilities discard the last buffer segment during segmented download, corrupting the metadata.

8.2.1.100 and earlier versions

High memory usage during hstore delta table ANALYZE sampling.

The process of delta table combining I records consumes excessive memory. Toast data and delta data deserialization space must be released promptly.

8.2.1.100 and earlier versions

Inability to push down volatile functions in single-reference CTE queries.

Version 821 adds constraints against pushing down volatile functions in CTEs, which should be removed for single-reference scenarios to enable pushdown.

8.2.1.100 and earlier versions

Excessive space occupation by temporary files in XFS system, causing read-only cluster state.

Each temporary file spilled to disks occupies 16 MB in XFS. Too many spilled files cause cluster read-only state, necessitating a reduction in disk space usage by these files.

8.2.1.100 and earlier versions