On Wed, Oct 10, 2012 at 01:54:49PM -0400, Bruce Momjian wrote:
> On Wed, Oct 10, 2012 at 10:35:06AM -0600, Chris Ernst wrote:
> > On 10/10/2012 09:56 AM, Bruce Momjian wrote:
> > > Can you show me what is in the PG_VERSION file in the old cluster?  It
> > > should be "9.1".
> > 
> > Hi Bruce,
> > 
> > Thank you for the reply.  Indeed it is "9.1":
> > 
> > # cat /postgresql/9.1/main/PG_VERSION
> > 9.1
> > 
> > And just for good measure:
> > 
> > cat /postgresql/9.2/main/PG_VERSION
> > 9.2
> > 
> > And there are no other PostgreSQL versions on this machine.
> > 
> > Hmm... I was just about to send this when something else occurred to me.
> >  I had initially tried to run pg_upgrade as root and it said it couldn't
> > be run as root.  So I've been running it as my own user (which is in the
> > postgres group).  However, everything in /postgresql/9.1/main is owned
> > by postgres with 700 permissions.
> > 
> > I switched to the postgres user and now pg_upgrade is running.  Perhaps
> > just a more informative error message is in order.
> > 
> > Thank you for the shove in the right direction =)
> 
> Oops, that code was returning zero if it couldn't open the file.  The
> attached, applied patch to head and 9.2 issues a proper error message.
> 
> Seems this "zero return" has been in the code since the beginning.  :-(

CC to hackers.

Above is the email that caused me to fixed pg_upgrade's handling when it
can't read the data directory;  patch attached.

-- 
  Bruce Momjian  <br...@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + It's impossible for everything to be true. +
diff --git a/contrib/pg_upgrade/server.c b/contrib/pg_upgrade/server.c
new file mode 100644
index 11e7e75..a9f9d85
*** a/contrib/pg_upgrade/server.c
--- b/contrib/pg_upgrade/server.c
*************** get_major_server_version(ClusterInfo *cl
*** 149,155 ****
  	snprintf(ver_filename, sizeof(ver_filename), "%s/PG_VERSION",
  			 cluster->pgdata);
  	if ((version_fd = fopen(ver_filename, "r")) == NULL)
! 		return 0;
  
  	if (fscanf(version_fd, "%63s", cluster->major_version_str) == 0 ||
  		sscanf(cluster->major_version_str, "%d.%d", &integer_version,
--- 149,155 ----
  	snprintf(ver_filename, sizeof(ver_filename), "%s/PG_VERSION",
  			 cluster->pgdata);
  	if ((version_fd = fopen(ver_filename, "r")) == NULL)
! 		pg_log(PG_FATAL, "could not open version file: %s\n", ver_filename);
  
  	if (fscanf(version_fd, "%63s", cluster->major_version_str) == 0 ||
  		sscanf(cluster->major_version_str, "%d.%d", &integer_version,
-- 
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