pgsql: Allow CREATE EXTENSION to follow extension update paths.

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)postgresql(dot)org
Subject: pgsql: Allow CREATE EXTENSION to follow extension update paths.
Date: 2016-09-11 18:15:14
Message-ID: E1bj9He-00073p-IY@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Allow CREATE EXTENSION to follow extension update paths.

Previously, to update an extension you had to produce both a version-update
script and a new base installation script. It's become more and more
obvious that that's tedious, duplicative, and error-prone. This patch
attempts to improve matters by allowing the new base installation script
to be omitted. CREATE EXTENSION will install a requested version if it
can find a base script and a chain of update scripts that will get there.
As in the existing update logic, shorter chains are preferred if there's
more than one possibility, with an arbitrary tie-break rule for chains
of equal length.

Also adjust the pg_available_extension_versions view to show such versions
as installable.

While at it, refactor the code so that CASCADE processing works for
extensions requested during ApplyExtensionUpdates(). Without this,
addition of a new requirement in an updated extension would require
creating a new base script, even if there was no other reason to do that.
(It would be easy at this point to add a CASCADE option to ALTER EXTENSION
UPDATE, to allow the same thing to happen during a manually-commanded
version update, but I have not done that here.)

Tom Lane, reviewed by Andres Freund

Discussion: <20160905005919(dot)jz2m2yh3und2dsuy(at)alap3(dot)anarazel(dot)de>

Branch
------
master

Details
-------
http://git.postgresql.org/pg/commitdiff/40b449ae84dcf71177d7749a7b0c582b64dc15f0

Modified Files
--------------
doc/src/sgml/extend.sgml | 41 +++
src/backend/commands/extension.c | 608 +++++++++++++++++++++++++--------------
2 files changed, 439 insertions(+), 210 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Kevin Grittner 2016-09-11 20:41:06 pgsql: psql tab completion for CREATE DATABASE ... TEMPLATE ...
Previous Message Tom Lane 2016-09-11 16:47:02 pgsql: Fix and simplify MSVC build's handling of xml/xslt/uuid dependen