Tom Lane wrote:
> Heikki Linnakangas <hlinnakangas@vmware.com> writes:
> > On 04/28/2014 04:51 PM, Tom Lane wrote:
> >> I'm not even worried about which headers this program uses. What I'm
> >> worried about is that you've got CATALOG_VERSION_NO compiled into a
> >> non-server executable. Is that really such a great idea? Wouldn't it be
> >> better if pg_rewind did not depend on that? (Perhaps it should get the
> >> database's catalog version out of the pg_control file, for example.)
>
> > Sure, that would be better. Although I don't have much hope to make it
> > completely version-independent. At the moment, pg_rewind explicitly
> > reads the control file (yeah, it knows about that too), and checks that
> > the catalog version matches what pg_rewind was compiled with.
>
> ... which might or might not be the same one that libpgcommon was compiled
> with, no? I don't think you're really protecting yourself against version
> skew that way.
The CATALOG_VERSION dependency in that code is a mistake which I didn't
notice back then. I can't put too much thought into this issue at this
time, but printing fork numbers rather than names seems pretty
user-unfriendly to me. Rather than a revert of the whole patch I
would hope for some different solution, if possible, though I can't
offer anything right now.
I don't think it's very likely that we would renumber forks; so the only
possible problem would be that pg_rewind is linked with an older
libpgcommon than the server which doesn't know some newer fork
name/number and fails to produce a correct result. But ISTM we can
rightly consider that as pilot error, right?
--
Álvaro Herrera http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training & Services