Updated on 2026-08-25 GMT+08:00

New Features in 9.1.0.x

The beta features discussed below are not available for commercial use. Search for technical support before utilizing these features.

Patch 9.1.0.227 (August 2026)

This is a patch version that fixes known issues.

Table 1 Resolved Issues in 9.1.0.227

No.

Resolved Issue

Cause

Version

1

INSERT and UPDATE in MERGE INTO support comments

In earlier versions, INSERT and UPDATE in MERGE INTO do not support comments.

8.2.1.258

2

The PG_NAMESPACE system catalog contains records of the schemas to which temporary tables belong. These schemas are named in the format of pg_toast_temp_xxx.

For specific reasons, the pg_toast_temp_xxx records are retained in the pg_namespace system catalog. These records take up minimal space and have no impact on service operations.

Identification method: In normal service scenarios, both pg_toast_temp_xxx and pg_temp_xxx should exist. In abnormal scenarios, if pg_toast_temp_xxx remains but the corresponding pg_temp_xxx does not exist, the current issue occurs.

8.2.1.x

3

Clusters with decoupled storage and compute are read-only because the disk cache is too large.

For clusters with decoupled storage and compute, the disk cache usage risk threshold is hard-coded. When the system disk usage is close to the read-only threshold, the disk cache usage keeps increasing and cannot be stopped in advance. As a result, the clusters may enter the read-only mode.

-

4

GDS data files cannot be generated occasionally when CN retries coincide with GDS data export operations.

After an export task reports an error, the CN retry mechanism is triggered to re-deliver the export task. If the window for handling residual files from a previous asynchronous cleanup error overlaps with the window for generating a new file when a new task is submitted, the newly generated file may be deleted due to a time sequence issue.

8.2.1.x

5

gs_clean supports the restoration based on a specified XID.

In earlier versions, gs_clean does not support two-phase cleanup based on a specified XID.

-

6

The error "The size of cu is larger than 1GB, please lower the GUC check_cu_size_threshold and retry to insert" is reported during redistribution.

During batch data import, if a single row of data in extreme scenarios causes the CU size to exceed the upper limit (1 GB), an error is triggered.

8.2.1.258

7

The error "ALTER permission denied to user xxx for relation xxx" is displayed, indicating that the table fails to be created after the upgrade.

When CREATE TABLE IF NOT EXISTS is used to create a table with the same name as an existing table, the system checks the ALTER permission on the table. However, in this scenario, the ALTER permission check is not required. As a result, an error is reported for users without sufficient permissions.

8.1.1 to 8.1.3.338

8

An error is reported for the scheduling tasks of materialized views and SQL on Hudi, indicating that the database connection fails.

When local all all trust is not configured in the cluster security configuration file pg_hba.conf, an error is reported for the scheduling tasks of materialized views and SQL on Hudi.

-

9

During the upgrade, an error is reported indicating that dependent objects exist when a system type is dropped (using DROP TYPE). As a result, the upgrade fails.

View columns maintain dependencies on specific types and collations. When a type is dropped during the upgrade, an error is reported because the dependencies are not cleared. As a result, the upgrade is interrupted.

9.1.0.223

10

When the number of CUs in a column-store V3 table reaches the upper limit, the COUNT query results are inconsistent.

The data type range used by the CU number index of a column-store V3 table is insufficient. When the CU number exceeds the maximum value of the type, an overflow occurs. As a result, the COUNT query cannot correctly collect statistics on CU data beyond the range, and the query result is less than expected.

After VACUUM FULL is executed, CUs are rebuilt and their IDs are reset. The COUNT result becomes normal. Therefore, the COUNT query results before and after VACUUM FULL are inconsistent.

9.1.1.x

11

The error "role xxx was concurrently dropped" is reported during table redistribution.

During table redistribution, when a new table is created, the system records the role dependency and verifies the role's existence. If the role has been deleted, the verification fails, resulting in an error and interrupting the redistribution.

9.1.0.218

12

Users can only log in to the console to view the product version.

The GUC parameter product_version is added to allow users to query the current product version in the database.

-

13

After a cluster is upgraded from 8.1.3 to 9.1.0, the query time on the page increases from milliseconds to 1 to 5 seconds.

When the hang detection function identifies a hung thread, an alarm is generated. Handling this alarm involves creating a subprocess, using system resources and affecting query performance.

9.1.0.226

14

A binlog table created in user services is not used for a long time, and residual information is not automatically cleared.

The residual information in the binlog table that has not been used for a long time is not cleared in a timely manner. As a result, the transaction ID cannot be updated properly. The system only repeatedly performs automatic cleanup on a single database, and the delta tables of other databases cannot be merged. This issue is more likely to occur when a binlog table is not used for a long time after being created and transaction operations are frequent.

-

Patch 9.1.0.226 (May 2026)

This is a patch version that fixes known issues.

Table 2 New features/Resolved issues in patch 9.1.0.226

Type

Feature or Resolved Issue

Cause

Version

Handling Method

New features

None

-

-

-

Resolved issues

After autovacuum is disabled, the autovacuum thread is always blocked in a database.

After autovacuum is disabled, only system catalogs are cleared. Many preset tables and service tables are not system catalogs and cannot be cleared. As a result, the frozen XID cannot be advanced, affecting performance.

8.1.3.x

Upgrade the version to 9.1.0.226 or later.

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

