diff options
-rw-r--r-- | doc/src/sgml/information_schema.sgml | 10 | ||||
-rw-r--r-- | src/backend/catalog/information_schema.sql | 7 |
2 files changed, 10 insertions, 7 deletions
diff --git a/doc/src/sgml/information_schema.sgml b/doc/src/sgml/information_schema.sgml index ab9ce2aa4a8..396d3e76365 100644 --- a/doc/src/sgml/information_schema.sgml +++ b/doc/src/sgml/information_schema.sgml @@ -2147,7 +2147,7 @@ <para> The view <literal>element_types</literal> contains the data type - descriptors of the elements of arrays. When a table column, + descriptors of the elements of arrays. When a table column, composite-type attribute, domain, function parameter, or function return value is defined to be of an array type, the respective information schema view only contains <literal>ARRAY</literal> in the column @@ -2212,9 +2212,11 @@ ORDER BY c.ordinal_position; <entry> The type of the object that uses the array being described: one of <literal>TABLE</literal> (the array is used by a column of - that table), <literal>DOMAIN</literal> (the array is used by - that domain), <literal>ROUTINE</literal> (the array is used by - a parameter or the return data type of that function). + that table), <literal>USER-DEFINED TYPE</literal> (the array is + used by an attribute of that composite type), + <literal>DOMAIN</literal> (the array is used by that domain), + <literal>ROUTINE</literal> (the array is used by a parameter or + the return data type of that function). </entry> </row> diff --git a/src/backend/catalog/information_schema.sql b/src/backend/catalog/information_schema.sql index 9334c7654d1..c7ccea33310 100644 --- a/src/backend/catalog/information_schema.sql +++ b/src/backend/catalog/information_schema.sql @@ -2467,12 +2467,13 @@ CREATE VIEW element_types AS FROM pg_namespace n, pg_type at, pg_namespace nbt, pg_type bt, ( - /* columns */ + /* columns, attributes */ SELECT c.relnamespace, CAST(c.relname AS sql_identifier), - 'TABLE'::text, a.attnum, a.atttypid + CASE WHEN c.relkind = 'c' THEN 'USER-DEFINED TYPE'::text ELSE 'TABLE'::text END, + a.attnum, a.atttypid FROM pg_class c, pg_attribute a WHERE c.oid = a.attrelid - AND c.relkind IN ('r', 'v', 'f') + AND c.relkind IN ('r', 'v', 'f', 'c') AND attnum > 0 AND NOT attisdropped UNION ALL |