Re: DETACH PARTITION and FOR EACH ROW triggers on partitioned tables
Justin Pryzby <pryzby@telsasoft.com>
From: Justin Pryzby <pryzby@telsasoft.com>
To: Alvaro Herrera <alvherre@2ndquadrant.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Amit Langote <amitlangote09@gmail.com>, pgsql-hackers@lists.postgresql.org
Date: 2020-04-19T20:49:12Z
Lists: pgsql-hackers
Attachments
On Sun, Apr 19, 2020 at 03:13:29PM -0400, Alvaro Herrera wrote: > On 2020-Apr-18, Justin Pryzby wrote: > > I haven't heard a compelling argument for or against either way. > > > > Maybe the worst behavior might be if, during ATTACH, we searched for a matching > > trigger, and "merged" it (marked it inherited) if it matched. That could be > > bad if someone *wanted* two triggers, which seems unlikely, but to each their > > own. > > I think the simplicity argument trumps the other ones, so I agree to go > with your v3 patch proposed downthread. > > What happens if you detach the parent? I mean, should the trigger > removal recurse to children? It think it should probably exactly undo what CloneRowTriggersToPartition does. ..and I guess you're trying to politely say that it didn't. I tried to fix in v4 - please check if that's right. > > It occured to me that we don't currently distinguish between a trigger on a > > child table, and a trigger on a parent table which was recursively created on a > > child. That makes sense for indexes and constraints, since the objects persist > > if the table is detached, so it doesn't matter how it was defined. > > > > But if we remove trigger during DETACH, then it's *not* the same as a trigger > > that was defined on the child, and I suggest that in v13 we should make that > > visible. > > Hmm, interesting point -- whether the trigger is partition or not is > important because it affects what happens on detach. I agree that we > should make it visible. Is the proposed single bit "PARTITION" good > enough, or should we indicate what's the ancestor table that defines the > partition? Yea, it's an obvious thing to do. One issue is that tgparentid is new, so showing the partition status of the trigger when connected to an pre-13 server would be nontrivial: b9b408c48. -- Justin
Commits
-
psql \d: Display table where trigger is defined, if inherited
- c33869cc3bfc 13.0 landed
-
Document partitiong tables ancillary object handling some more
- cda02408f20d 12.3 landed
- 97dcd5cd1500 11.8 landed
- 8803506c411e 13.0 landed
-
Fix detaching partitions with cloned row triggers
- e26c8a6b31e9 12.3 landed
- afccd76f1cce 13.0 landed
- 0b83c47216b0 11.8 landed