Hi all,
I'm trying to pg_upgrade a cluster from 9.1 to 10 (Windows 10, but I
don't think it matters).
At a certain point an error is thrown while parsing a trigger:
could not execute query: ERROR: role "1067431" does not exist
command was: REVOKE ALL ON FUNCTION "x"() FROM PUBLIC;
GRANT ALL ON FUNCTION "public"."x"() TO "1067431" WITH GRANT OPTION;
Here's the evidence :-)
postgres=# \du
List of roles
Role name | Attributes |
Member of
------------------+-------------------------------------------------+-----------
user5 | Create role, Create DB | {}
user2 | Superuser, Create role, Create DB, Replication | {}
user4 | Create role, Create DB | {}
user3 | | {}
user1 | Superuser, Create role, Create DB, Replication | {}
postgres | Superuser, Create role, Create DB, Replication | {}
postgres=# select * from pg_roles;
rolname | rolsuper | rolinherit | rolcreaterole | rolcreatedb
| rolcatupdate | rolcanlogin | rolreplication | rolconnlimit |
rolpassword | rolvaliduntil | rolconfig | oid
------------------+----------+------------+---------------+-------------+--------------+-------------+----------------+--------------+-------------+---------------+-----------+---------
postgres | t | t | t | t
| t | t | t | -1 | ********
| | | 10
user1 | t | t | t | t | t
| t | t | -1 | ********
| | | 16393
user2 | t | t | t | t |
t | t | t | -1 | ********
| | | 16394
user3 | f | t | f | f | f
| t | f | -1 | ********
| | | 16395
user4 | f | t | t | t |
f | t | f | -1 | ********
| | | 1067432
user5 | f | t | t | t |
f | t | f | -1 | ********
| | | 30602
(6 rows)
So, no user with that OID. I checked in the trigger pointed to the error
and I found
GRANT EXECUTE ON FUNCTION x() TO "1067431" WITH GRANT OPTION;
How to REVOKE that non-existing user so pg_upgrade can proceed?
thanks
Moreno.-