Ignore more environment variables in pg_regress.c
authorMichael Paquier <michael@paquier.xyz>
Sun, 13 Jun 2021 11:07:39 +0000 (20:07 +0900)
committerMichael Paquier <michael@paquier.xyz>
Sun, 13 Jun 2021 11:07:39 +0000 (20:07 +0900)
This is similar to the work done in 8279f68 for TestLib.pm, where
environment variables set may cause unwanted failures if using a
temporary installation with pg_regress.  The list of variables reset is
adjusted in each stable branch depending on what is supported.

Comments are added to remember that the lists in TestLib.pm and
pg_regress.c had better be kept in sync.

Reviewed-by: Álvaro Herrera
Discussion: https://postgr.es/m/YMNR9GYDn+fHlMta@paquier.xyz
Backpatch-through: 9.6

src/test/perl/TestLib.pm
src/test/regress/pg_regress.c

index 47d7f31e94ce48dddb7f2d7bbd4896d4c666be36..26fbe08d4be82f05b768c3f20392f98aa83783a7 100644 (file)
@@ -104,6 +104,7 @@ BEGIN
    delete $ENV{LC_ALL};
    $ENV{LC_MESSAGES} = 'C';
 
+   # This list should be kept in sync with pg_regress.c.
    my @envkeys = qw (
      PGCHANNELBINDING
      PGCLIENTENCODING
index e04d365258d9e85cec2e7cd4d87c98898809fdac..05296f7ee1db9bc6c923908f051c698e43227240 100644 (file)
@@ -819,14 +819,38 @@ initialize_environment(void)
         * we also use psql's -X switch consistently, so that ~/.psqlrc files
         * won't mess things up.)  Also, set PGPORT to the temp port, and set
         * PGHOST depending on whether we are using TCP or Unix sockets.
+        *
+        * This list should be kept in sync with TestLib.pm.
         */
+       unsetenv("PGCHANNELBINDING");
+       /* PGCLIENTENCODING, see above */
+       unsetenv("PGCONNECT_TIMEOUT");
+       unsetenv("PGDATA");
        unsetenv("PGDATABASE");
-       unsetenv("PGUSER");
+       unsetenv("PGGSSENCMODE");
+       unsetenv("PGGSSLIB");
+       /* PGHOSTADDR, see below */
+       unsetenv("PGKRBSRVNAME");
+       unsetenv("PGPASSFILE");
+       unsetenv("PGPASSWORD");
+       unsetenv("PGREQUIREPEER");
+       unsetenv("PGREQUIRESSL");
        unsetenv("PGSERVICE");
+       unsetenv("PGSERVICEFILE");
+       unsetenv("PGSSLCERT");
+       unsetenv("PGSSLCRL");
+       unsetenv("PGSSLCRLDIR");
+       unsetenv("PGSSLKEY");
+       unsetenv("PGSSLMAXPROTOCOLVERSION");
+       unsetenv("PGSSLMINPROTOCOLVERSION");
        unsetenv("PGSSLMODE");
-       unsetenv("PGREQUIRESSL");
-       unsetenv("PGCONNECT_TIMEOUT");
-       unsetenv("PGDATA");
+       unsetenv("PGSSLROOTCERT");
+       unsetenv("PGSSLSNI");
+       unsetenv("PGTARGETSESSIONATTRS");
+       unsetenv("PGUSER");
+       /* PGPORT, see below */
+       /* PGHOST, see below */
+
 #ifdef HAVE_UNIX_SOCKETS
        if (hostname != NULL)
            setenv("PGHOST", hostname, 1);