Re: [HACKERS] Another oddity in handling of WCO constraints in postgres_fdw

Stephen Frost <sfrost@snowman.net>

From: Stephen Frost <sfrost@snowman.net>
To: Etsuro Fujita <fujita.etsuro@lab.ntt.co.jp>
Cc: Robert Haas <robertmhaas@gmail.com>, Ashutosh Bapat <ashutosh.bapat@enterprisedb.com>, pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2018-01-17T13:00:21Z
Lists: pgsql-hackers
Greetings Etsuro, Robert, all,

* Etsuro Fujita (fujita.etsuro@lab.ntt.co.jp) wrote:
> (2017/11/01 11:16), Robert Haas wrote:
> >On Wed, Oct 4, 2017 at 5:58 PM, Ashutosh Bapat
> ><ashutosh.bapat@enterprisedb.com>  wrote:
> >>The view with WCO is local but the modification which violates WCO is
> >>being made on remote server by a trigger on remote table. Trying to
> >>control that doesn't seem to be a good idea, just like we can't
> >>control what rows get inserted on the foreign server when they violate
> >>local constraints.
> >
> >I think that's a fair point.
> 
> For local constraints on foreign tables, it's the user's responsibility to
> ensure that those constraints matches the remote side, so we don't need to
> ensure those constraints locally.  But I'm not sure if the same thing
> applies to WCOs on views defined on foreign tables, because in some case
> it's not possible to impose constraints on the remote side that match those
> WCOs, as I explained before.

Reviewing this thread, I tend to agree with Etsuro and I'm not sure I
see where there's a good argument for having a foreign table under a
view behave differently than a local table under a view for WCO (which
is an option of the view- not about the table underneath it or if it's
local or remote).  I've not done a detailed review of the patch but it
seems pretty reasonable and pretty small.

Thanks!

Stephen

Commits

  1. Fix WITH CHECK OPTION on views referencing postgres_fdw tables.

  2. Allow insert and update tuple routing and COPY for foreign tables.

  3. When WCOs are present, disable direct foreign table modification.