Re: CREATE TABLE .. PARTITION OF fails to preserve tgenabled for inherited row triggers
Justin Pryzby <pryzby@telsasoft.com>
From: Justin Pryzby <pryzby@telsasoft.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Alvaro Herrera <alvherre@alvh.no-ip.org>, pgsql-hackers@postgresql.org, Amit Langote <amitlangote09@gmail.com>
Date: 2020-10-20T22:01:16Z
Lists: pgsql-hackers
On Tue, Oct 20, 2020 at 03:56:30PM -0400, Tom Lane wrote: > Alvaro Herrera <alvherre@alvh.no-ip.org> writes: > > Hmm, next question: should we backpatch a fix for this? (This applies > > all the way back to 11.) If we do, then we would change behavior of > > partition creation. It's hard to see that the current behavior is > > desirable ... and I think anybody who would have come across this, would > > wish it behaved the other way. But still -- it would definitely be a > > behavior change. > > The behavior change seems like it'd be an improvement in a vacuum, > but I wonder how it would interact with catalog contents left behind > by the old misbehavior. Also, would we expect pg_dump to try to do > anything to clean up the mess? If so, allowing a back branch to have > had more than one behavior would complicate that greatly. I don't think there's a problem with catalog content ? I think it's fine if there's an enabled child trigger inheriting from a disabled parent? This changes the initial tgenabled for new partitions. The old catalog state is still possible - it's what you'd get if you did CREATE TABLE child PARTITION OF..; ALTER TABLE child DISABLE TRIGGER. I don't think pg_dump needs to do anyting special, since the restore will now do what's wanted without added commands. Note that pg_dump switched from "PARTITION OF" to "ATTACH PARTITION" at commit 33a53130a. This would handles both on the server side. However...it looks like pg_dump should ALTER the child trigger state if it differ from its parent. Or maybe it needs to CREATE child triggers with the proper state before attaching the child table ? -- Justin
Commits
-
Fix pg_dump for disabled triggers on partitioned tables
- f0e21f2f6167 15.0 landed
- ccfc3cbb341a 11.13 landed
- cc340af33453 13.4 landed
- 5992c94dc7e4 12.8 landed
- 3c5b7c628621 14.0 landed
-
Preserve firing-on state when cloning row triggers to partitions
- fed35bd4a650 11.13 landed
- eef92de11e50 14.0 landed
- df80fa2ee504 15.0 landed
- c31516ae5b43 13.4 landed
- 7584ec1f6098 12.8 landed
-
Fix ALTER TABLE .. ENABLE/DISABLE TRIGGER recursion
- bbb927b4db9b 14.0 landed
- a795f6782fa8 11.10 landed
- 5f6463a20af1 13.1 landed
- 0e6b6f8c7192 12.5 landed
-
psql \d: Display table where trigger is defined, if inherited
- c33869cc3bfc 13.0 cited
-
Fix cloning of row triggers to sub-partitions
- 1fa846f1c9af 13.0 cited
-
Make pg_dump emit ATTACH PARTITION instead of PARTITION OF (reprise)
- 33a53130a894 12.0 cited