Hi,

I've played with trying to find out which minimal set of files I need
from the old version to make pg_upgrade work. Interestingly, this
includes the good old postmaster binary:

$ sudo -u postgres pgsql/bin/pg_upgrade -b /var/tmp/pgsql/bin/ -B 
/usr/lib/postgresql/9.5/bin/ -d /etc/postgresql/9.5/main -D /tmp/9.5/data
Finding the real data directory for the old cluster         sh: 1: 
/var/tmp/pgsql/bin/postmaster: not found

Could not get data directory using "/var/tmp/pgsql/bin/postmaster" -D 
"/etc/postgresql/9.5/main" -C data_directory: No such file or directory
Failure, exiting

I think it should just use "postgres" there, patch attached. (If we
need to be compatible with postmaster-only PG versions from the last
century, it should try both names.)

Christoph
-- 
c...@df7cb.de | http://www.df7cb.de/
diff --git a/contrib/pg_upgrade/option.c b/contrib/pg_upgrade/option.c
new file mode 100644
index cfc88ec..bd810cd
*** a/contrib/pg_upgrade/option.c
--- b/contrib/pg_upgrade/option.c
*************** adjust_data_dir(ClusterInfo *cluster)
*** 415,421 ****
  	 * so this might fail --- only works for PG 9.2+.   If this fails,
  	 * pg_upgrade will fail anyway because the data files will not be found.
  	 */
! 	snprintf(cmd, sizeof(cmd), "\"%s/postmaster\" -D \"%s\" -C data_directory",
  			 cluster->bindir, cluster->pgconfig);
  
  	if ((output = popen(cmd, "r")) == NULL ||
--- 415,421 ----
  	 * so this might fail --- only works for PG 9.2+.   If this fails,
  	 * pg_upgrade will fail anyway because the data files will not be found.
  	 */
! 	snprintf(cmd, sizeof(cmd), "\"%s/postgres\" -D \"%s\" -C data_directory",
  			 cluster->bindir, cluster->pgconfig);
  
  	if ((output = popen(cmd, "r")) == NULL ||
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to