parent
152d24f5dd
commit
7c619be623
|
@ -149,7 +149,7 @@ ProcessConfigFile(GucContext context)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Parse postgresql.auto.conf file after postgresql.conf to replace
|
* Parse file PG_AUTOCONF_FILENAME after postgresql.conf to replace
|
||||||
* parameters set by ALTER SYSTEM command. This file is present in
|
* parameters set by ALTER SYSTEM command. This file is present in
|
||||||
* data directory, however when called during initdb data directory is not
|
* data directory, however when called during initdb data directory is not
|
||||||
* set till this point, so use ConfigFile path which will be same.
|
* set till this point, so use ConfigFile path which will be same.
|
||||||
|
|
|
@ -6457,9 +6457,9 @@ flatten_set_variable_args(const char *name, List *args)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Writes updated configuration parameter values into
|
* Write updated configuration parameter values into a temporary file.
|
||||||
* postgresql.auto.conf.temp file. It traverses the list of parameters
|
* This function traverses the list of parameters and quotes the string
|
||||||
* and quote the string values before writing them to temporaray file.
|
* values before writing them.
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
write_auto_conf_file(int fd, const char *filename, ConfigVariable **head_p)
|
write_auto_conf_file(int fd, const char *filename, ConfigVariable **head_p)
|
||||||
|
@ -6517,7 +6517,7 @@ write_auto_conf_file(int fd, const char *filename, ConfigVariable **head_p)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* This function takes list of all configuration parameters in
|
* This function takes list of all configuration parameters in
|
||||||
* postgresql.auto.conf and parameter to be updated as input arguments and
|
* PG_AUTOCONF_FILENAME and parameter to be updated as input arguments and
|
||||||
* replace the updated configuration parameter value in a list. If the
|
* replace the updated configuration parameter value in a list. If the
|
||||||
* parameter to be updated is new then it is appended to the list of
|
* parameter to be updated is new then it is appended to the list of
|
||||||
* parameters.
|
* parameters.
|
||||||
|
@ -6595,13 +6595,12 @@ replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **tail_p,
|
||||||
* and write them all to the automatic configuration file.
|
* and write them all to the automatic configuration file.
|
||||||
*
|
*
|
||||||
* The configuration parameters are written to a temporary
|
* The configuration parameters are written to a temporary
|
||||||
* file then renamed to the final name. The template for the
|
* file then renamed to the final name.
|
||||||
* temporary file is postgresql.auto.conf.temp.
|
|
||||||
*
|
*
|
||||||
* An LWLock is used to serialize writing to the same file.
|
* An LWLock is used to serialize writing to the same file.
|
||||||
*
|
*
|
||||||
* In case of an error, we leave the original automatic
|
* In case of an error, we leave the original automatic
|
||||||
* configuration file (postgresql.auto.conf) intact.
|
* configuration file (PG_AUTOCONF_FILENAME) intact.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
AlterSystemSetConfigFile(AlterSystemStmt * altersysstmt)
|
AlterSystemSetConfigFile(AlterSystemStmt * altersysstmt)
|
||||||
|
@ -6664,8 +6663,8 @@ AlterSystemSetConfigFile(AlterSystemStmt * altersysstmt)
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Use data directory as reference path for postgresql.auto.conf and it's
|
* Use data directory as reference path for PG_AUTOCONF_FILENAME and its
|
||||||
* corresponding temp file
|
* corresponding temporary file.
|
||||||
*/
|
*/
|
||||||
join_path_components(AutoConfFileName, data_directory, PG_AUTOCONF_FILENAME);
|
join_path_components(AutoConfFileName, data_directory, PG_AUTOCONF_FILENAME);
|
||||||
canonicalize_path(AutoConfFileName);
|
canonicalize_path(AutoConfFileName);
|
||||||
|
@ -6674,10 +6673,10 @@ AlterSystemSetConfigFile(AlterSystemStmt * altersysstmt)
|
||||||
"temp");
|
"temp");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* one backend is allowed to operate on postgresql.auto.conf file, to
|
* One backend is allowed to operate on file PG_AUTOCONF_FILENAME, to
|
||||||
* ensure that we need to update the contents of the file with
|
* ensure that we need to update the contents of the file with
|
||||||
* AutoFileLock. To ensure crash safety, first the contents are written to
|
* AutoFileLock. To ensure crash safety, first the contents are written to
|
||||||
* temporary file and then rename it to postgresql.auto.conf. In case
|
* a temporary file which is then renameed to PG_AUTOCONF_FILENAME. In case
|
||||||
* there exists a temp file from previous crash, that can be reused.
|
* there exists a temp file from previous crash, that can be reused.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -6694,14 +6693,14 @@ AlterSystemSetConfigFile(AlterSystemStmt * altersysstmt)
|
||||||
{
|
{
|
||||||
if (stat(AutoConfFileName, &st) == 0)
|
if (stat(AutoConfFileName, &st) == 0)
|
||||||
{
|
{
|
||||||
/* open postgresql.auto.conf file */
|
/* open file PG_AUTOCONF_FILENAME */
|
||||||
infile = AllocateFile(AutoConfFileName, "r");
|
infile = AllocateFile(AutoConfFileName, "r");
|
||||||
if (infile == NULL)
|
if (infile == NULL)
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errmsg("failed to open auto conf file \"%s\": %m ",
|
(errmsg("failed to open auto conf file \"%s\": %m ",
|
||||||
AutoConfFileName)));
|
AutoConfFileName)));
|
||||||
|
|
||||||
/* Parse the postgresql.auto.conf file */
|
/* parse it */
|
||||||
ParseConfigFp(infile, AutoConfFileName, 0, LOG, &head, &tail);
|
ParseConfigFp(infile, AutoConfFileName, 0, LOG, &head, &tail);
|
||||||
|
|
||||||
FreeFile(infile);
|
FreeFile(infile);
|
||||||
|
@ -6713,7 +6712,7 @@ AlterSystemSetConfigFile(AlterSystemStmt * altersysstmt)
|
||||||
*/
|
*/
|
||||||
replace_auto_config_value(&head, &tail, AutoConfFileName, name, value);
|
replace_auto_config_value(&head, &tail, AutoConfFileName, name, value);
|
||||||
|
|
||||||
/* Write and sync the New contents to postgresql.auto.conf.temp file */
|
/* Write and sync the new contents to the temporary file */
|
||||||
write_auto_conf_file(Tmpfd, AutoConfTmpFileName, &head);
|
write_auto_conf_file(Tmpfd, AutoConfTmpFileName, &head);
|
||||||
|
|
||||||
close(Tmpfd);
|
close(Tmpfd);
|
||||||
|
|
|
@ -304,6 +304,6 @@
|
||||||
/*
|
/*
|
||||||
* Automatic configuration file name for ALTER SYSTEM.
|
* Automatic configuration file name for ALTER SYSTEM.
|
||||||
* This file will be used to store values of configuration parameters
|
* This file will be used to store values of configuration parameters
|
||||||
* set by ALTER SYSTEM command
|
* set by ALTER SYSTEM command.
|
||||||
*/
|
*/
|
||||||
#define PG_AUTOCONF_FILENAME "postgresql.auto.conf"
|
#define PG_AUTOCONF_FILENAME "postgresql.auto.conf"
|
||||||
|
|
Loading…
Reference in New Issue