Re: Only one version can be installed when using extension_control_path

From: Pierrick <pierrick(dot)chovelon(at)dalibo(dot)com>
To: Peter Eisentraut <peter(at)eisentraut(dot)org>
Cc: "pgsql-hackers(at)lists(dot)postgresql(dot)org" <pgsql-hackers(at)lists(dot)postgresql(dot)org>, "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Matheus Alcantara <matheusssilv97(at)gmail(dot)com>
Subject: Re: Only one version can be installed when using extension_control_path
Date: 2025-09-11 18:03:07
Message-ID: 4e24fd4c-61e9-41e2-b3ac-c2160502a16b@dalibo.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 11/09/2025 16:11, Peter Eisentraut wrote:
>
> Here is a patch for that.  Please test it against your setup.
Thanks a lot. Here is a test, and IMHO, it looks good.

-- version 1 of monextension is in /tmp/extensions/share/extension

postgres=# show extension_control_path ;
                extension_control_path
------------------------------------------------------
 $system:/tmp/extensions/share:/tmp/extensions2/share
(1 ligne)

postgres=# select * from pg_available_extensions where name =
'monextension';
     name     | default_version | installed_version |    comment
--------------+-----------------+-------------------+---------------
 monextension | 1.0             |                   | Mon extension
(1 ligne)

-- switching order

postgres=# alter system set extension_control_path =
'$system:/tmp/extensions2/share:/tmp/extensions/share';
ALTER SYSTEM
postgres=# select pg_reload_conf();
 pg_reload_conf
----------------
 t
(1 ligne)

postgres=# show extension_control_path ;
                extension_control_path
------------------------------------------------------
 $system:/tmp/extensions2/share:/tmp/extensions/share
(1 ligne)

-- version 2 of monextension is in /tmp/extensions2/share/extension

postgres=# select * from pg_available_extensions where name =
'monextension';
     name     | default_version | installed_version |    comment
--------------+-----------------+-------------------+---------------
 monextension | 2.0             |                   | Mon extension
(1 ligne)

-- make a mistake in first folder

postgres=# alter system set extension_control_path =
'$system:/tmp/extension_old/share:/tmp/extensions/share';
ALTER SYSTEM
postgres=# select pg_reload_conf();
 pg_reload_conf
----------------
 t
(1 ligne)

-- still version 2.0
postgres=# select * from pg_available_extensions where name =
'monextension';
     name     | default_version | installed_version |    comment
--------------+-----------------+-------------------+---------------
 monextension | 1.0             |                   | Mon extension
(1 ligne)

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Álvaro Herrera 2025-09-11 18:05:32 Re: Unexpected changes of CurrentResourceOwner and CurrentMemoryContext
Previous Message Álvaro Herrera 2025-09-11 17:55:25 Re: Foreign key isolation tests