diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2021-07-16 13:01:43 -0400 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2021-07-16 13:01:43 -0400 |
commit | c31516ae5b43d8a1a99e8e43abc84d791ce15ef1 (patch) | |
tree | 5610c9b09c3d621a52d2cc323324443207885f7f /src/include/commands/trigger.h | |
parent | 866237a6fa01a128325df41ad39b41ea3363c9a9 (diff) |
Preserve firing-on state when cloning row triggers to partitions
When triggers are cloned from partitioned tables to their partitions,
the 'tgenabled' flag (origin/replica/always/disable) was not propagated.
Make it so that the flag on the trigger on partition is initially set to
the same value as on the partitioned table.
Add a test case to verify the behavior.
Backpatch to 11, where this appeared in commit 86f575948c77.
Author: Álvaro Herrera <alvherre@alvh.no-ip.org>
Reported-by: Justin Pryzby <pryzby@telsasoft.com>
Discussion: https://postgr.es/m/20200930223450.GA14848@telsasoft.com
Diffstat (limited to 'src/include/commands/trigger.h')
-rw-r--r-- | src/include/commands/trigger.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/include/commands/trigger.h b/src/include/commands/trigger.h index a40ddf5db52..40b81548764 100644 --- a/src/include/commands/trigger.h +++ b/src/include/commands/trigger.h @@ -162,6 +162,11 @@ extern ObjectAddress CreateTrigger(CreateTrigStmt *stmt, const char *queryString Oid relOid, Oid refRelOid, Oid constraintOid, Oid indexOid, Oid funcoid, Oid parentTriggerOid, Node *whenClause, bool isInternal, bool in_partition); +extern ObjectAddress CreateTriggerFiringOn(CreateTrigStmt *stmt, const char *queryString, + Oid relOid, Oid refRelOid, Oid constraintOid, + Oid indexOid, Oid funcoid, Oid parentTriggerOid, + Node *whenClause, bool isInternal, bool in_partition, + char trigger_fires_when); extern void RemoveTriggerById(Oid trigOid); extern Oid get_trigger_oid(Oid relid, const char *name, bool missing_ok); |