jueves, 3 de abril de 2014

Postgresql: Cómo instalar pldebugger. Debug con pgAdmin

Hoy tenía que hacer seguimiento a unas funciones en PostgreSQL, de antemano sabía que me iba a tomar buen tiempo y jugar con raise notice no es algo que me guste mucho, así que se me ocurrió averiguar si existe un debugger para el PgAdmin, y que creen? Pues que existe!
Encontré muy buenas instrucciones en un blog, les dejo la dirección aquí, pero faltaban un par de detalles así que copiaré las instrucciones a seguir. Lo olvidaba, uso PostgreSQL 9.1 sobre Debian 6, en una máquina virtual, las instrucciones deben ser similares para otros entornos.
En términos generales:  Para poder depurar código en Postgresql hay que instalar una extensión en el servidor, pero esta extensión viene en forma de código fuente que hay que compilar, (está alojada en git) y para poder compilarlo necesitamos hacerlo contra el código de Postgresql, así que lo primero que hay que hacer es descargarlo.

  • Es necesario saber la versión de postgresql que estamos ejecutando, el comando es: psql -version.
  • Descargar el código fuente desde este vínculo, descomprimir y desempaquetar. Quizás sea necesario instalar bzip2: apt-get install bzip2
  • Te ubicas en la carpeta que tiene el código descomprimido y a configure le pasas los mismos parámetros que ya tienes en tu instalación local, pg_config –configure | ./configure
  • En la misma carpeta es necesario hacerle make, en mi caso tuve que hacer apt-get install libreadline5 libreadline5-dev y apt-get install zlib1g zlib1g-dev antes de que funcione.
  • Una vez listo el código fuente del postgresql se debe descargar el código fuente del plugin dentro de la carpeta contrib de las fuentes de postgresql, es necesario tener instalado Git: apt-get install git el comando para descargar el plugin es: git clone http://git.postgresql.org/git/pldebugger.git
  • Se creará la carpeta contrib/pldebugger te ubicas allí y compilas con make.
  • Copias el archivo pldebugger/plugin_debugger.so/usr/lib/postgresql/9.1/lib/
  • También copiar pldebugger/pldbgapi.control a /usr/share/postgresql/9.1/extension/
  • Finalmente pldebugger/pldbgapi--1.0.sql a /usr/share/postgresql/9.1/extension/ 
  • Luego hay que editar el archivo de configuración del postgresql: nano /etc/postgresql/9.1/main/postgresql.conf
  • Hay que modificar la línea shared_preload_libraries = ‘ ‘  por shared_preload_libraries = ‘$libdir/plugin_debugger’
  • Reiniciar el servidor postgresql.
  • Ahora lo que queda es abrir el pgAdmin y ejecutar 'CREATE EXTENSION pldbgapi;' en la base de datos que quieras depurar.
Para quienes tienen la misma configuración que yo (básicamente la versión 9.1 de postgresql), en esta dirección he guardado los tres archivos generados por la compilación del código de la extensión (y que son los que nos interesan), solo es necesario copiarlos en las rutas detalladas arriba, y listo, desde el PgAdmin podrán hacer debug de funciones.