From da33a3894e0fc440ac53cdc0f2e360e703b13b8c Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 29 May 2015 11:57:33 -0400 Subject: [PATCH] Revert exporting of internal GUC variable "data_directory". This undoes a poorly-thought-out choice in commit 970a18687f9b3058, namely to export guc.c's internal variable data_directory. The authoritative variable so far as C code is concerned is DataDir; there is no reason for anything except specific bits of GUC code to look at the GUC variable. After yesterday's commits fixing the fsync-on-restart patch, the only remaining misuse of data_directory was in AlterSystemSetConfigFile(), which would be much better off just using a relative path anyhow: it's less code and it doesn't break if the DBA moves the data directory of a running system, which is a case we've taken some pains over in the past. This is mostly cosmetic, so no need for a back-patch (and I'd be hesitant to remove a global variable in stable branches anyway). --- src/backend/utils/misc/guc.c | 10 +++++----- src/include/utils/guc.h | 1 - 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/src/backend/utils/misc/guc.c b/src/backend/utils/misc/guc.c index be7ba4f29d..b3c9f14ea4 100644 --- a/src/backend/utils/misc/guc.c +++ b/src/backend/utils/misc/guc.c @@ -435,7 +435,6 @@ int temp_file_limit = -1; int num_temp_buffers = 1024; char *cluster_name = ""; -char *data_directory; char *ConfigFileName; char *HbaFileName; char *IdentFileName; @@ -476,6 +475,7 @@ static char *timezone_string; static char *log_timezone_string; static char *timezone_abbreviations_string; static char *XactIsoLevel_string; +static char *data_directory; static char *session_authorization_string; static int max_function_args; static int max_index_keys; @@ -6895,11 +6895,11 @@ AlterSystemSetConfigFile(AlterSystemStmt *altersysstmt) } /* - * Use data directory as reference path for PG_AUTOCONF_FILENAME and its - * corresponding temporary file. + * PG_AUTOCONF_FILENAME and its corresponding temporary file are always in + * the data directory, so we can reference them by simple relative paths. */ - join_path_components(AutoConfFileName, data_directory, PG_AUTOCONF_FILENAME); - canonicalize_path(AutoConfFileName); + snprintf(AutoConfFileName, sizeof(AutoConfFileName), "%s", + PG_AUTOCONF_FILENAME); snprintf(AutoConfTmpFileName, sizeof(AutoConfTmpFileName), "%s.%s", AutoConfFileName, "tmp"); diff --git a/src/include/utils/guc.h b/src/include/utils/guc.h index a8191c94c3..ffe1168ccc 100644 --- a/src/include/utils/guc.h +++ b/src/include/utils/guc.h @@ -247,7 +247,6 @@ extern int temp_file_limit; extern int num_temp_buffers; extern char *cluster_name; -extern char *data_directory; extern char *ConfigFileName; extern char *HbaFileName; extern char *IdentFileName;