32.16. element_types

element_typesには、配列の要素のデータ型記述子が含まれます。 テーブル列、ドメイン、関数パラメータ、関数の戻り値が配列型であると宣言された場合、 情報スキーマの各ビューでは、data_type列にARRAYだけが含まれます。 配列の要素の型についての情報を取り出すには、各ビューとこのビューを結合することで可能です。 例えば、テーブルの列のデータ型と、もし適切ならば、配列の要素型を表示するには、以下のように行います。

SELECT c.column_name, c.data_type, e.data_type AS element_type
FROM information_schema.columns c LEFT JOIN information_schema.element_types e
     ON ((c.table_catalog, c.table_schema, c.table_name, 'TABLE', c.dtd_identifier)
       = (e.object_catalog, e.object_schema, e.object_name, e.object_type, e.array_type_identifier))
WHERE c.table_schema = '...' AND c.table_name = '...'
ORDER BY c.ordinal_position;

このビューは、所有者であるとか、適切な権限を持っているなどの方法で、現在のユーザがアクセスできるオブジェクトのみが含まれます。

表 32-14. element_types の列

名前データ型説明
object_catalogsql_identifier記述される配列を使用するオブジェクトを持つデータベースの名前です。 (常に現在のデータベースです。)
object_schemasql_identifier記述される配列を使用するオブジェクトを持つスキーマの名前です。
object_namesql_identifier記述される配列を使用するオブジェクトの名前です。
object_typecharacter_data記述される配列を使用するオブジェクトの種類です。 TABLE (その配列がテーブルの列によって使用される)、DOMAIN(その配列がドメインによって使用される)、ROUTINE(その配列が関数のパラメータ、もしくは、戻り値の型によって使用される)のいずれかです。
array_type_identifiersql_identifier記述される配列のデータ型記述子の識別子です。 これを使用して、他の情報スキーマのビューのdtd_identifier列と結合することができます。
data_typecharacter_data組み込み型の場合は配列要素のデータ型です。さもなくば、USER-DEFINED です。 (この場合、型はudt_name と関連する列で識別されます。)
character_maximum_lengthcardinal_number常にNULLです。 この情報は、PostgreSQLにおける配列要素のデータ型にはあてはまらないからです。
character_octet_lengthcardinal_number常にNULLです。 この情報は、PostgreSQLにおける配列要素のデータ型にはあてはまらないからです。
character_set_catalogsql_identifierPostgreSQLで利用できない機能に適用されるものです。
character_set_schemasql_identifierPostgreSQLで利用できない機能に適用されるものです。
character_set_namesql_identifierPostgreSQLで利用できない機能に適用されるものです。
collation_catalogsql_identifierPostgreSQLで利用できない機能に適用されるものです。
collation_schemasql_identifierPostgreSQLで利用できない機能に適用されるものです。
collation_namesql_identifierPostgreSQLで利用できない機能に適用されるものです。
numeric_precisioncardinal_number常にNULLです。 この情報は、PostgreSQLにおける配列要素のデータ型にはあてはまらないからです。
numeric_precision_radixcardinal_number常にNULLです。 この情報は、PostgreSQLにおける配列要素のデータ型にはあてはまらないからです。
numeric_scalecardinal_number常にNULLです。 この情報は、PostgreSQLにおける配列要素のデータ型にはあてはまらないからです。
datetime_precisioncardinal_number常にNULLです。 この情報は、PostgreSQLにおける配列要素のデータ型にはあてはまらないからです。
interval_typecharacter_data常にNULLです。 この情報は、PostgreSQLにおける配列要素のデータ型にはあてはまらないからです。
interval_precisioncharacter_data常にNULLです。 この情報は、PostgreSQLにおける配列要素のデータ型にはあてはまらないからです。
domain_defaultcharacter_data未実装です。
udt_catalogsql_identifier要素のデータ型を定義したデータベースの名前です。 (常に現在のデータベースです。)
udt_schemasql_identifier要素のデータ型を定義したスキーマの名前です。
udt_namesql_identifier要素のデータ型の名前です。
scope_catalogsql_identifierPostgreSQLで利用できない機能に適用されるものです。
scope_schemasql_identifierPostgreSQLで利用できない機能に適用されるものです。
scope_namesql_identifierPostgreSQLで利用できない機能に適用されるものです。
maximum_cardinalitycardinal_number常にNULLです。 PostgreSQLにおける最大次数は常に無制限だからです。
dtd_identifiersql_identifier要素のデータ型記述子の識別子です。 これは現時点では有用ではありません。