Kyotaro Horiguchi <horikyota....@gmail.com> writes: > FWIW, the following change makes sense to me according to the spec of > validate_exec()...
> diff --git a/src/bin/pg_upgrade/exec.c b/src/bin/pg_upgrade/exec.c > index fadeea12ca..3cff186213 100644 > --- a/src/bin/pg_upgrade/exec.c > +++ b/src/bin/pg_upgrade/exec.c > @@ -430,10 +430,10 @@ check_exec(const char *dir, const char *program, bool > check_version) > ret = validate_exec(path); > if (ret == -1) > - pg_fatal("check for \"%s\" failed: not a regular file\n", > + pg_fatal("check for \"%s\" failed: does not exist or > inexecutable\n", > path); > else if (ret == -2) > - pg_fatal("check for \"%s\" failed: cannot execute (permission > denied)\n", > + pg_fatal("check for \"%s\" failed: cannot read (permission > denied)\n", > path); > snprintf(cmd, sizeof(cmd), "\"%s\" -V", path); I initially did this, but then I wondered why validate_exec() was making it so hard: why can't we just report the failure with %m? It turns out to take only a couple extra lines of code to ensure that something more-or-less appropriate is returned, so we don't need to guess about it here. Pushed that way. regards, tom lane