diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2024-07-31 20:53:33 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2024-07-31 20:57:00 -0400 |
commit | e6a9637488e2673efb87f8ead657789e9889fb17 (patch) | |
tree | 99b5428f8aafd3a9008ec802b534c32c338dda1f /src/backend/commands/variable.c | |
parent | ca2eea3ac89a4ea16ab069cb681510d05de5285f (diff) | |
download | postgresql-e6a9637488e2673efb87f8ead657789e9889fb17.tar.gz postgresql-e6a9637488e2673efb87f8ead657789e9889fb17.zip |
Revert "Allow parallel workers to cope with a newly-created session user ID."
This reverts commit f5f30c22ed69fb37b896c4d4546b2ab823c3fd61.
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.c | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c index e3f9f110d87..f44d942aa4d 100644 --- a/src/backend/commands/variable.c +++ b/src/backend/commands/variable.c @@ -577,16 +577,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_transaction_isolation(int *newval, void **extra, GucSource source) { int newXactIsoLevel = *newval; - if (newXactIsoLevel != XactIsoLevel && - IsTransactionState() && !InitializingParallelWorker) + if (newXactIsoLevel != XactIsoLevel && IsTransactionState()) { if (FirstSnapshotSet) { @@ -621,10 +619,6 @@ check_transaction_isolation(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); |