

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の Python UDF は、2026 年 6 月 30 日まで引き続き機能します。詳細については、[ブログ記事](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)を参照してください。

# Amazon Redshift および PostgreSQL
<a name="c_redshift-and-postgres-sql"></a>

**Topics**
+ [Amazon Redshift、PostgreSQL JDBC および ODBC](c_redshift-postgres-jdbc.md)
+ [実装方法が異なる機能](c_redshift-sql-implementated-differently.md)
+ [サポートされていない PostgreSQL 機能](c_unsupported-postgresql-features.md)
+ [サポートされていない PostgreSQL データ型](c_unsupported-postgresql-datatypes.md)
+ [サポートされていない PostgreSQL 関数](c_unsupported-postgresql-functions.md)

Amazon Redshift は PostgreSQL に基づいています。Amazon Redshift と PostgreSQL の間には非常に重要な相違点がいくつかあり、データウェアハウスアプリケーションを設計して開発するときはそれを考慮する必要があります。

Amazon Redshift は、具体的には、大規模データセットに対して複雑なクエリを行う必要があるオンライン分析処理 (OLAP) アプリケーションおよびビジネスインテリジェンス (BI) アプリケーション向けに設計されています。Amazon Redshift は多種多様な要件に対処するため、Amazon Redshift で使用する専用のデータストレージスキーマおよびクエリ実行エンジンは PostgreSQL の実装とは完全に異なります。例えば、オンライントランザクション処理 (OLTP) アプリケーションが一般的にデータを行に保存する場合、Amazon Redshift は、最適なメモリ使用量とディスク I/O のために特殊なデータ圧縮エンコードを使用してデータを列に保存します。セカンダリインデックスおよび効率的な単一行データオペレーションなど、小規模な OLTP 処理に適した一部の PostgreSQL 機能はパフォーマンスを向上させるために省略されています。

Amazon Redshift データウェアハウスシステムのアーキテクチャの詳細については、[Amazon Redshift アーキテクチャ](c_redshift_system_overview.md) を参照してください。

PostgreSQL 9.x には、Amazon Redshift によってサポートされていない機能が一部含まれています。さらに、Amazon Redshift SQL と PostgreSQL との間には、認識しておく必要がある重要な違いがあります。このセクションでは、Amazon Redshift と PostgreSQL との違いに焦点を当てるとともに、SQL 実装を十分に活用したデータウェアハウスを開発するためのガイダンスを提供します。

