| From: | Jakob Egger <jakob(at)eggerapps(dot)at> |
|---|---|
| To: | pgsql-hackers(at)postgresql(dot)org |
| Cc: | david(at)justatheory(dot)com, Tobias Bussmann <t(dot)bussmann(at)gmx(dot)net> |
| Subject: | glob support in extension_control_path/dynamic_library_path? |
| Date: | 2026-05-29 12:26:59 |
| Message-ID: | 173DB423-A230-41F8-AB24-2590C5053B8E@eggerapps.at |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hello!
The extension_control_path setting allowed us to offer precompiled downloadable extensions for Postgres.app: https://postgresapp.com/extensions/
We install extensions each into their own path, for example:
/Users/USER/Library/Application Support/Postgres/Extensions/18/http
/Users/USER/Library/Application Support/Postgres/Extensions/18/pg_cron
....
This allows us to update extensions by just deleting the folder and installing the new version -- we don't need to track all the files belonging to an extension. If we put all separately downloaded extensions in a single directory we would be very likely to end up with orphaned files sooner or later.
However, this leads to a rather lengthy configuration that needs to be updated whenever an extension is installed:
extension_control_path="$system:/Users/jakob/Library/Application Support/Postgres/Extensions/18/pg_parquet/share/postgresql:/Users/jakob/Library/Application Support/Postgres/Extensions/18/pg_cron/share/postgresql:/Users/jakob/Library/Application Support/Postgres/Extensions/18/http/share/postgresql:/Users/jakob/Library/Application Support/Postgres/Extensions/18/timescaledb/share/postgresql:/Users/jakob/Library/Application Support/Postgres/Extensions/18/plv8/share/postgresql:/Users/jakob/Library/Application Support/Postgres/Extensions/18/pg_search/share/postgresql"
It would be really nice if we could just use glob patterns like this:
extension_control_path="$system:/Users/jakob/Library/Application Support/Postgres/Extensions/18/*/share/postgresql"
dynamic_library_path="$libdir:/Users/jakob/Library/Application Support/Postgres/Extensions/18/*/lib/postgresql"
This would also have the advantage of not requiring a server restart after installing an extension.
I believe this would also be useful for Docker use case mentioned in the original thread (https://www.postgresql.org/message-id/E7C7BFFB-8857-48D4-A71F-88B359FADCFD%40justatheory.com) when multiple extensions are used
I have tried implementing this patch myself, and it was pretty straightforward to implement a proof of concept.
I wonder if such an addition would be useful for other packagers?
Best regards,
Jakob
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Robert Haas | 2026-05-29 12:48:58 | Re: injection_points: Switch wait/wakeup to use atomics rather than latches |
| Previous Message | Matthias van de Meent | 2026-05-29 12:04:00 | Re: Key joins |