From: | Bertrand Drouvot <bertranddrouvot(dot)pg(at)gmail(dot)com> |
---|---|
To: | Robert Haas <robertmhaas(at)gmail(dot)com> |
Cc: | Michael Paquier <michael(at)paquier(dot)xyz>, Alexander Lakhin <exclusion(at)gmail(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Subject: | Re: Avoid orphaned objects dependencies, take 3 |
Date: | 2024-06-17 10:50:56 |
Message-ID: | ZnAVEBhlGvpDDVOD@ip-10-97-1-34.eu-west-3.compute.internal |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
On Thu, Jun 13, 2024 at 04:52:09PM +0000, Bertrand Drouvot wrote:
> Hi,
>
> On Thu, Jun 13, 2024 at 10:49:34AM -0400, Robert Haas wrote:
> > On Fri, Jun 7, 2024 at 4:41 AM Bertrand Drouvot
> > <bertranddrouvot(dot)pg(at)gmail(dot)com> wrote:
> > > Do you still find the code hard to maintain with v9?
> >
> > I don't think it substantially changes my concerns as compared with
> > the earlier version.
>
> Thanks for the feedback, I'll give it more thoughts.
Please find attached v10 that puts the object locking outside of the dependency
code.
It's done that way except for:
recordDependencyOnExpr()
recordDependencyOnSingleRelExpr()
makeConfigurationDependencies()
The reason is that I think that it would need part of the logic that his inside
the above functions to be duplicated and I'm not sure that's worth it.
For example, we would probably need to:
- make additional calls to find_expr_references_walker()
- make additional scan on the config map
It's also not done outside of recordDependencyOnCurrentExtension() as:
1. I think it is clear enough that way (as it is clear that the lock is taken on
a ExtensionRelationId object class).
2. why to include "commands/extension.h" in more places (locking would
depend of "creating_extension" and "CurrentExtensionObject"), while 1.?
Remarks:
1. depLockAndCheckObject() and friends in v9 have been renamed to
LockNotPinnedObject() and friends (as the vast majority of their calls are now
done outside of the dependency code).
2. regarding the concern around RelationRelationId (discussed in [1]), v10 adds
a comment "XXX Do we need a lock for RelationRelationId?" at the places we
may want to lock this object class. I did not think about it yet (but will do),
I only added this comment at multiple places.
I think that v10 is easier to follow (as compare to v9) as we can easily see for
which object class we'll put a lock on.
Thoughts?
[1]: https://www.postgresql.org/message-id/Zmv3TPfJAyQXhIdu%40ip-10-97-1-34.eu-west-3.compute.internal
Regards,
--
Bertrand Drouvot
PostgreSQL Contributors Team
RDS Open Source Databases
Amazon Web Services: https://aws.amazon.com
Attachment | Content-Type | Size |
---|---|---|
v10-0001-Avoid-orphaned-objects-dependencies.patch | text/x-diff | 93.6 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2024-06-17 11:04:52 | Re: speed up a logical replica setup |
Previous Message | Alena Rybakina | 2024-06-17 10:33:49 | Re: POC, WIP: OR-clause support for indexes |