Ce matin, je devais changer le nom d'un champ dans une table de la base de données d'un projet PostgreSQL pour qu'il soit plus représentatif du rôle qu'il occupait. J'ai aisément pu remplacer les références dans le code source PHP (find/replace) mais pour ce qui était des fonctions PL/pgSQL, comment trouver les fonctions qui utilisent ce champ dans le code ? Pour moi, c'était hors de question de les ouvrir une par une ! Il devait bien exister un moyen plus simple...
J'ai jeté un oeil à la documentation pour trouver une piste de solution et j'ai dirigé mes recherches vers les tables systèmes, toutes préfixées par "pg_". La solution se trouve ici :
- La table pg_proc contient les définitions de fonctions
- Le champ proname est la colonne qui contient le nom de la fonction
- Le champ prosrc contient le corps / code de la fonction
SELECT pronameVoilà une économie de temps substantielle qui m'a permis de passer à des problèmes plus stimulants.
FROM pg_proc
WHERE prosrc ILIKE '%bout de code%'
ORDER BY proname