Re: RFC: Additional Directory for Extensions
Gabriele Bartolini <gabriele.bartolini@enterprisedb.com>
From: Gabriele Bartolini <gabriele.bartolini@enterprisedb.com>
To: Peter Eisentraut <peter@eisentraut.org>
Cc: Matheus Alcantara <matheusssilv97@gmail.com>,
Andrew Dunstan <andrew@dunslane.net>, Craig Ringer <craig.ringer@enterprisedb.com>,
"David E. Wheeler" <david@justatheory.com>, Robert Haas <robertmhaas@gmail.com>,
Alvaro Herrera <alvherre@alvh.no-ip.org>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2025-03-19T07:03:08Z
Lists: pgsql-hackers
Thanks everyone for making this happen. Ciao, Gabriele On Wed, 19 Mar 2025 at 07:42, Peter Eisentraut <peter@eisentraut.org> wrote: > On 12.03.25 14:17, Matheus Alcantara wrote: > >> There should be a simpler way into this. Maybe > >> pg_available_extensions() should fill out the ExtensionControlFile > >> structure itself, set ->control_dir with where it found it, then call > >> directly to parse_extension_control_file(), and that should skip the > >> finding if the directory is already set. Or something similar. > >> > > Good catch. I fixed this by creating a new function to construct the > > ExtensionControlFile and changed the pg_available_extensions to set the > > control_dir. The read_extension_control_file was also changed to just > > call this new function constructor. I implemented the logic to check if > > the control_dir is already set on parse_extension_control_file because > > it seems to me that make more sense to not call > > find_extension_control_filename instead of putting this logic there > > since we already set the control_dir when we find the control file, and > > having the logic to set the control_dir or skip the find_in_path seems > > more confusing on this function instead of on > > parse_extension_control_file. Please let me know what you think. > > Committed that, thanks. > > A small tweak I made was to replace palloc+snprintf by psprintf. Maybe > you were not aware that that function exists. > > I also simplified the error handling in parse_extension_control_file() a > bit. If we pass in a control directory (which is the new code we're > adding), then we can assume that we already found the file earlier, and > then if we now don't find it, then we should just report the file system > error instead of the "you should install this extension first" error. > It's kind of a "can't happen" error anyway, so the different is small. > > -- Gabriele Bartolini VP, Chief Architect, Kubernetes enterprisedb.com
Commits
-
doc: Flesh out extension docs for the "prefix" make variable
- 0064020680c1 18.0 landed
-
Fix extension control path tests
- b7076c1e7f43 18.0 landed
-
extension_control_path
- 4f7f7b037585 18.0 landed