mirror of
https://github.com/postgres/postgres.git
synced 2025-07-05 07:21:24 +03:00
Revert "Allow parallel workers to cope with a newly-created session user ID."
This reverts commitf5f30c22ed
. 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 bugf5f30c22e
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.
This commit is contained in:
@ -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);
|
||||
|
Reference in New Issue
Block a user