</listitem>
</varlistentry>
- <varlistentry id="guc-recovery-config-directory" xreflabel="recovery_config_directory">
- <term><varname>recovery_config_directory</varname> (<type>string</type>)</term>
- <indexterm>
- <primary><varname>recovery_config_directory</> configuration parameter</primary>
- </indexterm>
- <listitem>
- <para>
- Specifies the directory to use for the recovery.conf file. Note
- the server requires read and write permission on this directory
- because the file will be renamed to recovery.done at the end of
- recovery.
- This parameter can only be set at server start.
- </para>
- </listitem>
- </varlistentry>
-
<varlistentry id="guc-config-file" xreflabel="config_file">
<term><varname>config_file</varname> (<type>string</type>)</term>
<indexterm>
extern bool bootstrap_data_checksums;
-char recoveryConfPath[MAXPGPATH];
/* File path names (all relative to $PGDATA) */
#define RECOVERY_COMMAND_FILE "recovery.conf"
#define RECOVERY_COMMAND_DONE "recovery.done"
*head = NULL,
*tail = NULL;
- snprintf(recoveryConfPath, MAXPGPATH, "%s/%s", RecoveryConfDir, RECOVERY_COMMAND_FILE);
- fd = AllocateFile(recoveryConfPath, "r");
+ fd = AllocateFile(RECOVERY_COMMAND_FILE, "r");
if (fd == NULL)
{
if (errno == ENOENT)
ereport(FATAL,
(errcode_for_file_access(),
errmsg("could not open recovery command file \"%s\": %m",
- recoveryConfPath)));
+ RECOVERY_COMMAND_FILE)));
}
/*
if (PrimaryConnInfo == NULL && recoveryRestoreCommand == NULL)
ereport(WARNING,
(errmsg("recovery command file \"%s\" specified neither primary_conninfo nor restore_command",
- recoveryConfPath),
+ RECOVERY_COMMAND_FILE),
errhint("The database server will regularly poll the pg_xlog subdirectory to check for files placed there.")));
}
else
if (recoveryRestoreCommand == NULL)
ereport(FATAL,
(errmsg("recovery command file \"%s\" must specify restore_command when standby mode is not enabled",
- recoveryConfPath)));
+ RECOVERY_COMMAND_FILE)));
}
/* Enable fetching from archive recovery area */
exitArchiveRecovery(TimeLineID endTLI, XLogSegNo endLogSegNo)
{
char recoveryPath[MAXPGPATH];
- char recoveryDonePath[MAXPGPATH];
char xlogpath[MAXPGPATH];
/*
* Rename the config file out of the way, so that we don't accidentally
* re-enter archive recovery mode in a subsequent crash.
*/
- snprintf(recoveryDonePath, MAXPGPATH, "%s/%s", RecoveryConfDir, RECOVERY_COMMAND_DONE);
- unlink(recoveryDonePath);
- if (rename(recoveryConfPath, recoveryDonePath) != 0)
+ unlink(RECOVERY_COMMAND_DONE);
+ if (rename(RECOVERY_COMMAND_FILE, RECOVERY_COMMAND_DONE) != 0)
ereport(FATAL,
(errcode_for_file_access(),
errmsg("could not rename file \"%s\" to \"%s\": %m",
- recoveryConfPath, recoveryDonePath)));
+ RECOVERY_COMMAND_FILE, RECOVERY_COMMAND_DONE)));
ereport(LOG,
(errmsg("archive recovery complete")));
* explicitly.
*/
char *DataDir = NULL;
-char *RecoveryConfDir = NULL;
char OutputFileName[MAXPGPATH]; /* debugging output file */
DataDir = new;
}
-/*
- * Set recovery config directory, but make sure it's an absolute path. Use this,
- * never set RecoveryConfDir directly.
- */
-void
-SetRecoveryConfDir(const char *dir)
-{
- char *new;
-
- AssertArg(dir);
-
- /* If presented path is relative, convert to absolute */
- new = make_absolute_path(dir);
-
- if (RecoveryConfDir)
- free(RecoveryConfDir);
- RecoveryConfDir = new;
-}
-
/*
* Change working directory to DataDir. Most of the postmaster and backend
* code assumes that we are in DataDir so it can use relative paths to access
int num_temp_buffers = 1024;
char *data_directory;
-char *recovery_config_directory;
char *ConfigFileName;
char *HbaFileName;
char *IdentFileName;
NULL, NULL, NULL
},
- {
- {"recovery_config_directory", PGC_POSTMASTER, FILE_LOCATIONS,
- gettext_noop("Sets the server's recovery configuration directory."),
- NULL,
- GUC_SUPERUSER_ONLY
- },
- &recovery_config_directory,
- NULL,
- NULL, NULL, NULL
- },
-
{
{"config_file", PGC_POSTMASTER, FILE_LOCATIONS,
gettext_noop("Sets the server's main configuration file."),
*/
SetConfigOption("data_directory", DataDir, PGC_POSTMASTER, PGC_S_OVERRIDE);
- /*
- * If the recovery_config_directory GUC variable has been set, use that,
- * otherwise use DataDir.
- *
- * Note: SetRecoveryConfDir will copy and absolute-ize its argument,
- * so we don't have to.
- */
- if (recovery_config_directory)
- SetRecoveryConfDir(recovery_config_directory);
- else
- SetRecoveryConfDir(DataDir);
-
/*
* If timezone_abbreviations wasn't set in the configuration file, install
* the default value. We do it this way because we can't safely install a
extern bool ExitOnAnyError;
extern PGDLLIMPORT char *DataDir;
-extern PGDLLIMPORT char *RecoveryConfDir;
extern PGDLLIMPORT int NBuffers;
extern int MaxBackends;
extern void SetCurrentRoleId(Oid roleid, bool is_superuser);
extern void SetDataDir(const char *dir);
-extern void SetRecoveryConfDir(const char *dir);
extern void ChangeToDataDir(void);
extern char *make_absolute_path(const char *path);
extern int num_temp_buffers;
extern char *data_directory;
-extern char *recovery_config_directory;
extern char *ConfigFileName;
extern char *HbaFileName;
extern char *IdentFileName;