When DWS connects to an HDFS foreign table and the table structure changes, the fill_missing_fields parameter of the foreign table in text or CSV format does not support missing multiple columns.

9.1.0.x

The permissions to export files from a HDFS write-only foreign table are insufficient, and other Hadoop users cannot access the files.

Other users do not have the read or write permissions on the ORC files written by the current HDFS user.

9.1.0.x

In multi-table join query scenarios, an error is reported due to projection pushdown.

In multi-table join query scenario, if the output contains aliases, the column sequence may be incorrect due to projection pushdown.

9.1.0.218

The CVE-2024-10976 vulnerability is 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

After DR is configured for Hive tables, HDFS foreign tables fail to be exported from the DWS database in the DR environment.

After DR is configured for Hive tables, the.hive_protected directory and the .snapshot directory in the table-level directory are generated. The system determines whether DR has been configured for Hive tables based on the directories. When HDFS foreign tables are exported and the original files are overwritten and deleted, the .hive_protected and .snapshot directories are skipped.

9.1.0.x

After a cluster is restarted, the time required for inserting a data record into a column-store table using INSERT is abnormally increased.

When data is inserted into a column-store table for the first time after the cluster is restarted, the system needs to scan all index data to determine the maximum CUID before the fault occurs. This ensures that the newly inserted data and the existing data do not overlap in the internal unique identifier. The index data may be large and the full scan is slow. As a result, the execution is time-consuming.

9.1.0.200

During cluster upgrade, the audit log parameter audit_enabled is enabled on DNs.

During scale-out, audit logs on DNs can slow down performance.

9.1.0.212

The ORC read/write time zone issue is fixed.

When an ORC foreign table writes data of the timestamp type, the file timezone metadata uses GMT, which is different from UTC used by Hive/Spark engine.

9.1.0.x

In MySQL-compatible mode, when the date type is compared with the timestamp type, a forced conversion occurs. As a result, partition pruning cannot be performed.

By default, enable_cast_hashjoin is enabled for behavior_compat_options during new installation. As a result, after forcible type conversion is added to join conditions, partition pruning cannot be applied, and query performance deteriorates.

9.1.0.x

Any single-node instance cannot be restored in the standby cluster during DR.

The standby cluster is read-only during DR, so any node cannot be restored on the standby cluster.

8.2.1.x

Java UDFs are adapted to Java 17.

Currently, gs_extend_library calls the udstools.py file in the kernel. The file calls 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.

9.1.0.x

The enable_insert_foreign_table_dop parameter does not take effect when data is exported from DWS to a distributed file system (HDFS).

The enable_insert_foreign_table_dop parameter exported to HDFS does not take effect.

9.1.0.x

Node memory overflows during incremental backup.

In earlier versions, to ensure clusters ran smoothly, memory allocation for transaction commits, transaction rollbacks, or non-executed SQL statements was not capped by dynamic memory limits. However, in the current version, tools like Roach can bypass the limits, leading to uncontrolled memory usage, significant increases in dynamic memory consumption, and eventually node memory overflow.

9.1.0.x

After clusters are upgraded to 9.1.0.x and output columns support the JSON type, the performance of the vectorized plan of the corresponding statement deteriorates.

Clusters of version 9.1.0 support JSON vectorization. After the forcible vectorization is enabled for the original row-store JSON data, the vectorized plan is used, which may cause performance deterioration.

9.1.0.x

If you enable the enable_topk_optimization parameter, an exception occurs when the value of limit exceeds INT_MAX/2 (1073741823) after ORDER BY is executed.

When the enable_topk_optimization parameter is enabled for a column-store table, the Turbo sorting algorithm is used. However, if the value of limit in a sorting statement exceeds INT_MAX/2, the vectorized sorting algorithm of common column-store tables is used. As a result, an exception occurs, indicating the sorting algorithm is abnormal.

9.1.0.x

After a cluster is upgraded from an earlier version to 9.1.0 or later, the OS parameter vm.watermark_scale_factor is set to 1000.

If a cluster is upgraded to 9.1.0 or later, the OS parameter vm.watermark_scale_factor must be forward compatible.

9.1.0.x

A GUC parameter is added to set the size of the disk cache A0 queue.

The GUC parameter disk_cache_a0_size is used to set the size of the disk cache A0 queue.

9.1.0.x

When the Turbo engine is used to read an ORC foreign table, a memory exception occurs if the number of columns in the ORC file changes.

When the Turbo engine is used to read an ORC foreign table, a memory exception occurs if the number of columns in the ORC file changes.

9.1.0.x

Patch 9.1.0.223 (October 2025)

This is a patch version that fixes known issues.

Table 3 New features/Resolved issues in patch 9.1.0.223

Type

Feature or Resolved Issue

Cause

Version

Handling Method

New features

None

-

-

-

Resolved issues

After the version is upgraded to 9.1.0.222, system category queries are slow due to missing index scan + nested loop plans.

When a bitmap scan is generated for optimization, the index is not marked as a B-tree index.

8.2.1

Upgrade the version to 9.1.0.223 or later.

DFX provides views for querying task consumption.

  • pgxc_get_binlog_consume_progress() can invoke the enable_binlog table.
  • pgxc_get_binlog_slots() is used to obtain the slots of each target table, including the timestamp of the last registration of the slot (returned by querying pg_binlog_slots on the DN).
  • pgxc_binlog_clear_target_slot(relName, slotName) is added to clear the specified slot of the target table.

