mirror of
https://github.com/postgres/postgres.git
synced 2025-06-16 06:01:02 +03:00
Fix a problem with parallel workers being unable to restore role.
check_role() tries to verify that the user has permission to become the
requested role, but this is inappropriate in a parallel worker, which
needs to exactly recreate the master's authorization settings. So skip
the check in that case.
This fixes a bug in commit 924bcf4f16
.
This commit is contained in:
@ -96,6 +96,9 @@ int ParallelWorkerNumber = -1;
|
||||
/* Is there a parallel message pending which we need to receive? */
|
||||
bool ParallelMessagePending = false;
|
||||
|
||||
/* Are we initializing a parallel worker? */
|
||||
bool InitializingParallelWorker = false;
|
||||
|
||||
/* Pointer to our fixed parallel state. */
|
||||
static FixedParallelState *MyFixedParallelState;
|
||||
|
||||
@ -815,6 +818,9 @@ ParallelWorkerMain(Datum main_arg)
|
||||
char *tstatespace;
|
||||
StringInfoData msgbuf;
|
||||
|
||||
/* Set flag to indicate that we're initializing a parallel worker. */
|
||||
InitializingParallelWorker = true;
|
||||
|
||||
/* Establish signal handlers. */
|
||||
pqsignal(SIGTERM, die);
|
||||
BackgroundWorkerUnblockSignals();
|
||||
@ -942,6 +948,7 @@ ParallelWorkerMain(Datum main_arg)
|
||||
* We've initialized all of our state now; nothing should change
|
||||
* hereafter.
|
||||
*/
|
||||
InitializingParallelWorker = false;
|
||||
EnterParallelMode();
|
||||
|
||||
/*
|
||||
|
Reference in New Issue
Block a user