Re: [HACKERS] proposal: PLpgSQL parallel assignemnt

Поиск
Список
Период
Сортировка
От Pavel Stehule
Тема Re: [HACKERS] proposal: PLpgSQL parallel assignemnt
Дата
Msg-id CAFj8pRDZU=A=ZmRe_P4kWoM1m=y+hQom60OkNgT-y6FpsH_WFw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: [HACKERS] proposal: PLpgSQL parallel assignemnt  (Pavel Stehule <pavel.stehule@gmail.com>)
Список pgsql-hackers


2017-06-02 19:05 GMT+02:00 Pavel Stehule <pavel.stehule@gmail.com>:


2017-06-02 10:15 GMT+02:00 Pavel Stehule <pavel.stehule@gmail.com>:


2017-06-02 10:06 GMT+02:00 Craig Ringer <craig@2ndquadrant.com>:
On 2 June 2017 at 15:51, Pavel Stehule <pavel.stehule@gmail.com> wrote:

> a, b := fx();
>
> Comments, notes, ideas?

I'd be pretty happy to have

(a, b) = (x, y);
(a, b) = f(x);

which is SQL-esque.

This is not too far to my proposal - and it is fully adequate alternative. 

The ANSI form is related to SET or UPDATE commands - so in this case I see classic languages style https://en.wikipedia.org/wiki/Assignment_(computer_science) better. The assign statement in PLpgSQL is not related to embedded SQL. If we introduce SQL syntax and SET commands for schema variables then ( ) syntax is perfect, but for := PLpgSQL I am not sure

It is maybe strange, but

SET (a,b) =  (SELECT a,b FROM foo)

a, b := fx()

are sentences from two independent worlds and different syntax can be correct (depends how much we would to integrate procedural and SQL worlds .. 100% T-SQL, 80% SQL/PSM, ..20% PLpgSQL or 5%PL/SQL)

More thoughts:
 
1. syntax (a,b) := f() ... can mean - assign record to temporary composite (a,b)
2. syntax a,b := f() ... can mean - unpack result composite and assign to a, b fields

so both syntaxes has sense although we don't introduce relation to SQL - on this way

a,b := 10, 20   -- ok .. attach a=c1, b=c2
a,b := (10,20)  -- ok .. attach a = r.c1, b = r.c2
(a,b) := (10,20) -- ok  attach ct = rt
(a,b) := 10,20 -- ok attach ct = row(c1, c2)

@1 syntax says "create composite target", @2 syntax says "unpack result". Both should to work. Personally I prefer @1 .. due less parenthesis 

Regards

Pavel



Regards

Pavel
 
 

But what, if anything, does Ada do?

What I know, no, Ada has not this statement - but the design of OUT parameters in Ada absolutely different than PostgreSQL - so in this case we cannot to use Ada language as our base :(

Regards

Pavel
 

--
 Craig Ringer                   http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services



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

Предыдущее
От: J Chapman Flack
Дата:
Сообщение: Re: [HACKERS] TAP: allow overriding PostgresNode in get_new_node
Следующее
От: Chapman Flack
Дата:
Сообщение: Re: [HACKERS] TAP: allow overriding PostgresNode in get_new_node