9.1.0

An alarm is reported because the cluster status is abnormal.

No PCK index is created for the HStore table. Invalid GTM connections are frequently performed during all asynchronous sorting operations. This alarm is generated when there are too many GTM connections.

9.1.0.218

Patch 9.1.0.222 (September 2025)

This is a patch version that fixes known issues.

Table 4 New features/Resolved issues in patch 9.1.0.222

Type

Feature or Resolved Issue

Cause

Version

Handling Method

New features

None

-

-

-

Resolved issues

Residual files exist after the backup.

When backup and DR tasks are running concurrently, the CBM recycling mechanism does not adapt to the execution of delayed DDLs. As a result, CBM files in the delayed DDL range may be recycled in advance, so some files that are delayed to be deleted remain.

8.2.1

Upgrade the version to 9.1.0.222 or later.

Sessions on residual statements failed to be terminated.

When processing the long jump process, the system shields some signals. As a result, some operations may not be terminated in time.

9.1.0.201

Partitions are not automatically created for automatic partition tables.

The syntax RENAME TABLE to is not correctly adapted to update the scheduling task.

8.1.3

Incremental backup of a cluster failed to be performed.

When the full build copies Xlogs, the CBM track position is not adapted. As a result, the CBM files are discontinuous, and the incremental backup fails.

9.1.0

The case_insensitive information of views is residual, causing an abnormal query result set.

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 error "failed to execute query" is displayed during service execution.

The EXPLAIN PLAN command does not adapt to the SPI. As a result, the data exporter is cleared by mistake, and subsequent statements using the SPI fail.

8.2.1

An error is reported during GDS job execution.

When the system clears the data cache in the date format that is not used for the longest time, the overflow of the cache freshness data is reset to 0. As a result, the cache that has just entered is incorrectly cleared.

8.2.1

The capabilities of materialized views need to be enhanced.

The query rewriting of materialized views does not properly adapt to the interaction with peripheral components.

9.1.0

Patch 9.1.0.220 (July 2025)

This is a restricted patch version that fixes known issues.

Table 5 New features/Resolved issues in patch 9.1.0.220

Type

Feature or Resolved Issue

Cause

Version

Handling Method

New features

None

-

-

-

Resolved issues

The keyword status is deleted.

In version 9.1.0.220 or later, status is no longer a DWS keyword.

Versions earlier than 9.1.0.220

Upgrade the version to 9.1.0.220 or later.

If Unusable Local Indexes are used, UPSERT operations cannot be performed after historical partition indexes are cleared.

UPSERT statements can check whether the indexes of all partitions are valid in the optimizer. If there is any UNUSABLE, an error is reported.

Versions earlier than 9.1.0.220

Session connections are stacked due to the failure to start the audit log thread.

When the audit log thread is not started, g_auditThreadActive is set to active. When the lockless queue of audit logs is full, service SQL statements wait for audit logs to be written to the lockless queue, causing a block.

Versions earlier than 9.1.0.220

During the fine-grained backup, the error message "could not open relation with OID" is displayed when a volatile table is dropped.

  1. According to the onsite stack analysis, the volatile table has the corresponding toast table and toast index. When a session ends, the system attempts to drop the volatile table, toast table, and toast index.
  2. When DROP INDEX is executed, the GsStatOpTraceAddTuple operation is recorded in the trace table and then the relation_open operation is performed using the OID of the index.
  3. The GsStatOpTraceAddTuple operation is called before DeleteAttributeTuples(indexId) and DeleteRelationTuple, the mainline operation is not affected.

    However, after DeleteAttributeTuples(indexId) is executed, all information about the index is deleted. As a result, the subsequent operations fail, and the DROP operation on the volatile table fails.

9.1.0

Schema-level DR restoration fails, and an error is displayed indicating that the metadata fails to be decompressed.

During the fine-grained backup, the extra_dump folder is generated on the CN with the smallest ID to store dump information such as databases and roles.

During heterogeneous restoration, the primary node may be different from the backup primary node and is not the CN with the smallest ID. You need to download the metadata file twice to ensure that the dump file and extra_dump file are downloaded.

  • For OBS backups, the metadata is downloaded to the --metadata-destination directory.
  • For XBSA backups, the metadata is downloaded to the parent directory of the --metadata-destination directory.

For OBS backups, there is an additional cluster-unique-id directory for metadata. After the metadata is downloaded, the compressed package needs to be distinguished by media-type.

8.2.1

Patch 9.1.0.218 (May 2025)

This is a patch version that fixes known issues.

Table 6 New features/Resolved issues in patch 9.1.0.218

Type

Feature or Resolved Issue

Cause

Version

Handling Method

New features

None

-

-

-

Resolved issues

There are write locks in high-concurrency scenarios once LLVM is enabled.

After LLVM is enabled, an operating system (OS) will reclaim memory when an application repeatedly allocates and releases memory in high-concurrency scenarios. During the memory reclamation, holding the mmap write lock can indeed block other threads from allocating new memory, affecting memory access performance.

Versions earlier than 9.1.0.218

Upgrade the version to 9.1.0.218 or later.

HStore and time series tables are no longer used.

The time series tables, column-store delta tables, and historical HStore tables are no longer used in clusters of version 9.1.0.218 or later. They are replaced by the HStore Opt table.

-

