From a7c9f5bedf973dc60de8966ce3e1fd67d83b6187 Mon Sep 17 00:00:00 2001
From: Daniel Gustafsson <daniel@yesql.se>
Date: Mon, 25 Mar 2019 23:50:43 +0100
Subject: [PATCH 2/4] Check all used executables

Expand the validate_exec() calls to cover all the used binaries.
---
 src/bin/pg_upgrade/exec.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/bin/pg_upgrade/exec.c b/src/bin/pg_upgrade/exec.c
index e66170ffdd..f31c9d661a 100644
--- a/src/bin/pg_upgrade/exec.c
+++ b/src/bin/pg_upgrade/exec.c
@@ -384,6 +384,7 @@ check_bin_dir(ClusterInfo *cluster)
 					  cluster->bindir);
 
 	validate_exec(cluster->bindir, "postgres");
+	validate_exec(cluster->bindir, "pg_controldata");
 	validate_exec(cluster->bindir, "pg_ctl");
 
 	/*
@@ -398,12 +399,20 @@ check_bin_dir(ClusterInfo *cluster)
 		validate_exec(cluster->bindir, "pg_resetxlog");
 	else
 		validate_exec(cluster->bindir, "pg_resetwal");
+
 	if (cluster == &new_cluster)
 	{
-		/* these are only needed in the new cluster */
-		validate_exec(cluster->bindir, "psql");
+		/*
+		 * These binaries are only needed for the target version. pg_dump and
+		 * pg_dumpall are used to dump the old cluster, but must be of the
+		 * target version.
+		 */
+		validate_exec(cluster->bindir, "initdb");
 		validate_exec(cluster->bindir, "pg_dump");
 		validate_exec(cluster->bindir, "pg_dumpall");
+		validate_exec(cluster->bindir, "pg_restore");
+		validate_exec(cluster->bindir, "psql");
+		validate_exec(cluster->bindir, "vacuumdb");
 	}
 }
 
-- 
2.14.1.145.gb3622a4ee

