mirror of
https://github.com/postgres/postgres.git
synced 2025-11-04 20:11:56 +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 bugf5f30c22eintended 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:
@@ -1410,6 +1410,10 @@ ParallelWorkerMain(Datum main_arg)
|
||||
libraryspace = shm_toc_lookup(toc, PARALLEL_KEY_LIBRARY, false);
|
||||
StartTransactionCommand();
|
||||
RestoreLibraryState(libraryspace);
|
||||
|
||||
/* Restore GUC values from launching backend. */
|
||||
gucspace = shm_toc_lookup(toc, PARALLEL_KEY_GUC, false);
|
||||
RestoreGUCState(gucspace);
|
||||
CommitTransactionCommand();
|
||||
|
||||
/* Crank up a transaction state appropriate to a parallel worker. */
|
||||
@@ -1451,14 +1455,6 @@ ParallelWorkerMain(Datum main_arg)
|
||||
*/
|
||||
InvalidateSystemCaches();
|
||||
|
||||
/*
|
||||
* Restore GUC values from launching backend. We can't do this earlier,
|
||||
* because GUC check hooks that do catalog lookups need to see the same
|
||||
* database state as the leader.
|
||||
*/
|
||||
gucspace = shm_toc_lookup(toc, PARALLEL_KEY_GUC, false);
|
||||
RestoreGUCState(gucspace);
|
||||
|
||||
/*
|
||||
* Restore current role id. Skip verifying whether session user is
|
||||
* allowed to become this role and blindly restore the leader's state for
|
||||
|
||||
Reference in New Issue
Block a user