このトピックでは、AnalyticDB for PostgreSQL V4.3とV6.0の互換性の比較について説明します。 AnalyticDB for PostgreSQLインスタンスをV4.3からV6.0にアップグレードする場合は、必要な調整を行う必要があります。
クエリオプティマイザー
項目 | V4.3 | V6.0 |
既定のクエリオプティマイザ | レガシー | オルカ |
AnalyticDB for PostgreSQL V4.3とV6.0はどちらも、レガシーおよびORCAクエリオプティマイザをサポートしています。 これらのクエリオプティマイザの詳細については、「クエリオプティマイザの選択」をご参照ください。
エスケープ文字
AnalyticDB for PostgreSQL V6.0では、文字列内の
バックスラッシュ (\)
はエスケープ文字として使用されません。次の文を実行すると、バックスラッシュ (\) をエスケープ文字として使用できます。 ただし、この操作は実行しないことをお勧めします。
set standard_conforming_strings = off;
説明上記のステートメントは、セッションでのみ使用できます。 このステートメントをAnalyticDB for PostgreSQLインスタンスに使用する場合は、チケットを起票し、AnalyticDB for PostgreSQLのテクニカルサポートにリクエストして、要件に基づいてエスケープ文字を設定します。
データ型変換
AnalyticDB for PostgreSQL V6.0は、
YYYYMMDDHH24MISS
形式の文字列をタイムスタンプに自動的に変換しません。 このような変換を実行するには、to_timestamp /To_char
組み込み関数を使用します。V4.3と比較して、AnalyticDB for PostgreSQL V6.0は数値データ型を暗黙的にTEXTに変換しません。 AnalyticDB for PostgreSQLをV4.3からV6.0にアップグレードした後、元のSQL文に関数を追加して、数値データ型をTEXTに変換する必要があります。 例:
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;
関数to_date(timestamp、text) を作成または置換
create or replace function to_date(timestamp, text) returns date as $$ select to_date($1::text,$2); $$ language sql IMMUTABLE strict;
関数to_date(integer、text) を作成または置換
create or replace function to_date(integer, text) returns date as $$ select to_date($1::text,$2); $$ language sql IMMUTABLE strict;
データ型を暗黙的にTEXTに変換する必要があるSQL文または関数を手動で書き換える必要があります。
外部テーブルのエラーログ
AnalyticDB for PostgreSQL V6.0では、CREATE EXTERNAL table
またはCOPY
ステートメントでINTO error_TABLE
句を使用することはできません。 代わりに、組み込み関数を使用して外部テーブルのエラーログを操作できます。
gp_read_error_log('$external_table')
gp_truncate_error_log('$external_table')
データ型
NUMERICファイルの格納形式を変更すると、対応するディスク容量が影響を受けます。
MONEYデータ型を32ビットから64ビットに変更すると、対応するディスク容量が影響を受けます。
AnalyticDB for PostgreSQL V6.0では、配布キーに次のデータ型を使用することはできません。
欠勤
reltime
tinterval
money
anyarray
キーワード
AnalyticDB for PostgreSQL V6.0は、いくつかのキーワードを追加、変更、および削除します。 データベースオブジェクトの名前はキーワードと同じにすることはできません。
キーワードの使用はカテゴリによって異なります。 次のステートメントを実行して、AnalyticDB for PostgreSQL V4.3とV6.0の両方のすべてのキーワードとそのカテゴリを表示できます。
select * from pg_get_keywords();
表 1. 次の表に、キーワードカテゴリを示します。
カテゴリコード | カテゴリ | 説明 |
U | 未予約 | 予約なし このカテゴリのキーワードは、ビュー、テーブル、関数、インデックス、フィールド、およびタイプを含むすべてのオブジェクトの名前として使用できます。 |
C | unreserved (関数またはタイプ名にすることはできません) | 予約なし このカテゴリのキーワードは、関数や型を除くオブジェクトの名前として使用できます。 |
T | reserved (関数またはタイプ名を指定できます) | 予約済みです。 このカテゴリのキーワードは、関数や型以外のオブジェクトの名前としては使用できません。 |
R | 予約済み | 予約済みです。 このカテゴリのキーワードは、オブジェクトの名前として使用できません。 |
表2. 次の表に、AnalyticDB for PostgreSQL V4.3とV6.0の異なるカテゴリに分類されるキーワードを示します。
キーワード | V4.3 | V6.0 |
間 | 予約済み | unreserved (関数またはタイプ名にすることはできません) |
照合 | なし | reserved (関数またはタイプ名を指定できます) |
同時に | 未予約 | reserved (関数またはタイプ名を指定できます) |
変換 | unreserved (関数またはタイプ名にすることはできません) | なし |
フィルター | 予約済み | 未予約 |
横方向 | 非該当 | 予約済み |
新しい | 予約済み | なし |
オフ | 予約済み | 未予約 |
古い | 予約済み | なし |
パーセンタイル_cont | unreserved (関数またはタイプ名にすることはできません) | なし |
パーセンタイル_ディスク | unreserved (関数またはタイプ名にすることはできません) | なし |
範囲 | 予約済み | 未予約 |
reindex | 未予約 | 予約済み |
行 | 予約済み | 未予約 |
並べ替え | 予約済み | reserved (関数またはタイプ名を指定できます) |
variadic | なし | 予約済み |
システムテーブル
一部のシステムテーブルは、AnalyticDB for PostgreSQL V4.3とV6.0を区別します。 ビジネスロジックが次のシステムテーブルを参照する場合は、エラーを回避するために参照先のシステムテーブルを変更する必要があります。
V4.3 | V6.0 | 説明 |
pg_class.reltoastidxid | なし | AnalyticDB for PostgreSQL V6.0はこのテーブルをサポートしていません。 |
pg_stat_activity.procpid | pg_stat_activity.pid | AnalyticDB for PostgreSQL V6.0では、列名がprocpidからpidに変更されます。 |
pg_stat_activity.current_query | pg_stat_activity.state pg_stat_activity.query | AnalyticDB for PostgreSQL V6.0は、サーバープロセスの現在のアクティビティを2列に表示します。 state列には、バックエンドの現在の全体的な状態が表示されます。 クエリ列には、現在実行中のクエリが表示されます。 |
gp_distribution_policy.attrnums | gp_distribution_policy.distkey | AnalyticDB for PostgreSQL V6.0では、列名がattrnumsからdistkeyに変更され、この列のデータ型がint2vectorに変更されます。 |
setion_level_memory_consumption.__gp_localid setion_level_memory_consumption.__gp_masterid | なし | AnalyticDB for PostgreSQL V6.0はこれらのテーブルをサポートしていません。 |
pg_filespace pg_filespace_entry | なし | AnalyticDB for PostgreSQL V6.0はこれらのテーブルをサポートしていません。 |
組み込み関数のパラメータ
AnalyticDB for PostgreSQL V6.0は、一部の組み込み関数のパラメーターを変更します。
V4.3 | V6.0 | 説明 |
int4_avg_accum(bytea, integer) | int4_avg_accum(bigint[] 、整数) | なし |
string_agg (式) | string_agg (式、区切り文字) | AnalyticDB for PostgreSQL V6.0では、string_agg関数を使用して式を文字列に変換できます。 |
その他の比較
項目 | V4.3 | V6.0 |
LEFT() 関数 | 非対応 | 対応 |
配布キー列のUPDATE操作 | 非対応 | 対応 |