Re: PL/pgSQL — "commit" illegal in the executable section of a block statement that has an exception section

Поиск
Список
Период
Сортировка
От Christophe Pettus
Тема Re: PL/pgSQL — "commit" illegal in the executable section of a block statement that has an exception section
Дата
Msg-id 54C2FEA5-86FF-4A3C-A84B-4470A6998ACA@thebuild.com
обсуждение исходный текст
Ответ на PL/pgSQL — "commit" illegal in the executable section of a block statement that has an exception section  (Bryn Llewellyn <bryn@yugabyte.com>)
Список pgsql-hackers

> On Sep 30, 2019, at 15:37, Bryn Llewellyn <bryn@yugabyte.com> wrote:
> I wrote up the problem here:
>
> https://github.com/yugabyte/yugabyte-db/issues/2464

This is documented; it's the very last line of the page you reference in the Github issue:

    A transaction cannot be ended inside a block with exception handlers.

Your discussion doesn't answer the specific issue: BEGIN/EXCEPTION/END in pl/pgSQL is implemented by savepoints.  What
semanticsshould COMMIT / ROLLBACK have inside of that?  Doing a COMMIT / ROLLBACK (at the database level) at that point
wouldlose the savepoints, which would break the BEGIN/EXCEPTION/END semantics. 

It's not clear to me what the alternative semantics would be.  Can you propose specific database behavior for a COMMIT
orROLLBACK inside a BEGIN/EXCEPTION/END block which retain the savepoint behavior of BEGIN/EXCEPTION/END? 
--
-- Christophe Pettus
   xof@thebuild.com




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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: subscriptionCheck failures on nightjar
Следующее
От: Paul Guo
Дата:
Сообщение: Re: Two pg_rewind patches (auto generate recovery conf and ensureclean shutdown)