PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Déboguer la fonction PostgreSQL à l'aide de pgAdmin

Vous devez activer le débogage à deux endroits. Sur PGAdmin et sur la base de données elle-même. L'article auquel vous avez fait référence fait un excellent travail d'explication, mais il y avait quelques nuances.

PGAdmin

Lors de la mise à jour de votre postgresql.conf fichier pour charger la bibliothèque de débogage, j'étais exécutant PGAdmin sous Windows donc le fichier était ici :

C:\Program Files\PostgreSQL\9.4\data\postgresql.conf

Et le chemin vers le plugin_debugger.dll était en fait

$libdir/plugin_debugger.dll

pas

$libdir/plugins/plugin_debugger.dll

comme précisé dans l'article. Donc, votre postgresql.conf aurait besoin d'une ligne comme celle-ci

shared_preload_libraries = '$libdir/plugin_debugger.dll'

Recherchez le fichier .dll réel en cas de doute. Si vous êtes sous Linux, le fichier que vous recherchez est plugin_debugger.so . N'oubliez pas que changer le postgresql.conf le fichier nécessitera un redémarrage pour que la modification prenne effet.

Base de données PostgreSQL

En supposant que vous exécutez votre base de données PostgreSQL sur un serveur Linux cet essentiel fait un excellent travail pour expliquer comment télécharger les dépendances pour activer le débogage. Assurez-vous que vous exécutez en tant que root lors de l'installation.

La partie la plus facile à manquer consiste à exécuter la commande sur la base de données réelle que vous souhaitez déboguer. Pour les versions plus récentes de PostgreSQL, tout ce que vous aurez à faire est ceci :

CREATE EXTENSION IF NOT EXISTS pldbgapi;

Si cela ne renvoie pas d'erreur, vous devriez être prêt à partir.

Quelques éléments supplémentaires à noter :

  • Comme mentionné ci-dessus, vous ne pouvez déboguer que lorsque vous exécutez en tant que compte super utilisateur
  • De leur documentation vous ne pouvez déboguer que les fonctions pl/pgsql. Donc, si votre fonction dit quelque chose comme LANGUAGE c PGAdmin n'affichera même pas une option de menu de débogage par clic droit lorsque vous sélectionnez la fonction. Cherchez quelque chose qui a LANGUAGE plpgsql et le menu Debug devrait s'afficher.