全部產品
Search
文件中心

AnalyticDB:4.3版本與6.0版本相容性注意事項

更新時間:Sep 16, 2026

本文介紹了雲原生資料倉儲AnalyticDB PostgreSQL版 4.3版本與6.0版本在相容性上的注意事項,如果您需要將執行個體從4.3版本升級到6.0版本,請根據實際情況對本文提及的部分進行相應的修改。

最佳化器

名稱

V4.3

V6.0

預設最佳化器

Legacy最佳化器

ORCA最佳化器

4.3版本與6.0版本都支援Legacy最佳化器和ORCA最佳化器,可根據需求選擇使用,有關最佳化器的選擇,請參見兩種最佳化器的選擇。

轉義符

  • 在6.0版本中,字串的逸出字元\ ,將作為字串本身,不再表示轉義符。

  • 可執行以下語句保持和4.3版本語義一致,但不建議這樣操作。

    set standard_conforming_strings = off;
    說明

    上述語句僅對session層級生效。如果需要對叢集生效,請提交工單,由雲原生資料倉儲AnalyticDB PostgreSQL版後台技術人員進行設定。

類型轉換

  • 6.0版本中不再支援YYYYMMDDHH24MISS格式的字串自動強轉為時間戳記類型。您可以通過系統內建函數to_timestamp/to_char,進行YYYYMMDDHH24MISS格式的字串和時間戳記之間的轉換。

  • 6.0版本不再支援數字類型隱式轉換成TEXT類型。如果4.3版本中有這類語句,升級到6.0版本後,您可以通過增加Function支援這類情境。比如:

    create or replace function substr(numeric, integer,integer)returns text as $$
    select substr($1::text,$2,$3);
    $$ language sql IMMUTABLE strict;
    create or replace function pg_catalog.btrim(str numeric) returns text as $$
    return $_[0];
    $$ language plperl IMMUTABLE strict;
    create or replace function to_date(timestamp, text) returns date as $$
    select to_date($1::text,$2);
    $$ language sql IMMUTABLE strict;
    create or replace function to_date(integer, text) returns date as $$
    select to_date($1::text,$2);
    $$ language sql IMMUTABLE strict;
  • 如果有SQL或Function需要隱式轉換成TEXT類型的情境,會受到影響,需要手工改寫。

外部表格錯誤記錄檔

6.0版本不支援在create external table或copy語句時,使用into error_table子句。您可以使用系統函數代替into error_table子句的功能。

gp_read_error_log('$external_table')
gp_truncate_error_log('$external_table')

資料類型

  • NUMERIC類型的檔案儲存體格式變化,會影響到磁碟空間使用;

  • MONEY類型由32位改為64位,會影響磁碟空間使用;

  • 6.0版本不支援以下資料類型作為分布鍵:

    • abstime

    • reltime

    • tinterval

    • money

    • anyarray

關鍵字

6.0版本新增、修改、刪除了部分關鍵字。(資料庫物件的命名,不可以與關鍵字衝突)。

關鍵字不同的分類,含義不一樣。可以通過如下命令,查看所有關鍵字和具體分類。(4.3 和 6.0 版本均適用)。

select * from pg_get_keywords();

表 1. 關鍵字分類說明

catcode

catdesc

說明

U

unreserved

不保留,可以用於任何對象(視圖、表、函數、類型、索引、欄位、類型等)。

C

unreserved (cannot be function or type name)

不保留,但是不可用於函數、類型名。

T

reserved (can be function or type name)

保留,但是可用於函數、類型名。

R

reserved

保留,不可用於任何對象名稱。

表 2. 4.3版和6.0版本分類不同的關鍵字列表如下:

關鍵字

v4.3

v6.0

between

reserved

unreserved (cannot be function or type name)

collation

無

reserved (can be function or type name)

concurrently

unreserved

reserved (can be function or type name)

convert

unreserved (cannot be function or type name)

無

filter

reserved

unreserved

lateral

-

reserved

new

reserved

無

off

reserved

unreserved

old

reserved

無

percentile_cont

unreserved (cannot be function or type name)

無

percentile_disc

unreserved (cannot be function or type name)

無

range

reserved

unreserved

reindex

unreserved

reserved

rows

reserved

unreserved

sort

reserved

reserved (can be function or type name)

variadic

無

reserved

系統資料表

系統資料表在4.3版和6.0版中有部分區別,如果您的商務邏輯引用了以下系統資料表,請進行修改否則將引起報錯。

V4.3

V6.0

說明

pg_class.reltoastidxid

無

已刪除

pg_stat_activity.procpid

pg_stat_activity.pid

進程號

pg_stat_activity.current_query

pg_stat_activity.state

pg_stat_activity.query

拆分為兩列,state標識後端狀態,query標識當前執行的請求

gp_distribution_policy.attrnums

gp_distribution_policy.distkey

修改列名,且資料類型變int2vector

sesion_level_memory_consumption.__gp_localid

sesion_level_memory_consumption.__gp_masterid

無

已刪除

pg_filespace

pg_filespace_entry

無

已刪除

內建函數的參數

在6.0版本中,一些內建函數的參數發生了變化。

V4.3

V6.0

說明

int4_avg_accum(bytea, integer)

int4_avg_accum(bigint[], integer)

無

string_agg(expression)

string_agg(expression, delimiter)

把一個運算式變成字串

其他用法

名稱

V4.3

V6.0

left()函數

不支援

支援

update分布鍵

不支援

支援