dbTalk Databases Forums  

[BUGS] psql missing feature: show permissions for functions

mailing.database.pgsql-bugs mailing.database.pgsql-bugs


Discuss [BUGS] psql missing feature: show permissions for functions in the mailing.database.pgsql-bugs forum.



Reply
 
Thread Tools Display Modes
  #1  
Old   
Jorge Godoy
 
Posts: n/a

Default [BUGS] psql missing feature: show permissions for functions - 09-20-2004 , 12:05 PM







Hi,


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.


Thanks for your attention,
--
Godoy. <godoy (AT) ieee (DOT) org>


---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
joining column's datatypes do not match

Reply With Quote
  #2  
Old   
John R Pierce
 
Posts: n/a

Default Re: [BUGS] psql missing feature: show permissions for functions - 09-20-2004 , 05:18 PM






Quote:
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';




---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
joining column's datatypes do not match


Reply With Quote
  #3  
Old   
Jorge Godoy
 
Posts: n/a

Default Re: [BUGS] psql missing feature: show permissions for functions - 09-20-2004 , 05:37 PM



"John R Pierce" <pierce (AT) hogranch (DOT) com> writes:

Quote:
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 (AT) ieee (DOT) org>


---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to majordomo (AT) postgresql (DOT) org


Reply With Quote
  #4  
Old   
Alvaro Herrera
 
Posts: n/a

Default Re: [BUGS] psql missing feature: show permissions for functions - 09-20-2004 , 08:12 PM



On Mon, Sep 20, 2004 at 07:35:58PM -0300, Jorge Godoy wrote:

Quote:
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? :-)
Those are OIDs from the pg_type catalog. The format_type(oid, integer)
function can give you the actual name, as in

alvherre=# SELECT proacl, proargtypes, format_type(proargtypes[0], 0),
format_type(proargtypes[1], 0) FROM pg_proc WHERE proname='to_ascii';
proacl | proargtypes | format_type | format_type
---------------+-------------+-------------+-------------
{=X/alvherre} | 25 | text | -
{=X/alvherre} | 25 19 | text | name
{=X/alvherre} | 25 23 | text | integer
(3 filas)


The second argument is the type's typmod (the 25 in varchar(25), for
instance).

--
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"The ability to monopolize a planet is insignificant
next to the power of the source"


---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faqs/FAQ.html


Reply With Quote
Reply




Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off



Powered by vBulletin Version 3.5.3
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.