Hello,
Is there a way to construct write an _expression_ that constructs a record with with named columns. Specificially without the need for a corresponding named type.
That is
postgres=# select row(1, 2, 3);
row
---------
(1,2,3)
(1 row)
Creates a unnamed record type. And indeed it is for example not possible to expand it:
postgres=# select (row(1, 2, 3)).*;
ERROR: record type has not been registered
On the other hand columns listed in a multi column select clause create a row type that is expandable and named:
postgres=# select ((bar.*).x).a from (select x from (select 1 as a, 2 as b) x) bar;
a
---
1
(1 row)
But it seems to not be possible to do so without a from clause:
postgres=# select ((select x from (select 1 as a, 2 as b) x)).a;
ERROR: syntax error at or near "."
LINE 1: select ((select x from (select 1 as a, 2 as b) x)).a;
^
postgres=# select ((select x from (select 1 as a, 2 as b) x)).*;
ERROR: syntax error at or near "."
LINE 1: select ((select x from (select 1 as a, 2 as b) x)).*;
So named anonymous records / row types seem to be strangely second class. Can somebody clarify the restrictions and rationale or even better show a way to do the equivalent of (made up syntax ahead):
select row(1 as a, 2 as b);
Cheers,
Bene