PL/PgSQL: EXIT USING ROLLBACK

Поиск
Список
Период
Сортировка
От Marko Tiikkaja
Тема PL/PgSQL: EXIT USING ROLLBACK
Дата
Msg-id 53D3E1D9.5060808@joh.to
обсуждение исходный текст
Ответы Re: PL/PgSQL: EXIT USING ROLLBACK  (Tom Lane <tgl@sss.pgh.pa.us>)
Re: PL/PgSQL: EXIT USING ROLLBACK  (Pavel Stehule <pavel.stehule@gmail.com>)
Re: PL/PgSQL: EXIT USING ROLLBACK  (Simon Riggs <simon@2ndQuadrant.com>)
Список pgsql-hackers
Hello,

Today I'd like to present a way to get rid of code like this:

   $$
   BEGIN

   BEGIN
     INSERT INTO foo VALUES (1);
     -- run some tests/checks/whatever
     RAISE EXCEPTION 'OK';
   EXCEPTION WHEN raise_exception THEN
     IF SQLERRM <> 'OK' THEN
       RAISE;
     END IF;
   END;

   RETURN 'success';
   END
   $$

And replace it with code like this:

   $$
   BEGIN

   <<testsomething>>
   BEGIN
     INSERT INTO foo VALUES (1);
     -- run some tests/checks/whatever
     EXIT USING ROLLBACK testsomething;
   EXCEPTION WHEN others THEN
     RAISE;
   END;

   RETURN 'success';
   END
   $$

I'm not set on the USING ROLLBACK syntax; it was the only thing I could
come up with that seemed even remotely sane and didn't break backwards
compatibility.

Thoughts?  Patch attached, if someone cares.


.marko

Вложения

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

Предыдущее
От: Fabien COELHO
Дата:
Сообщение: Re: parametric block size?
Следующее
От: Andres Freund
Дата:
Сообщение: Re: parametric block size?