On Sat, Nov 12, 2005 at 10:47:35AM -0500, Tom Lane wrote:
> Martijn van Oosterhout <kleptog@svana.org> writes:
> > I would be in favour if storing the CATALOG_VERSION in the pg_finfo
> > struct and rejecting anything that doesn't match.
>
> Not sure that CATALOG_VERSION is an amazingly useful thing to use.
> I think the major version number (eg "8.1") would be sufficient,
> and it'd certainly give error messages that meant more to the casual
> user.
Sure, CATALOG_VERSION isn't that useful, but it's the only thing in the
header files that gives any kind of indication what version you're
compiling against. PG_VERSION is a string, which diminishes its
usefulness considerably.
> The problem with CATALOG_VERSION is that we bump it basically for
> changes in the on-disk contents of a freshly initdb'd database, which
> does not have all that much to do with the ABI seen by a shared library.
> To have something useful that is finer-grain than major version number,
> I think we'd need to invent a separate version number that could be
> bumped whenever we made incompatible changes in in-memory structures
> or function APIs. Which'd be almost every day during development :-(
> I don't think it's worth trying to do that. People who work with
> development tip should know to recompile their libraries whenever they
> recompile the main system.
People working with development versions are more likely to get it
right, and more importantly, they're less likely to complain to the
list as they're likely to know what's happening. What we're dealing
with is laymen crossing completely different versions of postgres, and
the catalog version will catch them. Unless someone is actually willing
to maintain a seperate ABI version, using the catalog version will at
least solve the major problem.
Have a nice day,
--
Martijn van Oosterhout <kleptog@svana.org> http://svana.org/kleptog/
> Patent. n. Genius is 5% inspiration and 95% perspiration. A patent is a
> tool for doing 5% of the work and then sitting around waiting for someone
> else to do the other 95% so you can sue them.