Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 18db215

Browse files
committed
Fix processing of PGC_BACKEND GUC parameters on Windows.
EXEC_BACKEND builds (i.e., Windows) failed to absorb values of PGC_BACKEND parameters if they'd been changed post-startup via the config file. This for example prevented log_connections from working if it were turned on post-startup. The mechanism for handling this case has always been a bit of a kluge, and it wasn't revisited when we implemented EXEC_BACKEND. While in a normal forking environment new backends will inherit the postmaster's value of such settings, EXEC_BACKEND backends have to read the settings from the CONFIG_EXEC_PARAMS file, and they were mistakenly rejecting them. So this case has always been broken in the Windows port; so back-patch to all supported branches. Amit Kapila
1 parent 84520f9 commit 18db215

File tree

1 file changed

+20
-0
lines changed
  • src/backend/utils/misc

1 file changed

+20
-0
lines changed

src/backend/utils/misc/guc.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5299,9 +5299,23 @@ set_config_option(const char *name, const char *value,
52995299
* ignore it in existing backends. This is a tad klugy, but
53005300
* necessary because we don't re-read the config file during
53015301
* backend start.
5302+
*
5303+
* In EXEC_BACKEND builds, this works differently: we load all
5304+
* nondefault settings from the CONFIG_EXEC_PARAMS file during
5305+
* backend start. In that case we must accept PGC_SIGHUP
5306+
* settings, so as to have the same value as if we'd forked
5307+
* from the postmaster. We detect this situation by checking
5308+
* IsInitProcessingMode, which is a bit ugly, but it doesn't
5309+
* seem worth passing down an explicit flag saying we're doing
5310+
* read_nondefault_variables().
53025311
*/
5312+
#ifdef EXEC_BACKEND
5313+
if (IsUnderPostmaster && !IsInitProcessingMode())
5314+
return -1;
5315+
#else
53035316
if (IsUnderPostmaster)
53045317
return -1;
5318+
#endif
53055319
}
53065320
else if (context != PGC_POSTMASTER && context != PGC_BACKEND &&
53075321
source != PGC_S_CLIENT)
@@ -7710,6 +7724,12 @@ read_nondefault_variables(void)
77107724
GucSource varsource;
77117725
GucContext varscontext;
77127726

7727+
/*
7728+
* Assert that PGC_BACKEND case in set_config_option() will do the right
7729+
* thing.
7730+
*/
7731+
Assert(IsInitProcessingMode());
7732+
77137733
/*
77147734
* Open file
77157735
*/

0 commit comments

Comments
 (0)