Re: [GENERAL] How do I insert and update into a table of arrays ofcomposite types via a select command? - Mailing list pgsql-general

From Celia McInnis
Subject Re: [GENERAL] How do I insert and update into a table of arrays ofcomposite types via a select command?
Date
Msg-id CAGD6t7+1NjbZxp0FuqreXDzFHk=0pirAnYr-dNZB-DVVXPqOOg@mail.gmail.com
Whole thread Raw
In response to Re: [GENERAL] How do I insert and update into a table of arrays of composite types via a select command?  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-general
Thanks Tom - I saw how to do that for specified data, but I want to select the elements from a table of composite and don't know how to do that. I can't do insertions manually of each row separately! So how do I get material from my table of composite values into my table of array values?

I am running postgresql 9.6.2.



On Wed, Oct 25, 2017 at 3:47 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Celia McInnis <celia.mcinnis@gmail.com> writes:
> My first question is: HOW do I populate this table, at first with arrays
> containing one element from the t_composite table?
> I have tried various things with no success.

You didn't say what you tried, but I imagine it was something like

regression=# insert into t_array select array[row('a','b','c'),row('d','e','f')];
ERROR:  column "data_array" is of type mytype[] but expression is of type record[]
LINE 1: insert into t_array select array[row('a','b','c'),row('d','e...
                                   ^
HINT:  You will need to rewrite or cast the expression.

Like it says, you need a cast.  You can either cast the array elements
individually:

regression=# insert into t_array select array[row('a','b','c')::mytype,row('d','e','f')::mytype];
INSERT 0 1

or just cast the whole ARRAY[] construct:

regression=# insert into t_array select array[row('a','b','c'),row('d','e','f')]::mytype[];
INSERT 0 1

although I think the latter only works in relatively late-model
Postgres, and it might make parsing a bit slower too.

                        regards, tom lane

pgsql-general by date:

Previous
From: Rob Sargent
Date:
Subject: [GENERAL] query not scaling
Next
From: Celia McInnis
Date:
Subject: Re: [GENERAL] How do I insert and update into a table of arrays ofcomposite types via a select command?