Re: Allow placeholders in ALTER ROLE w/o superuser

Pavel Borisov <pashkin.elfe@gmail.com>

From: Pavel Borisov <pashkin.elfe@gmail.com>
To: Justin Pryzby <pryzby@telsasoft.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Alexander Korotkov <aekorotkov@gmail.com>, Alvaro Herrera <alvherre@alvh.no-ip.org>, Steve Chavez <steve@supabase.io>, Kyotaro Horiguchi <horikyota.ntt@gmail.com>, nathandbossart@gmail.com, pgsql-hackers@postgresql.org
Date: 2023-01-02T08:53:30Z
Lists: pgsql-hackers

Attachments

Hi, Justin!

On Wed, 28 Dec 2022 at 21:28, Justin Pryzby <pryzby@telsasoft.com> wrote:
>
> On Tue, Dec 27, 2022 at 11:29:40PM -0500, Tom Lane wrote:
> > Justin Pryzby <pryzby@telsasoft.com> writes:
> > > This fails when run more than once:
> > > time meson test --setup running --print test_pg_db_role_setting-running/regress
> >
> > Ah.
> >
> > > It didn't fail for you because it says:
> > > ./src/test/modules/test_pg_db_role_setting/Makefile
> > > +# disable installcheck for now
> > > +NO_INSTALLCHECK = 1
> >
> > So ... exactly why is the meson infrastructure failing to honor that?
> > This test looks sufficiently careless about its side-effects that
> > I completely agree with the decision to not run it in pre-existing
> > installations.  Failing to drop a created superuser is just one of
> > its risk factors --- it also leaves around pg_db_role_setting entries.
>
> Meson doesn't try to parse the Makefiles (like the MSVC scripts) but
> (since 3f0e786ccb) has its own implementation, which involves setting
> 'runningcheck': false.
>
> 096dd80f3c seems to have copied the NO_INSTALLCHECK from oat's makefile,
> but didn't copy "runningcheck" from oat's meson.build (but did copy its
> regress_args).

I completely agree with your analysis. Fixes by 3f0e786ccbf5 to oat
and the other modules tests came just a couple of days before
committing the main pg_db_role_setting commit 096dd80f3c so they were
forgotten to be included into it.

I support committing the same fix to pg_db_role_setting test and added
this minor fix as a patch to this thread.

Kind regards, and happy New year!
Pavel Borisov,
Supabase.

Commits

Same data as JSON: GET /api/v1/messages/:b64id/commits the thread's linked commits as JSON, with link sources. API reference →
  1. Remove extra regress check arguments from test_pg_db_role_setting

  2. meson: Add 'running' test setup, as a replacement for installcheck

  3. Add USER SET parameter values for pg_db_role_setting

  4. Fix sloppy cleanup of roles in privileges.sql.

  5. Drop test user when done with it.

  6. GRANT rights to CURRENT_USER instead of adding roles

  7. Clean up roles from roleattributes test

  8. Make repeated 'make installcheck' runs work