The error "invalid memory alloc request size" is displayed during presort execution

During the runtime filter presorting, the ID of another column is incorrectly obtained. As a result, the obtained attlen is incorrect, and the function for reading the data length is incorrect.

When attlen is set to -1, the system incorrectly uses the single-byte processing function to read the Chinese characters encoded in GBK. As a result, a negative value for character length is calculated, and memory fails to be allocated.

9.1.0.210

After enable_hstore_binlog_table is enabled and services are running for a long time, the pg_csnlog file on the standby node is stacked. After the file is cleared, the space is still not reclaimed.

To prevent unwanted recycling of CSN logs, at least one VACUUM operation is required. During this process, pg_binlog_slots on the primary node collects oldestxmin, but the standby node does not execute the collection. As a result, oldestxmin for reclaiming CSN logs is always 0 and CKP does not reclaim CSN logs.

9.1.0.201

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

If the defined column width exceeds 1024 and the stored data is short or empty, the estimated memory width using ANALYZE is large.

8.1.3

When UPSERT operations are executed in batches, the binlogs on the source and target tables are not synchronized.

When UPSERT operations are performed on all columns, the old binary log is deleted and the new binary log is not recorded. The binlogs on the source and target tables are not synchronized.

Versions earlier than 9.1.0.218

Fixed the issue where after a switchover is performed, the values of autovacuum and autoanalyze of the original primary cluster are disabled.

The autovacuum parameter of the primary cluster is originally on. After a switchover is performed, the value is changed to off. After the switchover is performed again, the values of autovacuum and autoanalyze are not as expected.

9.1.0

Fixed the issue where the value of enable_orc_cache is automatically modified in upgrades.

After a cluster is upgraded to 9.1.0.1 or later, the value of enable_orc_cache is changed from on to off.

9.1.0.210

"stream plan check failed" is displayed after the upgrade.

After the value partition plan changes, the value partition plan generated by WindowAgg is inconsistent between the upper node and the lower node.

8.2.1.225

After a DR switchover, the error message "xlog flush request" is displayed in the primary cluster.

Only the primary CN in the DR cluster is backed up. The full or incremental backup type is recorded in the metadata file of the backup set. When the DR cluster is restored, the metadata file information is read to determine whether to clear the CN directory (cleared during full restoration). CN IDs in the primary and DR clusters may be different. If the backup type is queried based on the ID, the incorrect information may be read. As a result, necessary files are not cleared during full restoration, and residual files affect services.

9.1.0

Turbo problem hardening

Some unconventional scenarios (for example, multiple UNION ALL and inconsistent data types) are not considered. As a result, an exception occurs during a query.

9.1.0

Patch 9.1.0.215 (March 2025)

This is a patch version that fixes known issues.

Table 7 New features/Resolved issues in patch 9.1.0.215

Type

Feature or Resolved Issue

Cause

Version

Handling Method

New features

None.

-

-

-

Resolved issues

Fixed the issue where the intelligent O&M scheduler triggered data flushes to disks.

The intelligent O&M scheduler sends the pgxc_parallel_query function to each DN to check the table size. The DN query results include auxiliary tables like CUDesc and Delta for column-store tables. Each partition also has its own CUDesc and Delta tables. This makes the final result set large.

The DN sends a summary of the query results to the CN. If the result set is too large, this triggers a disk flush. This can slow down the query or fill up the disk.

8.3.0.100

Upgrade the version to 9.1.0.215 or later.

Fixed the issue where the storage-compute decoupled V3 table would sometimes crash if DiskCache was turned off.

If the storage-compute decoupled V3 table is used, DiskCache is disabled, and the service thread fails to get space while reading OBS objects, the transaction rolls back. This can cause errors.

9.1.0

Fixed the issue where the CM component could not restart the cluster if a node was subhealthy (hung).

cm_ctl starts a cluster in two phases:

  1. Check each node's status by connecting with PSSH.
  2. Delete each node' start and stop files by connecting with PSSH.

The SSH command misreads its parameters. This causes a single faulty node check to take over 300 seconds. If multiple nodes are faulty, the time needed grows quickly. Eventually, the command fails to deliver.

8.1.3

Fixed the issue where, in data lake scenarios, too many concurrent requests (over 3,000) slowed connections between CNs and DNs, resulting in low overall performance.

One file is allocated to only one DN. However, in the execution plan, the CN still establishes connections with all DNs. In data lakes, a single cluster needs to support more than 3,000 concurrent requests, which increases the overhead.

9.1.0

Fixed the issue where a long write process field in a data lake sometimes caused the DN process to malfunction.

If the write process field is too long in a data lake, an error occurs. During rollback, the system calls the relevant logic. But some memory is already freed, leading to a function error and shutting down the DN process.

9.1.0

Fixed the SQL injection vulnerability (CVE-2025-1094).

Your product may have the PostgreSQL SQL injection vulnerability (CVE-2025-1094).

9.1.0

Fixed the issue where query errors sometimes happened in row-column mixed scenarios when using the NestLoop and Stream operators.

The NestLoop operator includes the stream operator. First, run the materialization operator on the inner side. In a mixed row- and column-store setup, the Row Adapter operator appears with the materialized operator. As a result, the materialized operator is not executed, causing abnormal operations.

8.3.0.108

Fixed the issue where the DN connection was checked during the communication thread's idle time, causing occasional slow database responses.

