v9-0001-Fix-sanity-check-for-PGHOST-ADDR-in-pg_upgrade-wi.patch
text/x-diff
Filename: v9-0001-Fix-sanity-check-for-PGHOST-ADDR-in-pg_upgrade-wi.patch
Type: text/x-diff
Part: 0
Patch
Format: format-patch
Series: patch v9-0001
Subject: Fix sanity check for PGHOST[ADDR] in pg_upgrade with Windows paths
| File | + | − |
|---|---|---|
| src/bin/pg_upgrade/server.c | 2 | 1 |
From 7957ff3c2030a3a7df87ca0663a29deff69b385a Mon Sep 17 00:00:00 2001
From: Michael Paquier <michael@paquier.xyz>
Date: Tue, 15 Feb 2022 12:05:28 +0900
Subject: [PATCH v9 1/2] Fix sanity check for PGHOST[ADDR] in pg_upgrade with
Windows paths
The checks currently done at the startup of pg_upgrade for PGHOST and
PGHOSTADDR to avoid any attempt to access to an external cluster would
fail when attempting to use Windows paths, or even temporary paths
prefixed by '@'. is_unixsock_path() is designed to detect such cases,
so use it rather than assuming that all valid paths are prefixed with a
slash.
Issue found while testing the tests of pg_upgrade through the CI on
Windows.
Based on an analysis from me and a solution from Andres Freund.
---
src/bin/pg_upgrade/server.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/bin/pg_upgrade/server.c b/src/bin/pg_upgrade/server.c
index 7878d233de..265137e86b 100644
--- a/src/bin/pg_upgrade/server.c
+++ b/src/bin/pg_upgrade/server.c
@@ -11,6 +11,7 @@
#include "common/connect.h"
#include "fe_utils/string_utils.h"
+#include "libpq/pqcomm.h"
#include "pg_upgrade.h"
static PGconn *get_db_conn(ClusterInfo *cluster, const char *db_name);
@@ -368,7 +369,7 @@ check_pghost_envvar(void)
if (value && strlen(value) > 0 &&
/* check for 'local' host values */
(strcmp(value, "localhost") != 0 && strcmp(value, "127.0.0.1") != 0 &&
- strcmp(value, "::1") != 0 && value[0] != '/'))
+ strcmp(value, "::1") != 0 && !is_unixsock_path(value)))
pg_fatal("libpq environment variable %s has a non-local server value: %s\n",
option->envvar, value);
}
--
2.34.1