diff options
author | Etsuro Fujita <efujita@postgresql.org> | 2022-04-21 15:30:00 +0900 |
---|---|---|
committer | Etsuro Fujita <efujita@postgresql.org> | 2022-04-21 15:30:00 +0900 |
commit | 4eea2202beadbba67638bb129149abe5650aaaf6 (patch) | |
tree | 734aff3b848b6f83d6da7d75276f96464d2ee630 /contrib/postgres_fdw/sql/postgres_fdw.sql | |
parent | ba6af6aa0b764d76cfca79d9dfbddc7134a16bfc (diff) | |
download | postgresql-4eea2202beadbba67638bb129149abe5650aaaf6.tar.gz postgresql-4eea2202beadbba67638bb129149abe5650aaaf6.zip |
postgres_fdw: Disable batch insert when BEFORE ROW INSERT triggers exist.
Previously, we allowed this, but such triggers might query the table to
insert into and act differently if the tuples that have already been
processed and prepared for insertion are not there, so disable it in
such cases.
Back-patch to v14 where batch insert was added.
Discussion: https://postgr.es/m/CAPmGK16_uPqsmgK0-LpLSUk54_BoK13bPrhxhfjSoSTVz414hA%40mail.gmail.com
Diffstat (limited to 'contrib/postgres_fdw/sql/postgres_fdw.sql')
-rw-r--r-- | contrib/postgres_fdw/sql/postgres_fdw.sql | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/contrib/postgres_fdw/sql/postgres_fdw.sql b/contrib/postgres_fdw/sql/postgres_fdw.sql index ea35e61eb8a..ed181dedff5 100644 --- a/contrib/postgres_fdw/sql/postgres_fdw.sql +++ b/contrib/postgres_fdw/sql/postgres_fdw.sql @@ -3135,6 +3135,18 @@ CREATE FOREIGN TABLE ftable ( x int ) SERVER loopback OPTIONS ( table_name 'batc EXPLAIN (VERBOSE, COSTS OFF) INSERT INTO ftable VALUES (1), (2); INSERT INTO ftable VALUES (1), (2); SELECT COUNT(*) FROM ftable; + +-- Disable batch inserting into foreign tables with BEFORE ROW INSERT triggers +-- even if the batch_size option is enabled. +ALTER FOREIGN TABLE ftable OPTIONS ( SET batch_size '10' ); +CREATE TRIGGER trig_row_before BEFORE INSERT ON ftable +FOR EACH ROW EXECUTE PROCEDURE trigger_data(23,'skidoo'); +EXPLAIN (VERBOSE, COSTS OFF) INSERT INTO ftable VALUES (3), (4); +INSERT INTO ftable VALUES (3), (4); +SELECT COUNT(*) FROM ftable; + +-- Clean up +DROP TRIGGER trig_row_before ON ftable; DROP FOREIGN TABLE ftable; DROP TABLE batch_table; |