From afbf32fa1aa87f710b623cbdf746c55b4799574e Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Wed, 31 Jul 2024 20:55:25 -0400 Subject: Revert "Allow parallel workers to cope with a newly-created session user ID." This reverts commit 48536305370acd75c6264fcefec7fae7af8c5440. 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. --- src/backend/commands/variable.c | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) (limited to 'src/backend/commands/variable.c') diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c index b2336ad7efd..e5ddcda0b4a 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); -- cgit v1.2.3