Re: plpgsql variable assignment not supporting distinct anymore

Поиск
Список
Период
Сортировка
От easteregg@verfriemelt.org
Тема Re: plpgsql variable assignment not supporting distinct anymore
Дата
Msg-id 20210122134106.e94c5cd7@mail.verfriemelt.org
обсуждение исходный текст
Ответ на Re: plpgsql variable assignment not supporting distinct anymore  (Pavel Stehule <pavel.stehule@gmail.com>)
Список pgsql-hackers
the code provided is just a little poc to get the error ( which i have not included with my first mail sorry. )

   ERROR:  syntax error at or near "DISTINCT"
   LINE 8:     _test := DISTINCT a FROM ( VALUES ( (true), ( true ) ) )...


the code in production looked like this:


    _resource_id :=
        DISTINCT ti_resource_id
           FROM tabk.resource_timeline
          WHERE ti_a2_id = _ab2_id
            AND ti_type = 'task'
    ;

this is backed up by a trigger function, that will ensure to every instance with the same ti_a2_id exists only one
ti_resource_id,hence the query can never fail due to more than one row beeing returned. but this syntax is not
supportedanymore, which will break BC. up until PG 13, the assignment statement was just an implizit SELECT
<expression>Query. 
Since Tom Lane didn't mentioned this change in the other thread, i figured the devteam might not be aware of this
chance.

i can refactor this line into

    _resource_id :=
        ti_resource_id
       FROM tabk.resource_timeline
      WHERE ti_a2_id = _ab2_id
        AND ti_type = 'task'
      GROUP BY ti_resource_id
    ;

but concerns about BC was already raised, although with UNION there might be far less people affected.
with kind regards, richard



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

Предыдущее
От: Alvaro Herrera
Дата:
Сообщение: Re: LogwrtResult contended spinlock
Следующее
От: Heikki Linnakangas
Дата:
Сообщение: Re: Some more hackery around cryptohashes (some fixes + SHA1)