メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

リーダーノードでサポートされる SQL 関数

Amazon Redshift クエリは配布され、コンピューティングノードで実行されるものもあれば、リーダーノードのみで実行されるものもあります。

ユーザーによって作成されたテーブルまたはシステムテーブル (STL または STV プレフィックスが付いたテーブル、SVL または SVV プレフィックスが付いたシステムビュー) をクエリが参照するたびに、リーダーノードは SQL をコンピューティングノードに配布します。リーダーノード上の PG プレフィックス付きカタログ テーブル (PG_TABLE_DEF など) のみを参照するクエリや、いずれのテーブルも参照しないクエリは、リーダーノード上で排他的に実行されます。

Amazon Redshift SQL 関数の中にはリーダーノードのみでサポートされるものがあり、コンピューティングノードではサポートされません。リーダーノード専用関数を使用するクエリは、コンピューティングノードではなくリーダーノードのみで実行される必要があり、そうでなければエラーが返されます。

リーダーノードで排他的に実行されるべき関数がユーザー定義テーブルまたは Amazon Redshift システムテーブルを参照した場合、ドキュメントにメモとして説明されているとおり、エラーが返されます。リーダーノードで排他的に実行される関数については、「リーダーノード専用関数」を参照してください。

CURRENT_SCHEMA 関数は、リーダーノード専用の関数です。この例では、クエリはテーブルを参照しないのでリーダーノードで排他的に実行されます。

Copy to clipboard
select current_schema();

結果は次のようになります。

Copy to clipboard
current_schema --------------- public (1 row)

次の例に示すクエリは、システムカタログテーブルを参照するので、リーダーノードで排他的に実行されます。

Copy to clipboard
select * from pg_table_def where schemaname = current_schema() limit 1; schemaname | tablename | column | type | encoding | distkey | sortkey | notnull ------------+-----------+--------+----------+----------+---------+---------+--------- public | category | catid | smallint | none | t | 1 | t (1 row)

次の例に示すクエリは、コンピューティングノード上の Amazon Redshift システムテーブルを参照するので、エラーを返します。

Copy to clipboard
select current_schema(), userid from users; INFO: Function "current_schema()" not supported. ERROR: Specified types or functions (one per INFO message) not supported on Amazon Redshift tables.

このページの内容: