Re: Couldn't cast to record[]

Поиск
Список
Период
Сортировка
От Suresh Kumar R
Тема Re: Couldn't cast to record[]
Дата
Msg-id CAH+y2+bvJu+Ng2rWx_hsnEMZ0HEcPX+XgAhQVg4FwJTZUV=0bg@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Couldn't cast to record[]  (Merlin Moncure <mmoncure@gmail.com>)
Ответы Re: Couldn't cast to record[]  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-general
Hi Merlin,
   I needed this because, I use postgres backend along with golang using pgx driver. When i query address i need to specify OID of address[](composite type). In my case i couldnt find the oid of that type since its dynamic. Needed generic type so needed to cast to record[] which has constant oid.

With regards 
Suresh kumar R

On Fri, 4 Mar, 2022, 11:28 pm Merlin Moncure, <mmoncure@gmail.com> wrote:
On Thu, Mar 3, 2022 at 4:01 AM Suresh Kumar R
<suresh.arsenal29@gmail.com> wrote:
>
> Hi, I created an table with composite type array as datatype for one column.
> When I query that table I need the pg_typeof(column) as record[] instead of
> composite_type[].
> I tried creating a separate function and returning record[], but below error
> is thrown,
>
> ERROR:  PL/pgSQL functions cannot return type record[]
>
> Below is sample for my requirement.
>
> pali=# create type address as (number bigint, city varchar);
> CREATE TYPE
> pali=# create table person(name varchar, addresses address[]);
> CREATE TABLE
> pali=# insert into person values ('Michael', array[(82, 'NYC'),(24,
> 'Dunkirk')]::address[]);
> INSERT 0 1
> pali=# select pg_typeof(addresses::record[]) from person ;
>  pg_typeof
> -----------
>  address[]
>
> Here I expect record[] instead of address[].


Why do you think you need this? If you need variant record storage,
you probably want to go to jsonb, then use jsonb_populate_recordset to
convert back to specific type.

merlin

В списке pgsql-general по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Interesting fail when migrating Pg from Ubuntu Bionic to Focal
Следующее
От: obi reddy
Дата:
Сообщение: REG:DR DRILL