Re: Inline Extension - Mailing list pgsql-hackers
From | Robert Haas |
---|---|
Subject | Re: Inline Extension |
Date | |
Msg-id | CA+TgmobJ-yCHt_utgJJL9WiiPssUAJWFd=3=uLrOB9nhBpCDOA@mail.gmail.com Whole thread Raw |
In response to | Re: Inline Extension (Dimitri Fontaine <dimitri@2ndQuadrant.fr>) |
Responses |
Re: Inline Extension
|
List | pgsql-hackers |
On Mon, Jan 23, 2012 at 5:53 AM, Dimitri Fontaine <dimitri@2ndquadrant.fr> wrote: >> Probably the worst issue with that is that in typical installations, >> the share/extension/ directory would be read-only to the server, and a >> lot of people might be uncomfortable with making it writable. Not sure >> whether we should consider inventing another place to keep >> SQL-command-installed extensions, or just say "if you want this >> functionality you have to make share/extension/ writable". > > So I've been wondering about storing the script content in the catalogs, > but you would have to store all the update scripts too and that's > useless because you want to dump the current state of the system, which > pg_dump is doing just fine. I'm not convinced that's useless. It would meet Dan's requirement to be able to manage the whole thing via the FE-BE protocol, and we could make the CREATE EXTENSION mechanism transparently search both the catalog and the filesystem when an extension is installed. I'm imagining that we'd create a catalog that would act as a sort of "virtual directory" - e.g. CREATE TABLE pg_extension_virtualdir (filename text, content text) which would be modifiable by the DBA and would be searched either before or after the filesystem itself. This catalog wouldn't be dumped by pg_dump, and there would be no changes to how extensions whose files are loaded from this catalog are dumped vs. those whose files are loaded from the filesystem. Rather, just as now, it would be the DBA's responsibility to make sure that the extensions needed to reload a given dump file are present on the new system - except now they'd have two choices where to put the related fies: on the file system, or in the per-database "virtual directory". > Back to using the file system on the server when handed the script > content over the protocol, we could get there with a new GUC telling the > server where to find and store “inline” extensions, right? > > extension_inline_directory = '/path/to/some/writable/place' > > Then creating an extension would look in both the system extension > directory and the inline one, which covers dump and restore. Creating > an inline extension means creating the .control and the .sql files in > the extension_inline_directory, then running the current code. This is another possible approach, but it requires a bit more configuration, and we'd better think carefully about what a malicious non-superuser DBA can do by changing that GUC. -- Robert Haas EnterpriseDB: http://www.enterprisedb.com The Enterprise PostgreSQL Company
pgsql-hackers by date: