Re: BUG #15833: defining a comment on a domain constraint fails with wrong OID
Daniel Gustafsson <daniel@yesql.se>
From: Daniel Gustafsson <daniel@yesql.se>
To: Michael Paquier <michael@paquier.xyz>
Cc: Alvaro Herrera <alvherre@2ndquadrant.com>,
clemens@ladisch.de,
PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>
Date: 2019-06-10T10:25:57Z
Lists: pgsql-bugs
Attachments
- dom-constraint-comments-v2.patch (application/octet-stream) patch v2
- (unnamed) (text/plain)
> On 10 Jun 2019, at 08:28, Michael Paquier <michael@paquier.xyz> wrote: > > On Fri, Jun 07, 2019 at 02:42:33PM +0900, Michael Paquier wrote: >> Well, it wouldn't be a problem to do a syscache lookup and then use >> the type from contypid, no? It seems to me that it would be more >> consistent to just add a pg_domain_constraint_ownercheck() in aclchk.c >> as all the syscache lookups happen their for all the other objects >> types. What do you think? > > Attached is what I have in mind. There are already tests at the > bottom of constraints.source checking for comments on both table and > domain constraints, so my proposal is to run them with a dedicated > role. What do you think? +1 on the approach of the patch, it seems like the simplest approach. A comment on the check_object_ownership() diff though: + if (!pg_domain_constraint_ownercheck(address.objectId, roleid)) + aclcheck_error_type(ACLCHECK_NOT_OWNER, address.objectId); This doesn’t work for the errorcase as the address.objectId is the wrong Oid here as well, the contypid extracted in pg_domain_constraint_ownercheck() is required. I’ve hacked up your patch to pass it back and that seems to work, and also added a test for the errorpath. Another option would be to provide a new aclcheck_error_domain_constraint(), not sure which is best. cheers ./daniel
Commits
-
Fix handling of COMMENT for domain constraints
- 13f4b462dbe8 9.5.18 landed
- ff1a25601e75 9.6.14 landed
- 56a932533aa2 10.9 landed
- fa5f3a4bcca7 11.4 landed
- ceac4505d342 12.0 landed