Allow CREATE EXTENSION to follow extension update paths

Enterprise / PostgreSQL - Tom Lane [sss.pgh.pa.us] - 11 September 2016 13:15 UTC

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.jz2m2yh3und2dsuy@alap3.anarazel.de>

40b449a Allow CREATE EXTENSION to follow extension update paths.
doc/src/sgml/extend.sgml | 41 +++
src/backend/commands/extension.c | 608 +++++++++++++++++++++++++-------------
2 files changed, 439 insertions(+), 210 deletions(-)

Upstream: git.postgresql.org


  • Share