On 9/14/18 2:35 PM, Sebastian P. Luque wrote:
> Hello,
>
> I'm trying to generate a table with information on columns from a
> temporary view that simply selects a subset of columns from a persistent
> view in a given schema. The persistent view joins a number of tables
> with columns that may or may not have a description entered. I need a
> table with a list of columns from the temporary view, and the matching
> descriptions from the underlying persistent view.
>
> Here's my attempt at listing the temporary view's columns and respective
> descriptions:
>
> SELECT cols.ordinal_position, cols.column_name,
> col_description(cl.oid, cols.ordinal_position::INT)
> FROM pg_class cl, information_schema.columns cols
> WHERE cols.table_catalog='dbname' AND cols.table_schema='some_schema' AND
> cols.table_name = 'persistent_view' AND cols.table_name = cl.relname
> ORDER BY cols.ordinal_position::INT;
>
> The problem, of course, is that it lists columns from the persistent
> view, instead of the subset of them in the temporary view. Is there a
> better way to do that? Hopefully this makes sense.
create temp view c_data as select source_id, geography_desc from
catfish_data ;
\d c_data
View "pg_temp_3.c_data"
Column | Type | Collation | Nullable | Default
----------------+-------------------+-----------+----------+---------
source_id | integer | | |
geography_desc | character varying |
SELECT cols.ordinal_position, cols.column_name,
col_description(cl.oid, cols.ordinal_position::INT)
FROM pg_class cl, information_schema.columns cols
WHERE cols.table_catalog='aquaculture' AND cols.table_schema ilike
'pg_temp%' AND
cols.table_name = 'c_data' AND cols.table_name = cl.relname
ORDER BY cols.ordinal_position::INT;
ordinal_position | column_name | col_description
------------------+----------------+-----------------
1 | source_id | NULL
2 | geography_desc | NULL
>
> Thanks,
> --
> Seb
>
>
--
Adrian Klaver
adrian.klaver@aklaver.com