# Amazon Redshift、PostgreSQL JDBC および ODBC
<a name="c_redshift-postgres-jdbc"></a>

 Amazon Redshift は PostgreSQL に基づいているため、以前は JDBC4 Postgresql のドライバーバージョン 8.4.703 および psqlODBC バージョン 9.x ドライバーを使用することをお勧めしました。これらのドライバーを現在使用している場合は、新しい Amazon Redshift 特定のドライバーに移行することをお勧めします。ドライバーと接続の設定の詳細については、「*Amazon Redshift 管理ガイド*」の「[Amazon Redshift 用の JDBC および ODBC ドライバー](https://docs.aws.amazon.com/redshift/latest/mgmt/configuring-connections.html#connecting-drivers)」を参照してください。

JDBC を使用して大きなデータセットを取得する際にユーザー側でメモリ不足エラーが発生することを避けるため、JDBC フェッチサイズパラメータを指定して、クライアントがデータをバッチ単位でフェッチするように設定できます。詳細については、「[JDBC フェッチサイズパラメータの設定](set-the-JDBC-fetch-size-parameter.md)」を参照してください。

Amazon Redshift は JDBC maxRows パラメータを認識しません。その代わり、結果セットを制限するには [LIMIT](r_ORDER_BY_clause.md#order-by-clause-limit) 句を指定します。また、[OFFSET](r_ORDER_BY_clause.md#order-by-clause-offset) 句を使用して結果セット内の特定の開始点にスキップすることもできます。

# 実装方法が異なる機能
<a name="c_redshift-sql-implementated-differently"></a>

Amazon Redshift SQL の多くの言語要素は、対応する PostgreSQL 実装とはパフォーマンス特性が異なり、使用する構文およびセマンティクスもまったく異なるものとなっています。

**重要**  
Amazon Redshift と PostgreSQL に含まれる共通要素のセマンティクスは同じであるとみなさないでください。判断しかねる差異については、*Amazon Redshift デベロッパーガイド*の [SQL コマンド](c_SQL_commands.md) を参照して確認してください。

具体的な例として [VACUUM](r_VACUUM_command.md) コマンドが挙げられます。これはテーブルのクリーンアップおよび再編成に使用されます。VACUUM は PostgreSQL バージョンの場合とは機能が異なり、異なるパラメータセットを使用します。Amazon Redshift での VACUUM の使用についての詳細は、[テーブルのバキューム処理](t_Reclaiming_storage_space202.md) を参照してください。

しばしば、データベース管理機能およびツールも異なることがあります。例えば、Amazon Redshift では、システムの稼働状況に関する情報を、一連のシステムテーブルおよびビューで確認できる仕組みになっています。詳細については、「[SYS モニタリングビュー](serverless_views-monitoring.md)」を参照してください。

Amazon Redshift 独自の実装を有する SQL 機能の例を以下に示します。
+  [CREATE TABLE](r_CREATE_TABLE_NEW.md) 

  Amazon Redshift では、テーブルスペース、テーブル分割、継承、および特定の制約をサポートしていません。Amazon Redshift の CREATE TABLE では、テーブルに対してソートおよびディストリビューションのアルゴリズムを定義することで、並列処理を最適化することができます。

  Amazon Redshift Spectrum では、[CREATE EXTERNAL TABLE](r_CREATE_EXTERNAL_TABLE.md) コマンドを使用したテーブルのパーティショニングをサポートしています。
+  [ALTER TABLE](r_ALTER_TABLE.md) 

  ALTER COLUMN アクションのサブセットのみがサポートされています。

  ADD COLUMN の場合、各 ALTER TABLE ステートメントで 1 つの列しか追加できません。
+  [COPY](r_COPY.md) 

  Amazon Redshift の COPY コマンドは、Amazon S3 バケットおよび Amazon DynamoDB テーブルからのデータのロードを可能にし、自動圧縮を容易にすることに特化されています。詳細については、「[Amazon Redshift でのデータのロード](t_Loading_data.md)」セクションおよび COPY コマンドリファレンスを参照してください。
+  [VACUUM](r_VACUUM_command.md) 

  VACUUM のパラメータは完全に異なります。例えば、PostgreSQL のデフォルトの VACUUM オペレーションは、単純に領域を再利用し、再び使用できるようにするだけです。一方で、Amazon Redshift のデフォルトの VACUUM オペレーションは VACUUM FULL です。これは、ディスク領域を再利用し、すべての行を再ソートします。
+ VARCHAR 値の末尾のスペースは、文字列値の比較時に無視されます。詳細については、「[末尾の空白の重要性](r_Character_types.md#r_Character_types-significance-of-trailing-blanks)」を参照してください。

# サポートされていない PostgreSQL 機能
<a name="c_unsupported-postgresql-features"></a>

Amazon Redshift でサポートされていないこれらの PostgreSQL 機能を示します。

**重要**  
Amazon Redshift と PostgreSQL に含まれる共通要素のセマンティクスは同じであるとみなさないでください。判断しかねる差異については、*Amazon Redshift デベロッパーガイド*の [SQL コマンド](c_SQL_commands.md) を参照して確認してください。
+ クエリツール *psql* はサポートされていません。[Amazon Redshift RSQL](https://docs.aws.amazon.com/redshift/latest/mgmt/rsql-query-tool.html) クライアントはサポートされています。
+ テーブル分割 (範囲およびリストの分割)
+ テーブルスペース
+ 制約
  + Unique
  + 外部キー
  + 主キー
  + 検査制約
  + 排他制約

  一意制約、主キー制約、および外部キー制約は許可されますが、情報提供専用です。これらの制約はシステムでは実施されませんが、クエリプランナーによって使用されます。
+ 継承
+ PostgreSQL システム列

  Amazon Redshift SQL ではシステム列を暗黙的に定義しません。ただし、PostgreSQL システム列の名前 `oid`、`tableoid`、`xmin`、`cmin`、`xmax`、`cmax`、および `ctid` を、ユーザー定義の列の名前として使用することはできません。詳細については、[https://www.postgresql.org/docs/8.0/static/ddl-system-columns.html](https://www.postgresql.org/docs/8.0/static/ddl-system-columns.html) を参照してください。
+ インデックス
+ ウィンドウ関数の NULLS 句
+ 照合

  Amazon Redshift では、ロケール固有の照合順序またはユーザー定義の照合順序をサポートしていません。「[照合順序](c_collation_sequences.md)」を参照してください。
+ 値式
  + 添字付き式
  + 配列コンストラクタ
  + 行コンストラクタ
+ トリガー
+ 外部データの管理 (SQL/MED)
+ テーブル関数
+ 定数テーブルとして使用される VALUES リスト
+ シーケンス
+ フルテキスト検索
+ RULE および TRIGGER アクセス許可。

  Amazon Redshift は、GRANT ALL または REVOKE ALL を実行するときにこれらのアクセス許可を付与または取り消しますが、RULE と TRIGGER アクセス許可の有無は、いかなる場合も被付与者のアクセス許可に影響しません。

# サポートされていない PostgreSQL データ型
<a name="c_unsupported-postgresql-datatypes"></a>

一般にクエリは、サポートされていないデータ型 (明示的または暗黙的なキャストなど) の使用を試みると、エラーを返します。ただし、サポートされていないデータ型を使用する一部のクエリはリーダーノードで実行されますが、コンピューティングノードでは実行されません。「[リーダーノードでサポートされる SQL 関数](c_sql-functions-leader-node.md)」を参照してください。

 サポートされているデータ型のリストについては、「[データ型](c_Supported_data_types.md)」を参照してください。

Amazon Redshift でサポートされていないこれらの PostgreSQL データタイプを示します。
+ 配列
+ BIT、BIT VARYING
+ BYTEA
+ コンポジット型
+ 列挙型
+ ジオメトリ型 (ジオメトリ型の Amazon Redshift 実装は PostgreSQL とは異なります)
+ HSTORE
+ JSON
+ ネットワークアドレス型
+ 数値型
  + SERIAL、BIGSERIAL、SMALLSERIAL
  + MONEY
+ オブジェクト識別子型
+ 疑似型
+ 範囲型
+ 特殊な文字型
  + "char" – シングルバイトの内部型 (char というデータ型は引用符で囲まれている)。
  + name – オブジェクト名の内部型。

  このような型の詳細については、PostgreSQL ドキュメントの「[特殊な文字型](https://www.postgresql.org/docs/8.0/datatype-character.html)」を参照してください。
+ テキスト検索型
+ TXID\$1SNAPSHOT
+ UUID
+ XML

# サポートされていない PostgreSQL 関数
<a name="c_unsupported-postgresql-functions"></a>

サポートされている関数もその多くは、PostgreSQL とセマンティクスや用途が異なります。例えば、サポートされている関数の中にはリーダーノードでしか実行されないものがあります。また、サポートされていない関数の中には、リーダーノードで実行された場合、エラーを返さないものがあります。いくつかのケースでこれらの関数がエラーを返さないからといって、関数が Amazon Redshift によってサポートされていると受け取るべきではありません。

**重要**  
Amazon Redshift と PostgreSQL に含まれる共通要素のセマンティクスは同じであるとみなさないでください。判断しかねる差異については、*Amazon Redshift データベースデベロッパーガイド*の [SQL コマンド](c_SQL_commands.md) を参照して確認してください。

 詳細については、「[リーダーノードでサポートされる SQL 関数](c_sql-functions-leader-node.md)」を参照してください。

Amazon Redshift でサポートされていないこれらの PostgreSQL 機能を示します。
+ アクセス特権照会関数
+ アドバイザリロック関数
+ 集計関数
  + STRING\$1AGG()
  + ARRAY\$1AGG()
  + EVERY()
  + XML\$1AGG()
  + CORR()
  + COVAR\$1POP()
  + COVAR\$1SAMP()
  + REGR\$1AVGX()、REGR\$1AVGY()
  + REGR\$1COUNT()
  + REGR\$1INTERCEPT()
  + REGR\$1R2()
  + REGR\$1SLOPE()
  + REGR\$1SXX()、REGR\$1SXY()、REGR\$1SYY()
+ 配列関数と演算子
+ バックアップ管理関数
+ コメント情報関数
+ データベースオブジェクト位置関数
+ データベースオブジェクトサイズ関数
+ 日付/時刻関数と演算子
  + CLOCK\$1TIMESTAMP()
  + JUSTIFY\$1DAYS()、JUSTIFY\$1HOURS()、JUSTIFY\$1INTERVAL()
  + PG\$1SLEEP()
  + TRANSACTION\$1TIMESTAMP()
+ ENUM サポート関数
+ 幾何関数と演算子
+ 汎用ファイルアクセス関数
+ IS DISTINCT FROM
+ ネットワークアドレス関数と演算子
+ 数学関数
  + DIV()
  + SETSEED()
  + WIDTH\$1BUCKET()
+ セットを返す関数
  + GENERATE\$1SERIES()
  + GENERATE\$1SUBSCRIPTS()
+ 範囲関数と演算子
+ リカバリ制御関数
+ リカバリ情報関数
+ ROLLBACK\$1TO\$1SAVEPOINT 関数
+ スキーマ可視性照会関数
+ サーバーシグナリング関数
+ スナップショット同期関数
+ シーケンス操作関数
+ 文字列関数
  + BIT\$1LENGTH()
  + OVERLAY()
  + CONVERT()、CONVERT\$1FROM()、CONVERT\$1TO()
  + ENCODE()
  + FORMAT()
  + QUOTE\$1NULLABLE()
  + REGEXP\$1MATCHES()
  + REGEXP\$1SPLIT\$1TO\$1ARRAY()
  + REGEXP\$1SPLIT\$1TO\$1TABLE()
+ システムカタログ情報関数
+ システム情報関数
  + CURRENT\$1CATALOG CURRENT\$1QUERY()
  + INET\$1CLIENT\$1ADDR()
  + INET\$1CLIENT\$1PORT()
  + INET\$1SERVER\$1ADDR() INET\$1SERVER\$1PORT()
  + PG\$1CONF\$1LOAD\$1TIME()
  + PG\$1IS\$1OTHER\$1TEMP\$1SCHEMA()
  + PG\$1LISTENING\$1CHANNELS()
  + PG\$1MY\$1TEMP\$1SCHEMA()
  + PG\$1POSTMASTER\$1START\$1TIME()
  + PG\$1TRIGGER\$1DEPTH()
  + SHOW VERSION()
+ テキスト検索関数と演算子
+ トランザクション ID およびスナップショット関数
+ トリガー関数
+ XML 関数