The communication thread checks all connections to other DNs during idle periods. Each check takes 1 ms. In large clusters with over 100 connections, this can take more than 100 ms, delaying the next packet send. This can cause occasional slowdowns in services that need fast response times.

9.1.0

Patch 9.1.0.213 (February 2025)

This is a patch version that fixes known issues.

Table 8 New features/Resolved issues in patch 9.1.0.213

Type

Feature or Resolved Issue

Cause

Version

Handling Method

New features

After migrating Hive data to DWS, you can choose whether to automatically convert an empty string to 0 in MySQL compatibility mode.

-

-

-

Resolved issues

Temporary tables are not cleared when external tables are involved in INSERT OVERWRITE INTO during JDBC connection.

The access process of the JDBC connection involves multiple phases (parser, bind, and exec). In the parser phase, the SQL statement is rewritten, creating a temporary table for INSERT OVERWRITE. If an external foreign table is used, the rewrite operation is repeated in the exec phase, meaning the temporary table from the parser phase is not deleted. This results in two temporary tables being created, with only the one from the later phase being deleted, causing temporary table residue.

9.1.0.211

Upgrade the version to 9.1.0.213 or later.

The service receives a 100% skew alarm. The skew content is OVERWRITE temporary table skew.

When INSERT OVERWRITE is executed or the distribution key is changed, a temporary common table is generated to store the data from the source table. If there is data skew, an alarm is triggered for the temporary table name, leading to a failure in the analysis process.

9.1.0.211

Resolved the result set problem caused by data precision alignment in the Turbo engine.

If certain data nodes scan zero rows in the base table, the result set sent back to the CN is NULL with a default of 0 decimal places. When the result set is combined with the sum result returned by DNs containing data, the precision of the aligned data is inaccurately calculated. Consequently, the final sum result is stored as int64 type, leading to an unexpected result set.

9.1.0.212

Fixed the issue that the system does not check whether the partition path is empty when an external foreign table is used to check the partition path.

When the external table of the HDFS server checks whether the partition path corresponds to the partition field definition, the system does not check whether the partition path is empty.

9.1.0.211

Fixed the issue where the null pointer return value was not handled when using an external foreign table to retrieve partition information from Hive MetaStore.

The partition values obtained from Hive MetaStore are null.

9.1.0.212

The time zone conversion result of the convert_tz function does not meet the expectation in a certain scenario.

Compatibility with MySQL is not considered when the convert_tz function is used. As a result, the result is not as expected.

9.1.0.210

Fixed the issue that the substr result set was incorrect when LLVM was enabled.

GBK data can be imported into the ASCII code database. When LLVM is utilized, the bottom layer of LLVM does not verify the invocation of substr(a, start_index, len) on GBK data columns. This results in miscalculating the character width of GBK as 4 instead of 2 due to reusing UTF-8 character width logic.

8.1.3.x

Resolved the result set problem caused by incorrect string processing when using the inlist-to-hash feature in the Turbo engine.

Changing the character string from attlen16 to attlen–1 in the uniq hash table in the Turbo engine incorrectly employs the strlen interface to determine the string length. In the hstoreopt delta table, if attlen is modified from –1 to a fixed length, preliminary batch conversion is necessary.

9.1.0.212

Patch 9.1.0.212 (January 2025)

This is a patch version that fixes known issues.

Hybrid data warehouse

  1. Resolved the issue that the result set of the date type query is pushed down in MySQL-compatible mode.
  2. Fixed the issue that the result set is incorrect when limit is set to null or all.
  3. Fixed the issue of incorrect statistics resetting, inability to trigger auto vacuum, and delayed space reclamation.
  4. Resolved the deadlock problem related to refreshing materialized views and concurrent DDL operations.
  5. Resolved the issue where data in the original table was mistakenly deleted when a temporary table was manually removed after an error occurred during the redistribution of a cold or hot table during scale-out.
  6. Resolved the problem of local disk space increase during cold and hot table scale-out.

Lakehouse

  1. When a foreign table accesses OBS, the path can contain the special character semicolons (;).
  2. Optimized the task allocation for querying Parquet foreign tables to enhance the disk cache hit ratio.

Backup and restoration

  1. Fixed the problem of intermediate status files remaining during backup and restoration, which would occupy disk space.
  2. Resolved the backup failure issue when the elastic VW is present.
  3. Supported backup and restoration for cold and hot tables, prolonging the backup and restoration time.

Ecosystem compatibility

  1. Fixed the issue that the PostGIS plug-in may fail to be created.

O&M improvement

  1. Resolved the issue that SQL monitoring metrics are incompletely collected.
  2. Resolved the memory leak problem of the secondary node.
  3. Fixed the issue that intelligent O&M is not started on time.
  4. Fixed the problem where the scheduler could not be properly scheduled due to residual data caused by a failed database drop.
  5. Fixed the issue of high communication memory usage during high concurrency.
  6. Resolved the performance problem caused by residual sequences on the GTM when an exception occurs.

