Re: Review: extension template - Mailing list pgsql-hackers
From | Markus Wanner |
---|---|
Subject | Re: Review: extension template |
Date | |
Msg-id | 51D9E243.8010302@bluegap.ch Whole thread Raw |
In response to | Re: Review: extension template (Dimitri Fontaine <dimitri@2ndQuadrant.fr>) |
Responses |
Re: Review: extension template
|
List | pgsql-hackers |
Hello Dimitri, On 07/07/2013 09:51 PM, Dimitri Fontaine wrote: > Markus Wanner <markus@bluegap.ch> writes: >> Oh, I just realize that pg_extension_{template,control,uptmpl} are not >> SHARED catalogs, but you need to install the template per-database and >> then need to enable it - per-database *again*. Why is that? > > Because the current model is not serving us well enough, with a single > module version per major version of PostgreSQL. Meaning for all the > clusters on the server, and all the databases in them. That's not an excuse for letting the user duplicate the effort of installing templates for every version of his extension in every database. > We want to be able to have postgis 1.5 and 2.x installed in two > different databases in the same cluster, don't we? The extension, yes. The template versions, no. There's utterly no point in having different 2.0 versions of the same extension in different databases. > Well the current patch we still can't because of the dynamically shared > object side of things, but that's not a good reason to impose the same > limitation on to the "template" idea. Without a dynamically shared object, you can well have different versions of an extension at work in different databases already. > After playing around with several ideas around that in the past two > development cycles, the community consensus clearly is that "extensions" > are *NEVER* going to be part of your dump scripts. Sounds strange to me. If you want Postgres to manage extensions, it needs the ability to backup and restore them. Otherwise, it doesn't really ... well ... manage them. > Now when using templates you have no other source to install the > extensions from at pg_restore time, given what I just said. > > The whole goal of the "template" idea is to offer a way to dump and > restore the data you need for CREATE EXTENSION to just work at restore > time, even when you sent the data over the wire. Which in turn violates the above cited community consensus, then. You lost me here. What's your point? I thought the goal of your patch was the ability to upload an extension via libpq. How does that address my concerns about usability and understandability of how these things work? Why the strange dependencies between templates and extensions? Or the ability to rename the template, but not the extension - while still having the later depend on the former? These things are what I'm opposing to. And I don't believe it necessarily needs to be exactly that way for dump and restore to work. Quite the opposite, in fact. Simpler design usually means simpler backup and restore procedures. > Current extension are managed on the file system, the contract is that > it is the user's job to maintain and ship that, externally to PostgreSQL > responsibilities. All that PostgreSQL knows about is to issue the CREATE > EXTENSION command at pg_restore time. > > With templates or in-line extensions, the contract is that the user asks > PostgreSQL to manage its extensions in the same way it does for the > other objects on the system. Understood. > The design we found to address that is > called "Extension Templates" and is implemented in the current patch. I placed my concerns with the proposed implementation. It's certainly not the only way how Postgres can manage its extensions. And I still hope we can come up with something that's simpler to use and easier to understand. However, I'm not a committer nor have I written code for this. I did my review and proposed two possible (opposite) directions for clean up and simplification of the design. I would now like others to chime in. Regards Markus Wanner
pgsql-hackers by date: