-
- Downloads
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.
Showing
- contrib/postgres_fdw/deparse.c 37 additions, 26 deletionscontrib/postgres_fdw/deparse.c
- contrib/postgres_fdw/expected/postgres_fdw.out 319 additions, 0 deletionscontrib/postgres_fdw/expected/postgres_fdw.out
- contrib/postgres_fdw/postgres_fdw.c 2 additions, 2 deletionscontrib/postgres_fdw/postgres_fdw.c
- contrib/postgres_fdw/sql/postgres_fdw.sql 216 additions, 0 deletionscontrib/postgres_fdw/sql/postgres_fdw.sql
- doc/src/sgml/fdwhandler.sgml 20 additions, 16 deletionsdoc/src/sgml/fdwhandler.sgml
- doc/src/sgml/ref/create_trigger.sgml 26 additions, 17 deletionsdoc/src/sgml/ref/create_trigger.sgml
- doc/src/sgml/trigger.sgml 14 additions, 11 deletionsdoc/src/sgml/trigger.sgml
- src/backend/commands/tablecmds.c 3 additions, 0 deletionssrc/backend/commands/tablecmds.c
- src/backend/commands/trigger.c 340 additions, 83 deletionssrc/backend/commands/trigger.c
- src/backend/executor/nodeModifyTable.c 52 additions, 38 deletionssrc/backend/executor/nodeModifyTable.c
- src/backend/rewrite/rewriteHandler.c 29 additions, 7 deletionssrc/backend/rewrite/rewriteHandler.c
- src/include/commands/trigger.h 6 additions, 2 deletionssrc/include/commands/trigger.h
- src/test/regress/expected/foreign_data.out 37 additions, 0 deletionssrc/test/regress/expected/foreign_data.out
- src/test/regress/sql/foreign_data.sql 44 additions, 0 deletionssrc/test/regress/sql/foreign_data.sql
Loading
Please register or sign in to comment