Behavior changes

  1. To prevent errors during complex SQL execution, we disabled the ANALYZE feature of the predicate column during upgrades or new installations.
  2. In the previous version, if there was an abnormal network connection to the GTM during a drop table operation in a scenario where the table definition contained a sequence column, a warning would be reported. Although the drop table operation could be successfully executed, the sequences might remain on the GTM. In the new version, an error is reported when drop table is executed. After retry, drop table can be executed successfully. In DWS, you can use DROP TABLE within transaction blocks. If DROP TABLE is successfully executed but the transaction is rolled back, the sequences will be deleted from the GTM, but the table will still exist on the CN. In this case, the table needs to be dropped again to avoid errors indicating that the sequences do not exist.
  3. The truncate operation can proactively terminate SELECT operations in case of lock conflicts, and this feature is disabled by default. In the previous version, if the session executing the SELECT statement was terminated, it would cause an error, but the connection would remain open. However, in the new version, the session executing the SELECT statement is automatically closed, and the service requires reconnection.

Patch 9.1.0.211 (December 13, 2024)

This is a patch version that fixes known issues.

Version 9.1.0.210 (November 25, 2024)

Table 9 New functions in version 9.1.0.210

Category

Function

Description

Reference

Decoupled storage and compute

Cache prefetch

Users can use explain warmup to preload data into the local disk cache, either at the cold or hot end.

Proactive Preheating and Tuning of Disk Cache

Using Disk Cache to Improve Query Performance

Enhanced elastic VW function

The enhanced elastic VW function offers more flexible ways to distribute services. Services can be distributed to either the primary VW or the elastic VW by CN.

The GUC parameter workload_vw_strategy is added to set the workload routing mode of a CN.

-

Parallel insert operations

Storage-compute decoupled tables support parallel insert operations, improving data loading performance.

-

Recycle bin for storage-compute decoupled tables

If tables or partitions are dropped or truncated, they can be restored from the recycle bin.

  • The GUC parameter enable_recyclebin is added to enable or disable the recycle bin in real time. The GUC parameter recyclebin_retention_time is added to set the retention period of objects in the recycle bin. Objects in the recycle bin will be automatically deleted after the retention period expires.
  • The PURGE and TIMECAPSULE syntaxes are added.
  • The PURGE and KEEP ttl HOUR parameters are added to the DROP TABLE syntax.

It is a beta feature. To use it, contact technical support.

DROP TABLE

Enhanced hot and cold tables

Both hot and cold tables can use disk cache and asynchronous I/Os to improve performance.

-

Hybrid data warehouse

Improved the page turning performance

LIMIT...OFFSET is used for database pagination to enable applications to retrieve data quickly. INLIST is used for performance improvement.

-

Binlog

The Binlog feature is now available for commercial use.

Hybrid Data Warehouse Binlog

Enhanced automatic partitioning

Automatic partitioning supports time columns of integer and variable-length types. When creating a partitioned table, users can use time_format in the CREATE TABLE syntax to specify the time format when the time column is of the INT4, INT8, VARCHAR, or TEXT type.

CREATE TABLE

Cutting Partition Maintenance Costs for the E-commerce and IoT Industries by Leveraging Automatic Partition Management Feature

Lakehouse

Optimized foreign tables

Parquet and ORC support read and write operations with the Zstandard (Zstd) compression format.

-

CREATE TABLE LIKE allows the table in an external schema to be used as the source table.

-

Foreign tables can be exported in parallel.

-

High availability

Enhance backup and restoration functions

Storage-compute decoupled tables as well as hot and cold tables support incremental backup and restoration.

-

In storage-compute decoupling scenarios, parallel copy is used to increase backup speed.

-

Ecosystem compatibility

Enhanced MySQL compatibility

DWS is compatible with the replace into syntax and the INTERVAL time type of MySQL.

-

Ecosystem

Comments can be displayed for columns exported using pg_get_tabledef.

-

O&M and stability

Optimized storage

When disk usage is high, data can be dumped from the standby node to OBS.

-

Optimized read-only performance

When the database is about to become read-only, certain statements that write to disks and generate new tables and physical files are intercepted to quickly reclaim disk space and ensure the execution of other statements.

-

Optimized audit logs

Audit logs can be dumped to OBS.

-

Optimized lock mechanisms

The lightweight lock view pgxc_lwlocks is added.

PGXC_LWLOCKS

The lock acquisition and waiting timestamps are added to the common lock views.

-

The global deadlock detection function is enabled by default.

-

A lock function is added between VACUUM FULL and SELECT.

-

The expiration time in gs_view_invalid can help O&M personnel clear invalid objects.

GS_VIEW_INVALID

Constraints

Constraints

  1. A maximum of 256 VWs are supported, and each VW supports a maximum of 1,024 DNs. It is recommended that the number of VWs be less than or equal to 32 and the number of DNs in each VW be less than or equal to 128.
  2. OBS storage-compute decoupled tables do not support DR or fine-grained backup and restoration.

-

Behavior changes

Behavior changes

Enabling the max_process_memory adaptation during the upgrade will increase the available memory of DNs in primary/standby mode.

-

By default, data consistency check is enabled for data redistribution during scale-out, which increases the scale-out time by 10%.

-

When a HStore Opt table is created, the turbo engine is enabled by default, and the compression level is middle by default.

-

By default, the OBS path of a storage-compute decoupled table is displayed as a relative path.

-

To use the disk cache, enable the asynchronous I/O parameter.

-

The interval for clearing indexes of column-store tables has been changed from 1 hour to 10 minutes to quickly clear the occupied index space.

-

CREATE TABLE and ALTER TABLE cannot set columns with the On Update expression as distribution columns.

-

The INT96 timestamp format in Parquet can automatically convert to UTC.

-

