I'd like to somehow get the name of all columns in this new table.
You can create a temporary view, which registers the row type. Then query either the information schema like you tried or the system catalog pg_attribute
:
CREATE TEMP VIEW tmp_v1 AS SELECT ...; -- your query here
SELECT attname
FROM pg_attribute
WHERE attrelid = 'pg_temp.tmp_v1'::regclass;
Returns the desired list of column names.
Catalog tables or information schema? See:
The temporary view is only visible inside your current session and dropped at its end. (Or you can drop it manually.)
In psql you could use the meta-command \gdesc
:
test=# SELECT 1 AS foo \gdesc
Column | Type
--------+---------
foo | integer
\gdesc
Shows the description (that is, the column names and data types) of the result of the current query buffer. The query is not actually executed; however, if it contains some type of syntax error, that error will be reported in the normal way.
If the current query buffer is empty, the most recently sent query is described instead.
So you can even execute a bare \gdesc
after running the query to get a "table description" for the executed query.