diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2024-07-31 20:55:25 -0400 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2024-07-31 20:55:25 -0400 |
commit | afbf32fa1aa87f710b623cbdf746c55b4799574e (patch) | |
tree | 10bb57940f0cd1bee68b3328bdccc6642ae84994 /src/backend/access/transam/parallel.c | |
parent | 48536305370acd75c6264fcefec7fae7af8c5440 (diff) | |
download | postgresql-afbf32fa1aa87f710b623cbdf746c55b4799574e.tar.gz postgresql-afbf32fa1aa87f710b623cbdf746c55b4799574e.zip |
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.
Diffstat (limited to 'src/backend/access/transam/parallel.c')
-rw-r--r-- | src/backend/access/transam/parallel.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/src/backend/access/transam/parallel.c b/src/backend/access/transam/parallel.c index d5bee10cd4b..df0cd775588 100644 --- a/src/backend/access/transam/parallel.c +++ b/src/backend/access/transam/parallel.c @@ -1402,6 +1402,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. */ @@ -1444,14 +1448,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 * current role. |