max_stream_pool is used to control the number of threads cached in the stream thread pool. The default value is changed from 65525 to 1024 to prevent idle threads from using too much memory.

-

Logical replication is no longer available, and an error will be reported when related APIs are called.

-

Patch 9.1.0.105 (October 23, 2024)

This is a patch version that fixes known issues.

Patch 9.1.0.102 (September 25, 2024)

This is a patch version that fixes known issues.

Upgrade

  1. Upgrade from 9.0.3 to 9.1.0 is supported.

Fixed known issues

  1. Supported alter database xxx rename to yyy in the storage-compute decoupling version.
  2. Fixed the problem of incorrect display of storage-compute decoupling table's \d+ space size.
  3. Fixed the problem of asynchronous sorting not running post backup and restoration.
  4. Fixed the problem of inability to use Create Table Like syntax after deleting the bitmap index column.
  5. Fixed the performance rollback problem in Turbo engine's group by scenario caused by hash algorithm conflicts.
  6. Maintained the scheduler processes' handling of failed tasks in the same manner as version 8.3.0.
  7. Fixed the problem of pg_stat_object space expansion in fault scenarios.
  8. Fixed the problem of DataArts Studio reporting an error when delivering a Vacuum Full job after upgrading from 8.3.0 to 9.1.0.
  9. Fixed the problem of high CPU and memory usage during JSON field calculation.

Enhanced functions

  1. ORC foreign tables support the ZSTD compression format.
  2. GIS supports the st_asmvtgeom, st_asmvt, and st_squaregrid functions.

Version 9.1.0.100 (August 12, 2024)

Elastic architecture

  1. Architecture upgrade: The storage-compute decoupling architecture 3.0, based on OBS, introduces layered and elastic computing and storage, with on-demand storage charging to reduce costs and improve efficiency. Multiple virtual warehouses (VWs) can be deployed to enhance service isolation and resolve resource contention.
  2. The elastic VW feature, which is stateless and supports read/write acceleration, addresses issues like insufficient concurrent processing, unbalanced peak and off-peak hours, and resource contention for data loading and analytics. For details, see Elastically Adding or Deleting a Logical Cluster.
  3. Both auto scale-out and classic scale-out are supported when adding or deleting DNs. Auto scale-out does not redistribute data on OBS, while classic scale-out redistributes all data. The system automatically selects the scale-out mode based on the total number of buckets and DNs.
  4. The decoupled storage-compute architecture (DWS 3.0) enhances performance with disk cache and asynchronous I/O read/write. When the disk cache is fully utilized, performance matches that of the coupled storage-compute architecture (DWS 2.0).
Figure 1 Decoupled storage and compute

Real-time processing

  1. Launched the vectorized Turbo acceleration engine, doubling the performance of TPC-H 1000x.
  2. Upgraded version of hstore, called hstore_opt, offers a higher compression ratio and works in conjunction with the Turbo engine to reduce storage space by 40% when compared to column storage.
  3. With Flink, you can connect directly to DNs to import data into the database. This results in linear performance improvement in batch data import scenarios. For details, see Real-Time Binlog Consumption by Flink.
  4. DWS supports Binlog (currently in beta) and can be used in conjunction with Flink to enable incremental computing. For details, see Subscribing to Hybrid Data Warehouse Binlog.
  5. This update significantly improves full-column performance while reducing resource consumption.
  6. DWS supports materialized views (currently in beta). For details, see CREATE MATERIALIZED VIEW.
  7. To improve coarse filtering, the VARCHAR/TEXT column now supports bitmap index and bloom filter. When creating a table, you must specify them explicitly. For details, see CREATE TABLE.
  8. To enhance performance in topK and join scenarios, the runtime filter feature is now supported. You can learn more about GUC parameters runtime_filter_type and runtime_filter_ratio in Other Optimizer Options.
  9. DWS supports asynchronous sorting to enhance the min-max coarse filtering effect of PCK columns.
  10. The performance in the IN scenario is greatly improved.
  11. ANALYZE supports incremental merging of partition statistics, collecting only statistics on changed partitions and reusing historical data, which improves execution efficiency. It collects statistics only on predicate columns.
    • The CREATE TABLE syntax now includes the incremental_analyze parameter to control whether to enable incremental ANALYZE mode for partitioned tables. For details, see CREATE TABLE.
    • The enable_analyze_partition GUC parameter determines whether to collect statistics on a partition of a table. For details, see Other Optimizer Options.
    • The enable_expr_skew_optimization GUC parameter controls whether to use expression statistics in the skew optimization policy. For details, see Optimizer Method Configuration.
    • ANALYZE | ANALYSE
  12. Create index/reindex supports parallel processing.
  13. The pgxc_get_cstore_dirty_ratio function is added to obtain the dirty page rate of CU, Delta, and CUDesc in the target table (only hstore_opt is supported).

