Re: psql missing feature: show permissions for functions - Mailing list pgsql-bugs

From Jorge Godoy
Subject Re: psql missing feature: show permissions for functions
Date
Msg-id m3sm9cefg1.fsf@g2ctech.com
Whole thread Raw
In response to Re: psql missing feature: show permissions for functions  ("John R Pierce" <pierce@hogranch.com>)
Responses Re: psql missing feature: show permissions for functions
List pgsql-bugs
"John R Pierce" <pierce@hogranch.com> writes:

>> I was trying to check some permissions on functions and then I noticed
>> that there's no command in psql to show that information.  I've tried
>> using "\z", "\df" and "\df+" without success on PostgreSQL 7.4.5.
>> It would be an interesting addition to have that, as we do have the
>> commands to show permissions on tables.
>
> ah, I found it.  try...
>
>    SELECT proacl FROM pg_proc WHERE proname='functioname';


Hi John!


It works.  How does it deal with overloaded functions? :-)  I don't have
any here, yet, but from pg_proc's contents I couldn't find one way to
define exactly what is the function that is authorized for use (we have
to pass the parameters of the function at the command line, otherwise
there's an error:

testbase=# GRANT EXECUTE ON FUNCTION my_function(VARCHAR, VARCHAR) TO dbmanager;
GRANT
testbase=# GRANT EXECUTE ON FUNCTION my_function TO dbmanager;
ERROR:  syntax error at or near "to" at character 41
testbase=# GRANT EXECUTE ON FUNCTION my_functon() TO dbmanager;
ERROR:  function my_function() does not exist
testbase=#

<some more testing>

I found that I can check 'proargtypes' column and compare it with the
definitions I want, but it would be great if there was some psql builtin
macro to do that :-)


This solves my problem from the SQL point of view, but I still think
that psql should have something like that (with the appropriate
proargtypes replacement from numeric to the type name...).


testbase=# SELECT proacl, proargtypes FROM pg_proc WHERE proname='to_ascii';
    proacl     | proargtypes
---------------+-------------
 {=X/postgres} |          25
 {=X/postgres} |       25 19
 {=X/postgres} |       25 23
(3 rows)

testbase=#


Where can I find this '25', '19', '23', etc. name? :-)


Thanks.
--
Godoy.     <godoy@ieee.org>

pgsql-bugs by date:

Previous
From: "John R Pierce"
Date:
Subject: Re: psql missing feature: show permissions for functions
Next
From: Guy Thornley
Date:
Subject: Backend with closed connection at 99% CPU