Re: [GENERAL] Grep'ing for a string in all functions in a schema?

2014-01-31 Thread hubert depesz lubaczewski
On Thu, Jan 30, 2014 at 12:52:35PM -0800, bricklen wrote:
  Since Postgres does not consider a table as a dependency of a function if
  that table is referenced in the function (probably a good reason), I often
  find myself in a position of asking is this table/sequence/index
  referenced in any of these N number of functions?
 
  Is there an easy way of essentially grep'ing all of the functions in a
  given schema for a string?
 A method I've used in the past is to create a view of function source which
 can then be searched.

Why not simply:

select p.oid::regproc from pg_proc p join pg_namespace n on p.pronamespace = 
n.oid where n.nspname = 'your-schema' and p.prosrc ~ 'searched-string';

depesz


signature.asc
Description: Digital signature


Re: [GENERAL] Grep'ing for a string in all functions in a schema?

2014-01-30 Thread bricklen
On Thu, Jan 30, 2014 at 12:45 PM, Wells Oliver wellsoli...@gmail.comwrote:

 Since Postgres does not consider a table as a dependency of a function if
 that table is referenced in the function (probably a good reason), I often
 find myself in a position of asking is this table/sequence/index
 referenced in any of these N number of functions?

 Is there an easy way of essentially grep'ing all of the functions in a
 given schema for a string?


A method I've used in the past is to create a view of function source which
can then be searched.
Eg.

CREATE OR REPLACE VIEW function_def as
SELECT n.nspname AS schema_name,
   p.proname AS function_name,
   pg_get_function_arguments(p.oid) AS args,
   pg_get_functiondef(p.oid) AS func_def
FROM   (SELECT oid, * FROM pg_proc p WHERE NOT p.proisagg) p
JOIN   pg_catalog.pg_namespace n ON n.oid = p.pronamespace
WHERE  n.nspname !~~ 'pg_%'
ANDn.nspname  'information_schema';

select * from function_def where func_def ilike '%foo%';


Re: [GENERAL] Grep'ing for a string in all functions in a schema?

2014-01-30 Thread Wells Oliver
This is the most helpful thing I've seen in months. Bravo.


On Thu, Jan 30, 2014 at 12:52 PM, bricklen brick...@gmail.com wrote:


 On Thu, Jan 30, 2014 at 12:45 PM, Wells Oliver wellsoli...@gmail.comwrote:

 Since Postgres does not consider a table as a dependency of a function if
 that table is referenced in the function (probably a good reason), I often
 find myself in a position of asking is this table/sequence/index
 referenced in any of these N number of functions?

 Is there an easy way of essentially grep'ing all of the functions in a
 given schema for a string?


 A method I've used in the past is to create a view of function source
 which can then be searched.
 Eg.

 CREATE OR REPLACE VIEW function_def as
 SELECT n.nspname AS schema_name,
p.proname AS function_name,
pg_get_function_arguments(p.oid) AS args,
pg_get_functiondef(p.oid) AS func_def
 FROM   (SELECT oid, * FROM pg_proc p WHERE NOT p.proisagg) p
 JOIN   pg_catalog.pg_namespace n ON n.oid = p.pronamespace
 WHERE  n.nspname !~~ 'pg_%'
 ANDn.nspname  'information_schema';

 select * from function_def where func_def ilike '%foo%';




-- 
Wells Oliver
wellsoli...@gmail.com


Re: [GENERAL] Grep'ing for a string in all functions in a schema?

2014-01-30 Thread Jeff Janes
On Thu, Jan 30, 2014 at 12:45 PM, Wells Oliver wellsoli...@gmail.comwrote:

 Since Postgres does not consider a table as a dependency of a function if
 that table is referenced in the function (probably a good reason), I often
 find myself in a position of asking is this table/sequence/index
 referenced in any of these N number of functions?

 Is there an easy way of essentially grep'ing all of the functions in a
 given schema for a string?

 Clearly if you had all of your functions in a nice VCS you could do this
 but alas I don't yet live in that perfect world.



In this imperfect world, I usually just pg_dump -s -n foo to a file, then
use grep, vi, etc. on that file.

Cheers,

Jeff


Re: [GENERAL] Grep'ing for a string in all functions in a schema?

2014-01-30 Thread Thomas Kellerer

Wells Oliver wrote on 30.01.2014 21:45:

Since Postgres does not consider a table as a dependency of a
function if that table is referenced in the function (probably a good
reason), I often find myself in a position of asking is this
table/sequence/index referenced in any of these N number of
functions?

Is there an easy way of essentially grep'ing all of the functions in
a given schema for a string?

Clearly if you had all of your functions in a nice VCS you could do
this but alas I don't yet live in that perfect world.


As I occasionally come across this myself, I have built such a feature into SQL 
Workbench/J

http://sql-workbench.net/manual/wb-commands.html#command-search-source
http://sql-workbench.net/wbgrepsource_png.html

or through the UI
http://sql-workbench.net/objectsearcher_png.html

it offers a bit more flexibility than just a LIKE on the source code

(but that is of course not available if you are using psql or pgAdmin)

Thomas



--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general