alternative to PG_CATCH - Mailing list pgsql-hackers

From Peter Eisentraut
Subject alternative to PG_CATCH
Date
Msg-id c170919d-c78b-3dac-5ff6-9bd12f7a38bc@2ndquadrant.com
Whole thread Raw
Responses Re: alternative to PG_CATCH  (Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>)
Re: alternative to PG_CATCH  (Andrew Dunstan <andrew.dunstan@2ndquadrant.com>)
List pgsql-hackers
This is a common pattern:

    PG_TRY();
    {
        ... code that might throw ereport(ERROR) ...
    }
    PG_CATCH();
    {
        cleanup();
        PG_RE_THROW();
    }
    PG_END_TRY();
    cleanup();  /* the same as above */

I've played with a way to express this more compactly:

    PG_TRY();
    {
        ... code that might throw ereport(ERROR) ...
    }
    PG_FINALLY({
        cleanup();
    });

See attached patch for how this works out in practice.

Thoughts?  Other ideas?

One problem is that this currently makes pgindent crash.  That's
probably worth fixing anyway.  Or perhaps find a way to write this
differently.

-- 
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Attachment

pgsql-hackers by date:

Previous
From: Kyotaro HORIGUCHI
Date:
Subject: Re: allow online change primary_conninfo
Next
From: Sergei Kornilov
Date:
Subject: Re: allow online change primary_conninfo