2010-12-15 11 views
14

Beim Refactoring von PostgreSql-Funktionen (und genauer: bei der Suche nach 'unbenutzten' Funktionen) wäre es praktisch, eine Funktion zur Suche nach einer bestimmten Zeichenkette innerhalb der Funktionsdefinitionen zu haben.Suche 'grep-alike' durch PostgreSql-Funktionen

Weiß jemand, ob dies der beste Ansatz ist (versuchen Sie, die Funktionsdefinitionen nach 'grep' zu durchsuchen) oder gibt es alternative Methoden?

Wie würde man diese Funktionalität implementieren?

Antwort

27
SELECT 
    proname AS functionname, 
    prosrc AS source 
FROM 
    pg_proc 
WHERE 
    prosrc ~* 'your_string'; 

Einzelheiten darüber, wie eine Regex in PostgreSQL verwenden, können in den manual finden.

+0

+1 (nicht erkennen, dass es so einfach sein könnte ;-) Ich werde eine Weile warten, um zu sehen, ob andere Ansätze Pop-up , aber das funktioniert einwandfrei! – ChristopheD

4

Franks Antwort ist großartig. Verwenden Sie diese erweiterte Version zusätzlich das Schema aufzulisten, die die Funktion zu finden, hilft:

SELECT 
    proname AS functionname, 
    prosrc AS source, 
    nspname AS schema 
FROM 
    pg_proc 
INNER JOIN pg_namespace ON (pg_proc.pronamespace = pg_namespace.oid) 
WHERE 
    prosrc ~* 'your_string';