]> granicus.if.org Git - postgresql/commitdiff
Revert exporting of internal GUC variable "data_directory".
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 29 May 2015 15:57:33 +0000 (11:57 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 29 May 2015 15:57:33 +0000 (11:57 -0400)
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
src/include/utils/guc.h

index be7ba4f29d8b31c3fb4014657dcea0d2ffcfb758..b3c9f14ea4dfbcd6d65cd5d1ad64d1aee700f0f8 100644 (file)
@@ -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");
index a8191c94c39008ffbc06805af5d523f60e1c26f1..ffe1168ccc1ed78f96a7dfbedbea1a5da64f495a 100644 (file)
@@ -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;