Re: A weird bit in pg_upgrade/exec.c

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: a.akenteva@postgrespro.ru
Cc: pgsql-hackers@postgresql.org
Date: 2017-11-09T16:17:26Z
Lists: pgsql-hackers
a.akenteva@postgrespro.ru writes:
> I've came across a weird bit in pg_upgrade/exec.c

> We have a function check_bin_dir() which goes like this (old_cluster and 
> new_cluster are global variables):
> void check_bin_dir(ClusterInfo *cluster)
> {
>      ...
>      get_bin_version(&old_cluster);
>      get_bin_version(&new_cluster);
>      ...
> }

> This function has two calls:
> check_bin_dir(&old_cluster);
> check_bin_dir(&new_cluster);

> I'd like to substitute these last two lines with this:
> get_bin_version(cluster);

Yeah, the way it is now seems outright broken.  It will try to do
get_bin_version on the new cluster before having done validate_exec
there, violating its own comment.

I think we should change this as a bug fix, independently of whatever
else you had in mind to do here.

			regards, tom lane


Commits

  1. Fix bogus logic for checking data dirs' versions within pg_upgrade.

  2. Fix bogus logic for checking executables' versions within pg_upgrade.