insert into t_array select array[data_comp]::mytype[] from t_composite;
On Wed, Oct 25, 2017 at 5:25 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
"David G. Johnston" <david.g.johnston@gmail.com> writes: > On Wed, Oct 25, 2017 at 2:16 PM, Celia McInnis <celia.mcinnis@gmail.com> >> Got it, finally... >> insert into t_array select array[row((data_comp).*)::mytype[] from >> t_composite; >> >> I'm not sure why I need (data_comp).* rather than some of the other things >> that I tried and failed with...
> The unusual set of parentheses are so the parser interprets data_comp is > a column and not a table. Usually one write SELECT tbl.* FROM tbl so that > is the assumed meaning of "name".*
If data_comp is a column of a composite type, you probably don't need all that notation anyway --- seems like array[data_comp::my_type] or array[data_comp]::my_type[] ought to work.