Add composite-type attributes to information_schema.element_types view

This commit is contained in:
Peter Eisentraut 2011-06-28 16:07:23 +03:00
parent c533c1477f
commit 5594d14696
2 changed files with 10 additions and 7 deletions

View File

@ -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>

View File

@ -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