Re: Extensions, patch v16

David Wheeler <david@kineticode.com>

From: "David E. Wheeler" <david@kineticode.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Bruce Momjian <bruce@momjian.us>, Oleg Bartunov <oleg@sai.msu.su>, David Fetter <david@fetter.org>, Dimitri Fontaine <dimitri@2ndQuadrant.fr>, PostgreSQL Hackers <pgsql-hackers@postgresql.org>
Date: 2010-12-29T20:36:44Z
Lists: pgsql-hackers
On Dec 29, 2010, at 12:23 PM, Tom Lane wrote:

> We had a long discussion upthread of what version numbers to keep where.
> IMHO the Makefile is about the *least* useful place to put a version
> number; the more so if you want more than one.  What we seem to need is
> a version number in the .sql file itself (so that we can tell whether we
> need to take action to update the extension's catalog entries).  I'm not
> convinced yet whether there needs to be another version number embedded
> in the .so file --- it may well be that the PG major version number
> embedded with PG_MODULE_MAGIC is sufficient.

For contrib maybe, but not 3rd-party extensions.

> Personally I'd forget the notion of major.minor numbers here; all that
> will accomplish is to complicate storage and comparison of the numbers.
> We just need a simple integer that gets bumped whenever the extension's
> SQL script changes.

That won't be very flexible for third-party extensions. FWIW, for PGXN I mandated symantic version numbers (http://semver.org/), mainly because they're quite close to Pg core version numbers. I also created a basic data type for them:

  https://github.com/theory/pgxn-manager/blob/master/sql/02-types.sql#L70

Best,

David