Thread: Changing owner of function -- best method?

Changing owner of function -- best method?

From
Josh Berkus
Date:
Folks,

I have several functions in a 7.2.4 database that I accidentally REPLACEd 
while logged in as the superuser, instead of the db owner.   As a result, the 
db owner can no longer modify those functions -- they belong to the 
superuser.

As this is a production database, I can't drop the functions and re-create 
them as a different user ... the interruption in service would not be 
acceptable.   I was wondering whether there were any problems with either of 
the following methods:

A)  Updating the pg_proc table to change the function owner;
B)  Making the db_owner a superuser, replacing the functions, and then making 
the db_owner a non-superuser again.

BTW, is there a neater method to deal with this in 7.4?   7.2 and 7.3 have 
ALTER TABLE ... CHANGE OWNER, but other types of objects don't seem to have a 
CHANGE OWNER option.

-- 
Josh Berkus
Aglio Database Solutions
San Francisco


Re: Changing owner of function -- best method?

From
Dmitry Tkach
Date:
Josh Berkus wrote:

>Folks,
>
>I have several functions in a 7.2.4 database that I accidentally REPLACEd 
>while logged in as the superuser, instead of the db owner.   As a result, the 
>db owner can no longer modify those functions -- they belong to the 
>superuser.
>
>As this is a production database, I can't drop the functions and re-create 
>them as a different user ... the interruption in service would not be 
>acceptable.   I was wondering whether there were any problems with either of 
>the following methods:
>
>A)  Updating the pg_proc table to change the function owner;
>B)  Making the db_owner a superuser, replacing the functions, and then making 
>the db_owner a non-superuser again.
>  
>
I believe, either of two should work. I have done it many times in the 
past...

Dima




Re: Changing owner of function -- best method?

From
Tom Lane
Date:
Josh Berkus <josh@agliodbs.com> writes:
> A)  Updating the pg_proc table to change the function owner;

That seems safe enough.
        regards, tom lane