Re: BUG #14330: can not select into `composite data types` in plpgsql

From: Pavel Stehule <pavel(dot)stehule(at)gmail(dot)com>
To: 自己 <zoulx1982(at)163(dot)com>
Cc: "pgsql-bugs(at)postgresql(dot)org" <pgsql-bugs(at)postgresql(dot)org>
Subject: Re: BUG #14330: can not select into `composite data types` in plpgsql
Date: 2016-09-21 10:30:31
Message-ID: CAFj8pRBOUNfTJ9h91sb4q8PPrHm4rS4WS3+B3813tfZRjVs-Tg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-bugs

Hi

2016-09-21 10:08 GMT+02:00 自己 <zoulx1982(at)163(dot)com>:

> > It is not bug - although I understand so this behave is not unfriendly.
> The pattern composite var := composite value is not supported due possible
> ambiguous
> > assignment internally in PLpgSQL implementation.
>
> Thank you for your reply.
> It seems work well for the pattern "composite var := composite value" in
> plpgsql body, but not in declare sestion(default value).
> Besides this, i want to know if i want to implement this pattern, which
> part is difficult?
>

the result of SQL query is result set. when you use composite type, then
result will be nested compose type. But you don't have simply access to
original query, and you don't know if you should or should not do unnesting.

Regards

Pavel Stehule

>
>
> 2016-09-21 15:12:33,"Pavel Stehule" <pavel(dot)stehule(at)gmail(dot)com>
>
> Hi
>
> 2016-09-21 5:51 GMT+02:00 <zoulx1982(at)163(dot)com>:
>
>> The following bug has been logged on the website:
>>
>> Bug reference: 14330
>> Logged by: lx zou
>> Email address: zoulx1982(at)163(dot)com
>> PostgreSQL version: 9.5.1
>> Operating system: win7 6.1.7601
>> Description:
>>
>> Hi,
>> when i use composite type in plpgsql, i found it does't work when i
>> select a composite type column into a composite type variable.
>> But it can work well when i use another style like this:
>> select (y).a,(y).b into tmp from t....
>> following is a full example. Thanks.
>>
>> create type mytype(a int, b text);
>> create table mytab(x int, y mytype);
>> insert into mytab values(1, (1, 'abcd'));
>> do $$
>> declare
>> tmp mytype;
>> begin
>> --ERROR: invalid input syntax for integer: "(1,asddd)"
>> --CONTEXT: PL/pgSQL function inline_code_block line 6 at SQL
>> statement
>> select y into strict tmp from mytab;
>> raise notice '%,%', (tmp).a, (tmp).b;
>> end;
>> $$;
>>
>
> It is not bug - although I understand so this behave is not unfriendly.
> The pattern composite var := composite value is not supported due possible
> ambiguous assignment internally in PLpgSQL implementation.
>
> Regards
>
> Pavel Stehule
>
>
>>
>> It is no
>>
>> --
>> Sent via pgsql-bugs mailing list (pgsql-bugs(at)postgresql(dot)org)
>> To make changes to your subscription:
>> http://www.postgresql.org/mailpref/pgsql-bugs
>>
>
>
>
>
>

In response to

Browse pgsql-bugs by date

  From Date Subject
Next Message Lou Picciano 2016-09-21 11:16:10 Re: BUG #14329: libpq doesn't send complete client certificate chain on first SSL connection
Previous Message Devrim Gündüz 2016-09-21 10:17:36 Re: pgdg94 conflicts with RHEL 6.8