aboutsummaryrefslogtreecommitdiff
path: root/src/backend/commands/variable.c
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2024-07-31 20:55:51 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2024-07-31 20:55:51 -0400
commit5f851b8bd070c599e537cc8a09a237b2a42f2fbc (patch)
tree1724a623e66553feade04f89002aafb9a0e3ab42 /src/backend/commands/variable.c
parent97380d4803d1f9188a1436c6fe7ecd7db285c55c (diff)
downloadpostgresql-5f851b8bd070c599e537cc8a09a237b2a42f2fbc.tar.gz
postgresql-5f851b8bd070c599e537cc8a09a237b2a42f2fbc.zip
Revert "Allow parallel workers to cope with a newly-created session user ID."
This reverts commit 97380d4803d1f9188a1436c6fe7ecd7db285c55c. Some buildfarm animals are failing with "cannot change "client_encoding" during a parallel operation". It looks like assign_client_encoding is unhappy at being asked to roll back a client_encoding setting after a parallel worker encounters a failure. There must be more to it though: why didn't I see this during local testing? In any case, it's clear that moving the RestoreGUCState() call is not as side-effect-free as I thought. Given that the bug f5f30c22e intended to fix has gone unreported for years, it's not something that's urgent to fix; I'm not willing to risk messing with it further with only days to our next release wrap.
Diffstat (limited to 'src/backend/commands/variable.c')
-rw-r--r--src/backend/commands/variable.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c
index a10ea7da0b4..0c85679420c 100644
--- a/src/backend/commands/variable.c
+++ b/src/backend/commands/variable.c
@@ -519,16 +519,14 @@ check_transaction_read_only(bool *newval, void **extra, GucSource source)
* We allow idempotent changes at any time, but otherwise this can only be
* changed in a toplevel transaction that has not yet taken a snapshot.
*
- * As in check_transaction_read_only, allow it if not inside a transaction,
- * or if restoring state in a parallel worker.
+ * As in check_transaction_read_only, allow it if not inside a transaction.
*/
bool
check_XactIsoLevel(int *newval, void **extra, GucSource source)
{
int newXactIsoLevel = *newval;
- if (newXactIsoLevel != XactIsoLevel &&
- IsTransactionState() && !InitializingParallelWorker)
+ if (newXactIsoLevel != XactIsoLevel && IsTransactionState())
{
if (FirstSnapshotSet)
{
@@ -563,10 +561,6 @@ check_XactIsoLevel(int *newval, void **extra, GucSource source)
bool
check_transaction_deferrable(bool *newval, void **extra, GucSource source)
{
- /* Just accept the value when restoring state in a parallel worker */
- if (InitializingParallelWorker)
- return true;
-
if (IsSubTransaction())
{
GUC_check_errcode(ERRCODE_ACTIVE_SQL_TRANSACTION);