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)



Reply via email to