[Convergence and unification]

  1. One-click lakehouse: You can use create external schema to connect to the Hive MetaStore metadata, avoiding complex create foreign table operations and reducing maintenance costs. For details, see Enabling Cross-Cluster Access of Hive Metastore Through an External Schema.
  2. DWS allows for reading and writing in Parquet/ORC format, as well as overwriting, appending, and multi-level partition read and write.
  3. DWS allows for reading in Hudi format.
  4. Foreign tables support concurrent execution of ANALYZE, significantly improving the precision and speed of statistics collection. However, foreign tables do not support AutoAnalyze capabilities, so it is recommended to manually perform ANALYZE after data import.
  5. Foreign tables can use the local disk cache for read acceleration.
  6. Predicates such as IN and NOT IN can be pushed down for foreign tables to enhance partition pruning.
  7. Foreign tables now support complex types such as map, struct, and array, as well as bytea and blob types.
  8. Foreign tables support data masking and row-level access control.
  9. GDS now supports the fault tolerance parameter compatible_illegal_char for exporting foreign tables.
  10. The read_foreign_table_file function is added to parse ORC and Parquet files, facilitating fault demarcation.

High availability

  1. The fault recovery speed of the unlogged table is greatly improved.
  2. Backup sets support cross-version restoration. Fine-grained table-level restoration supports backup sets generated by clusters of earlier versions (8.1.3 and later versions).
  3. Fine-grained table-level restoration supports restoration to a heterogeneous cluster (the number of nodes, DNs, and CNs can be different).
  4. Fine-grained restoration supports permissions and comments. Cluster-level and schema-level physical fine-grained backups support backup permissions and comments, as do table-level restorations and schema-level DR.

Space saving

  1. Column storage now supports JSONB and JSON types, allowing JSON tables to be created as column-store tables, unlike earlier versions which only supported row-store tables.
  2. Hot and cold tables support partition-level index unusable, saving local index space for cold partitions.
  3. Upgraded version of hstore, called hstore_opt, offers a higher compression ratio and works in conjunction with the Turbo engine to reduce storage space by 40% when compared to column storage.

O&M and stability improvement

  1. The query filter is enhanced to support interception by SQL feature, type, source, and processed data volume. For details, see CREATE BLOCK RULE.
  2. DWS now automatically frees up memory resources by reclaiming idle connections in a timely manner. You can specify the syscache_clean_policy parameter to set the policy for clearing the memory and number of idle DN connections. For details, see Connection Pool Parameters.
  3. The gs_switch_respool function is added for dynamic switching of the resource pool used by queryid and threadid. This enables dynamic adjustment of the resources used by SQL. For details, see Resource Management Functions.
  4. The pg_sequences view is added to display the attributes of sequences accessible to the current user.
  5. The following functions are added to allow you to query information about all chunks requested by the memory in a specified shared memory:
  6. The pgxc_query_resource_info function is added to display the resource usage of the SQL statement corresponding to a specified query ID on all DNs. For details, see pgxc_query_resource_info.
  7. The pgxc_stat_get_last_data_access_timestamp function is added to return the last access time of a table. This helps the service to identify and clear tables that have not been accessed for a long time. For details, see pgxc_stat_get_last_data_access_timestamp.
  8. SQL hints support more hints that provide better control over the generation of execution plans. For details, see Configuration Parameter Hints.
  9. Performance fields are added to top SQL statements that are related to syntax parsing and disk cache. This makes it easier to identify performance issues. For details, see Real-Time Top SQL.
  10. The preset data masking administrator has the authority to create, modify, and delete data masking policies.
  11. Audit logs can record objects that are deleted in cascading mode.
  12. Audit logs can be dumped to OBS.

Ecosystem compatibility

  1. if not exists can be included in the CREATE SCHEMA, CREATE INDEX, and CREATE SEQUENCE statements.
  2. The merge into statement now allows for specified partitions to be merged. For details, see MERGE INTO.
  3. In Teradata-compatible mode, trailing spaces in strings can be ignored when comparing them.
  4. GUC parameters can be used to determine if the n in varchar(n) will be automatically converted to nvarchar2.
  5. PostGIS has been upgraded to version 3.2.2.

Restrictions

  1. A maximum of 256 VWs are supported, each with up to 1,024 DNs. It is advised to have no more than 32 VWs and 128 DNs for each VW.
  2. DR is not supported by OBS tables that have decoupled storage and compute. Only full backup and restoration are available.

Behavior changes

  1. The keyword status is added. Avoid using status as a database object name. If changing the column alias to status causes a service error, add AS to the service statement to fix it. Here is an example:
    1
    2
    3
    4
    SELECT c1, min (c2) status, c3 from t1;  //Error SQL
    ERROR: syntax error at or near "status"
    
    SELECT c1, min(c2) AS status, c3 from t1;  //SQL statement for avoiding the problem. Add AS.
    

  2. VACUUM FULL, ANALYZE, and CLUSTER are only supported for individual tables, not the entire database. Even though there are no syntax errors, the commands will not be executed.
  3. Decoupled storage and compute tables using OBS do not support delta tables. If enable_delta is set to on, no error is reported, but delta tables do not take effect. If a delta table is required, use the HStore Opt table instead.
  4. By default, NUMA core binding is enabled and can be turned off dynamically using the enable_numa_bind parameter.
  5. Upgrading from version 8.3.0 to version 9.1.0 changes the numeric(38) data type in Turbo tables to numeric(39), without affecting display width. Rolling back to the previous version will not reverse this change.
  6. Due to the decoupling of storage and compute, the EVS storage space in DWS 3.0 is half that of DWS 2.0 by default. For example, purchasing 1 TB of EVS storage provides 500 GB in DWS 3.0 for active/standby mode, compared to 1 TB in DWS 2.0. When migrating data from DWS 2.0 to DWS 3.0, the EVS storage space required in DWS 3.0 is twice that of DWS 2.0.