Re: Major Version Upgrade failure due to orphan roles entries in catalog
| От | Tom Lane |
|---|---|
| Тема | Re: Major Version Upgrade failure due to orphan roles entries in catalog |
| Дата | |
| Msg-id | 179448.1772033773@sss.pgh.pa.us обсуждение исходный текст |
| Ответ на | Re: Major Version Upgrade failure due to orphan roles entries in catalog (Robert Haas <robertmhaas@gmail.com>) |
| Ответы |
Re: Major Version Upgrade failure due to orphan roles entries in catalog
|
| Список | pgsql-bugs |
Robert Haas <robertmhaas@gmail.com> writes:
> I recently learned of a case where this commit caused role grants to
> be erroneously emitted from the output of pg_dumpall. In the case in
> question, a v16 pg_dumpall was used against an older server. Hence,
> dump_grantors was false, and any generated GRANT commands would not
> have included in the grantor anyway. Nevertheless, this logic caused
> those grants to be skipped altogether:
> ...
> If you do this on v15 and then run v15's pg_dumpall, it will dump
> "GRANT foo to bar", with no GRANTOR clause due to the PQgetisnull()
> gating that logic. v16's pg_dumpall will dump nothing and emit a
> warning instead. Arguably, pre-v16 pg_dumpall shouldn't EVER be
> dumping the grantor since the grantorid could be an old role OID that
> has been recycled for a new role, and relying on that for anything
> security-critical seems like a mistake, but that behavior is also
> longstanding. But omitting the grant altogether seems like an
> overreaction. I understand that we need to do that when the *member*
> is invalid, of course; in that case, there's no alternative. But
> that's not the case for the grantor.
Hmm. As per the commit message,
Pre-v16 branches already coped with dangling grantor OIDs by simply
omitting the GRANTED BY clause. I left that behavior as-is, although
it's somewhat inconsistent with the behavior of later branches.
So what you're saying is that I should have made the later branches
do that also. I guess it's arguably better than dropping the grant
altogether ... but the end result will be that the grant is now
granted by the superuser running the restore, which doesn't seem
very good either.
regards, tom lane
В списке pgsql-bugs по дате отправления: