Vous n'êtes pas identifié(e).

#1 18/04/2013 14:44:27

ruizsebastien
Membre

Localisation des fonctions sur le file system

Bonjour,

Avec cette fonction :
select pg_relation_filepath('nom_de_mon_objet');
on peut récupérer le chemin qui mène vers le fichier qui correspond à l'objet sur le file system.
Exemple de résultat :
"pg_tblspc/16389/PG_9.2_201204301/16387/16582"

Ca ne marche que pour les tables et les index.

J'aimerais trouver le fichier sur le File System qui correspond à une fonction. Mais je ne trouve pas.
J'arrive à trouver l'OID d'une fonction (avec pg_proc) mais il n'y a pas de correspondance avec un fichier sur le FS.

Comment faire pour trouver le fichier qui correspond à une fonction ?
Ou sont stockées les fonctions ?
(Sur PGadmin on voit que les fonctions ne sont pas dans un tablespace...)


Cordialement,

Sébastien.

Hors ligne

#2 18/04/2013 19:34:41

rjuju
Administrateur

Re : Localisation des fonctions sur le file system

Bonjour,

les procédures stockées sont justement stockées dans la table pg_proc, il n'y a pas un fichier par procédure stockée.

Hors ligne

#3 19/04/2013 09:53:02

ruizsebastien
Membre

Re : Localisation des fonctions sur le file system

merci rjuju,

dans ces conditions comment je peux avoir la date de dernière modification d'une fonction ?


Cordialement,

Sébastien.

Hors ligne

#4 19/04/2013 19:44:34

rjuju
Administrateur

Re : Localisation des fonctions sur le file system

Le catalogue système ne stocke pas cette information. De toutes façons, un simple touch sur un fichier de stockage modifierait la méta donnée, elle n'est donc pas fiable pour cela. Vous pouvez modifier le paramètre "log_statement" et le positionner à ddl, vous aurez alors une trace dans les log des modifications des fonctions.

Hors ligne

#5 22/04/2013 09:20:22

ruizsebastien
Membre

Re : Localisation des fonctions sur le file system

Merci rjuju pour ta réponse.

Pour info, il existe une solution mais ça ne marche que pour les tables et les index :

- chercher le chemin sur le FS du fichier qui correspond à l'objet :
select pg_relation_filepath('ma_table')
"pg_tblspc/16389/PG_9.2_201204301/16387/16582"

- requêtes :
SELECT * FROM pg_stat_file('pg_tblspc/16389/PG_9.2_201204301/16387/16582');

SELECT (pg_stat_file('pg_tblspc/16389/PG_9.2_201204301/16387/16582')).modification;


Cordialement,

Sébastien.

Hors ligne

#6 22/04/2013 11:05:04

rjuju
Administrateur

Re : Localisation des fonctions sur le file system

Cela donnera effectivement la dernière modification sur le fichier, ce qui n'est pas la même chose que la dernière modification sur la table.

Hors ligne

Pied de page des forums