From 2de9797a4aff5f21c1bbfcfb72e01a223d9ed3c6 Mon Sep 17 00:00:00 2001 From: Polina Bungina Date: Thu, 11 Jan 2024 09:12:24 +0100 Subject: [PATCH] No pg_partman update from <5.X during major upgrade Due to the noticeable number of backward-incompatible changes in pg_parman 5.0, we better force users to prepare and check everything before actually upgrading the extension. So if performing major upgrade with pg_partman pre 5.X installed, we skip automatic update of it --- postgres-appliance/major_upgrade/pg_upgrade.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/postgres-appliance/major_upgrade/pg_upgrade.py b/postgres-appliance/major_upgrade/pg_upgrade.py index dee894b99..b8f66fb49 100644 --- a/postgres-appliance/major_upgrade/pg_upgrade.py +++ b/postgres-appliance/major_upgrade/pg_upgrade.py @@ -117,9 +117,12 @@ def update_extensions(self): for d in self._get_all_databases(): conn_kwargs['dbname'] = d with get_connection_cursor(**conn_kwargs) as cur: - cur.execute('SELECT quote_ident(extname) FROM pg_catalog.pg_extension') - for extname in cur.fetchall(): - query = 'ALTER EXTENSION {0} UPDATE'.format(extname[0]) + cur.execute('SELECT quote_ident(extname), extversion FROM pg_catalog.pg_extension') + for extname, version in cur.fetchall(): + # require manual update to 5.X+ + if extname == 'pg_partman' and int(version[0]) < 5: + continue + query = 'ALTER EXTENSION {0} UPDATE'.format(extname) logger.info("Executing '%s' in the database=%s", query, d) try: cur.execute(query)