Re: [GENERAL] dblink: rollback transaction

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Joe Conway <mail(at)joeconway(dot)com>
Cc: pgsql-patches(at)postgresql(dot)org, Oleg Lebedev <oleg(dot)lebedev(at)waterford(dot)org>
Subject: Re: [GENERAL] dblink: rollback transaction
Date: 2004-02-23 04:32:00
Message-ID: 20819.1077510720@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general pgsql-patches

Joe Conway <mail(at)joeconway(dot)com> writes:
> One question that I'd like some feedback on is the following: should the
> same change be applied to other functions that might throw an ERROR
> based on the remote side of the connection? For example, currently if
> dblink() is used in an attempt to access a non-existent remote table, an
> ERROR is thrown locally in response, killing any currently open
> transaction. Thoughts?

It seems like a good idea to offer a consistent policy about this.
But I'm not sure that you should make a 180-degree change in error
handling without any backward-compatibility option. (In view of
recent discussions, the phrase "GUC variable" will not cross my
lips here.)

What seems like a good idea after a few moments' thought is to leave the
behavior of the various dblink_foo() functions the same as now (ie,
throw error on remote error) and add new API functions named something
like dblink_foo_noerror() that don't throw error but return a
recognizable failure code instead. My argument for this approach is
that there is no situation in which the programmer shouldn't have to
think when he writes a given call whether it will elog or return an
error indicator, because if he wants an error indicator then he is going
to have to check for it.

I'm not wedded to that in particular, but I do think you need to offer
a consistent approach with reasonable regard to backwards compatibility.
If you apply the patch as given you will surely be breaking existing
callers ... what's worse, the breakage is silent, and will only show up
under stress in the field.

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Richard Huxton 2004-02-23 07:58:30 Re: System tuning
Previous Message Tom Lane 2004-02-23 03:15:07 Re: dblink - custom datatypes NOW work :)

Browse pgsql-patches by date

  From Date Subject
Next Message Andrew Dunstan 2004-02-23 18:09:06 log_line_info
Previous Message Tom Lane 2004-02-23 03:15:07 Re: dblink - custom datatypes NOW work :)