pg.ddx.io  pgsql-committers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Tom Lane <tgl@sss.pgh.pa.us>
To: pgsql-committers@lists.postgresql.org
Subject: pgsql: Allow adjusting session_authorization and role in parallel worke
Date: Sat, 10 Aug 2024 19:52:16 +0000
Message-ID: <E1scs8O-003c0l-Dd@gemulon.postgresql.org> (raw)

Allow adjusting session_authorization and role in parallel workers.

The code intends to allow GUCs to be set within parallel workers
via function SET clauses, but not otherwise.  However, doing so fails
for "session_authorization" and "role", because the assign hooks for
those attempt to set the subsidiary "is_superuser" GUC, and that call
falls foul of the "not otherwise" prohibition.  We can't switch to
using GUC_ACTION_SAVE for this, so instead add a new GUC variable
flag GUC_ALLOW_IN_PARALLEL to mark is_superuser as being safe to set
anyway.  (This is okay because is_superuser has context PGC_INTERNAL
and thus only hard-wired calls can change it.  We'd need more thought
before applying the flag to other GUCs; but maybe there are other
use-cases.)  This isn't the prettiest fix perhaps, but other
alternatives we thought of would be much more invasive.

While here, correct a thinko in commit 059de3ca4: when rejecting
a GUC setting within a parallel worker, we should return 0 not -1
if the ereport doesn't longjmp.  (This seems to have no consequences
right now because no caller cares, but it's inconsistent.)  Improve
the comments to try to forestall future confusion of the same kind.

Despite the lack of field complaints, this seems worth back-patching.
Thanks to Nathan Bossart for the idea to invent a new flag,
and for review.

Discussion: https://postgr.es/m/2833457.1723229039@sss.pgh.pa.us

Branch
------
REL_15_STABLE

Details
-------
https://git.postgresql.org/pg/commitdiff/2f4e895be76044fc09bdf96617043c94a12079e7

Modified Files
--------------
src/backend/utils/misc/guc.c                  | 28 ++++++++++++++---------
src/include/utils/guc.h                       |  1 +
src/test/regress/expected/select_parallel.out | 33 +++++++++++++++++++++++++++
src/test/regress/sql/select_parallel.sql      | 23 +++++++++++++++++++
4 files changed, 74 insertions(+), 11 deletions(-)



view thread (7+ messages)  latest in thread

Message-ID: <E1scs8O-003c0l-Dd@gemulon.postgresql.org>
Permalink:  ../E1scs8O-003c0l-Dd@gemulon.postgresql.org/
Also on:    postgresql.org/message-id/E1scs8O-003c0l-Dd@gemulon.postgresql.org

 · 

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-committers@postgresql.org
  Cc: tgl@sss.pgh.pa.us, pgsql-committers@lists.postgresql.org
  Subject: Re: pgsql: Allow adjusting session_authorization and role in parallel worke
  In-Reply-To: <E1scs8O-003c0l-Dd@gemulon.postgresql.org>

* 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