Обсуждение: Role problem in Windows

Поиск
Список
Период
Сортировка

Role problem in Windows

От
Moreno Andreo
Дата:
Hi,
Running 9.1 on Windows 10, upgrading to 10 with pg_upgrade.

"Once upon a time" there was a bug in our automatic role creation 
procedure that did not mask vowels with accent (used in Italian 
language), like "ò, è" and the result was a role with an empty name.
We are now upgrading to 10, and pg_dumpall exits complaining with this 
role, showing its name (with mis-encoded UTF-8 accented vowel) as an 
invalid utf-8 character.

Trying to get rid of the role, that can't be deleted with a drop role 
because of the empty name, I did
delete from pg_authid where oid = nnnn

Role disappeared from role list.

At the next execution of the pg_upgrade it complains that role "nnnn" 
does not exist while dumping a trigger function. I tried remove the 
privilege from function ACL, but "role nnnnn does not exists".

Is there a way to recreate the deleted role, either as a dummy, so I can 
finish upgrade?
Is there another way to bypass the problem?

Any help would be appreciated.

Cheers,
Moreno.-



Re: Role problem in Windows

От
Melvin Davidson
Дата:


On Fri, Jul 6, 2018 at 10:01 AM, Moreno Andreo <moreno.andreo@evolu-s.it> wrote:
Hi,
Running 9.1 on Windows 10, upgrading to 10 with pg_upgrade.

"Once upon a time" there was a bug in our automatic role creation procedure that did not mask vowels with accent (used in Italian language), like "ò, è" and the result was a role with an empty name.
We are now upgrading to 10, and pg_dumpall exits complaining with this role, showing its name (with mis-encoded UTF-8 accented vowel) as an invalid utf-8 character.

Trying to get rid of the role, that can't be deleted with a drop role because of the empty name, I did
delete from pg_authid where oid = nnnn

Role disappeared from role list.

At the next execution of the pg_upgrade it complains that role "nnnn" does not exist while dumping a trigger function. I tried remove the privilege from function ACL, but "role nnnnn does not exists".

Is there a way to recreate the deleted role, either as a dummy, so I can finish upgrade?
Is there another way to bypass the problem?

Any help would be appreciated.

Cheers,
Moreno.-



>Is there a way to recreate the deleted role, either as a dummy, so I can finish upgrade?
I can't really suggest how to recreate the dummy role, but I do have an alternate solution.
Most probably pg_dump is complaining that role 'xxx' owns some tables. So you can use the
attached script and add 'AND a.rolname = 'xxx' to the WHERE clause.
Then as a superuser you can use ALTER TABLE xyz OWNER TO new_owner for each table found.
--
Melvin Davidson
Maj. Database & Exploration Specialist

Universe Exploration Command – UXC

Employment by invitation only!
Вложения