pg_upgrade from PG-14.5 to PG-15.1 failing due to non-existing function

Dimos Stamatakis <dimos.stamatakis@servicenow.com>

From: Dimos Stamatakis <dimos.stamatakis@servicenow.com>
To: "pgsql-hackers@lists.postgresql.org" <pgsql-hackers@lists.postgresql.org>
Date: 2023-01-25T18:38:55Z
Lists: pgsql-hackers
Hi hackers,

I attempted to perform an upgrade from PG-14.5 to PG-15.1 with pg_upgrade and unfortunately it errors out because of a function that does not exist anymore in PG-15.1.
The function is ‘pg_catalog.close_lb’ and it exists in 14.5 but not in 15.1.
In our scenario we changed the permissions of this function in PG14.5 (via an automated tool) and then pg_upgrade tries to change the permissions in PG15.1 as well.


Steps to reproduce:


  1.  Run initdb for 14.5
  2.  Run initdb for 15.1
  3.  Run psql client on 14.5
     *   postgres=# REVOKE ALL ON FUNCTION close_lb(line, box) FROM $USER;
  4.  Run pg_upgrade from 14.5 to 15.1

This will error out because pg_upgrade will attempt to REVOKE the persmissions on close_lb on 15.1.
Is there a way to specify which functions/objects to exclude in pg_upgrade?
Thanks in advance!

Dimos
(ServiceNow)