Offer triggers on foreign tables.

Noah Misch <noah@leadboat.com>

Commit: 7cbe57c34dec4860243e6d0f81738cfbb6e5d069
Author: Noah Misch <noah@leadboat.com>
Date: 2014-03-23T06:16:34Z
Releases: 9.4.0
Offer triggers on foreign tables.

This covers all the SQL-standard trigger types supported for regular
tables; it does not cover constraint triggers.  The approach for
acquiring the old row mirrors that for view INSTEAD OF triggers.  For
AFTER ROW triggers, we spool the foreign tuples to a tuplestore.

This changes the FDW API contract; when deciding which columns to
populate in the slot returned from data modification callbacks, writable
FDWs will need to check for AFTER ROW triggers in addition to checking
for a RETURNING clause.

In support of the feature addition, refactor the TriggerFlags bits and
the assembly of old tuples in ModifyTable.

Ronan Dunklau, reviewed by KaiGai Kohei; some additional hacking by me.

Files