From 025106e314627f5aacdf72fca52ba0ed985d696e Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Sat, 14 Nov 2015 11:47:12 -0500
Subject: [PATCH] pg_upgrade:  properly detect file copy failure on Windows

Previously, file copy failures were ignored on Windows due to an
incorrect return value check.

Report by Manu Joye

Backpatch through 9.1
---
 src/bin/pg_upgrade/file.c       | 6 +++++-
 src/bin/pg_upgrade/pg_upgrade.h | 2 --
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/bin/pg_upgrade/file.c b/src/bin/pg_upgrade/file.c
index 79d9390216e..37eb832c93a 100644
--- a/src/bin/pg_upgrade/file.c
+++ b/src/bin/pg_upgrade/file.c
@@ -34,7 +34,11 @@ copyAndUpdateFile(pageCnvCtx *pageConverter,
 {
 	if (pageConverter == NULL)
 	{
-		if (pg_copy_file(src, dst, force) == -1)
+#ifndef WIN32
+		if (copy_file(src, dst, force) == -1)
+#else
+		if (CopyFile(src, dst, force) == 0)
+#endif
 			return getErrorText(errno);
 		else
 			return NULL;
diff --git a/src/bin/pg_upgrade/pg_upgrade.h b/src/bin/pg_upgrade/pg_upgrade.h
index 13aa891d59d..fa4661b7d6a 100644
--- a/src/bin/pg_upgrade/pg_upgrade.h
+++ b/src/bin/pg_upgrade/pg_upgrade.h
@@ -70,7 +70,6 @@ extern char *output_files[];
 
 
 #ifndef WIN32
-#define pg_copy_file		copy_file
 #define pg_mv_file			rename
 #define pg_link_file		link
 #define PATH_SEPARATOR		'/'
@@ -82,7 +81,6 @@ extern char *output_files[];
 #define ECHO_QUOTE	"'"
 #define ECHO_BLANK	""
 #else
-#define pg_copy_file		CopyFile
 #define pg_mv_file			pgrename
 #define pg_link_file		win32_pghardlink
 #define PATH_SEPARATOR		'\\'
-- 
GitLab