pg.ddx.io  pgsql-admin@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andres Freund <andres@anarazel.de>
Cc: Aditya D <dsaditya91@gmail.com>
Cc: pgsql-admin <pgsql-admin@lists.postgresql.org>
Subject: Re: pg_restore -L reordering of the statements does not work
Date: Tue, 14 Nov 2023 15:42:22 -0500
Message-ID: <2522830.1699994542@sss.pgh.pa.us> (raw)
In-Reply-To: <20231114194933.ci3nxol3avtisyrs@awork3.anarazel.de>
References: <CAEATte6vgZr6d2abZo9_wxTarwQP3TC_NLpCKTDzWW4E4OB9cw@mail.gmail.com>
	<1589825.1698431686@sss.pgh.pa.us>
	<20231114194933.ci3nxol3avtisyrs@awork3.anarazel.de>

Andres Freund <andres@anarazel.de> writes:
> A schema like:
> ...
> results in the following, abbreviated, dump on HEAD:
> ...
> Which is bad because the ALTER TABLE OWNER TO cannot be executed before
> the GRANT ALL:
>   ERROR:  42501: permission denied for schema nosuper
>   LOCATION:  aclcheck_error, aclchk.c:2833

Works fine for me.  I agree that it might not work if you're restoring
as non-superuser, but if you try that the ALTER OWNER commands are all
going to fail too.  Moreover, reordering the GRANTs is no solution,
because who promised that the schema owner granted you any permissions?

The bigger picture here is that pg_dump effectively relies on all
objects being treated throughout the restore as though the restoring
user is their owner --- either via --no-owner, or because the
restoring user is superuser, or perhaps because the restoring user is
a member of every object owner named in the dump.  Postponing
execution of GRANTs to the end should therefore be perfectly safe, and
indeed it's *necessary* if you want to successfully restore cases in
which an object owner has revoked some of their own privileges.

I experimented with making the restoring user be a member with inherit
of the nosuper_N roles, and indeed I still see the failure above,
which makes me wonder if the ACL check is being done correctly for
that specific case.  The INHERIT bit ought to let it work.

			regards, tom lane





view thread (14+ messages)  latest in thread

Message-ID: <2522830.1699994542@sss.pgh.pa.us>
Permalink:  ../2522830.1699994542@sss.pgh.pa.us/
Also on:    postgresql.org/message-id/2522830.1699994542@sss.pgh.pa.us

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-admin@postgresql.org
  Cc: tgl@sss.pgh.pa.us, andres@anarazel.de, dsaditya91@gmail.com, pgsql-admin@lists.postgresql.org
  Subject: Re: pg_restore -L reordering of the statements does not work
  In-Reply-To: <2522830.1699994542@sss.pgh.pa.us>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox