Re: grant execute on many functions
От | Jean-Denis Giguere |
---|---|
Тема | Re: grant execute on many functions |
Дата | |
Msg-id | 40E2EB25.1070005@fastmail.fm обсуждение исходный текст |
Ответ на | Re: grant execute on many functions (Tom Lane <tgl@sss.pgh.pa.us>) |
Список | pgsql-admin |
Tom Lane wrote: > Doug Quale <quale1@charter.net> writes: > >>test=# select oid::regprocedure from pg_proc order by oid::regprocedure; > > >>doesn't sort the way I would expect. > > > Nope, it'd just be ordering by the numeric OID. If you added a cast > procedure as we were just discussing, you could order by > oid::regprocedure::text and get what I suppose you're expecting. Is this cast procedure is correct oid::regprocedure::text ? When I try this, I get ERROR: cannot cast type regprocedure to text. Here is a small bash script to grant execute on many functions. (There are some strange error sometime, but I'm not able to reproduce the bug...) ######################################################## #!/bin/bash #Usage: grantexfct schema groupe schema=$1 groupe=$2 SQL="SELECT p.oid::regprocedure from pg_proc p LEFT JOIN pg_namespace n ON p.pronamespace=n.oid where n.nspname like '$schema';" LIST=`psql -c "$SQL" -A -t -U postgres servweb` echo $LIST for fct in $LIST do echo $fct SQL="GRANT EXECUTE ON FUNCTION $fct TO GROUP $groupe;" psql -c "$SQL" -U postgres servweb done exit 0 ######################################################## This is the pl/pgsql function. It is broken because I'm not able to cast ::regprocedure to ::text Maybye there are others bugs... ######################################################## --grant_exec(SCHEMA,GROUP) -- Grants execute on every functions of SCHEMA to group GROUP -- DECLARE schem ALIAS FOR $1; grp ALIAS FOR $2; obj record; num integer; BEGIN num:=0; FOR obj IN SELECT p.oid::regprocedure as funct FROM pg_proc p LEFT JOIN pg_namespace n ON p.pronamespace=n.oid where n.nspname like schem LOOP EXECUTE 'GRANT EXECUTE ON FUNCTION ' || schem || '.' || obj.funct ::text || ' TO GROUP ' || grp; num := num + 1; END LOOP; RETURN num; END; ######################################################### Any comment is welcome. Thank you to everyone who has contributed to this "solution". > > regards, tom lane > > ---------------------------(end of broadcast)--------------------------- > TIP 5: Have you checked our extensive FAQ? > > http://www.postgresql.org/docs/faqs/FAQ.html
В списке pgsql-admin по дате отправления: