quinta-feira, 17 de maio de 2012

Instalar/Configurar "Debugador" de PL/pgSQL (pldebugger) no PostgreSQL 9.1 usando Ubuntu


O passo-a-passo abaixo foi realizado no Ubuntu 10.04LTS com o PostgreSQL 9.1 instalado via ppa do Martin Pitti, mas creio que pode ser executado tranquilamente utilizando a última versão LTS do Ubuntu, a 12.04LTS.

1) Download dos fontes do PostgreSQL

$ wget -c http://ftp.postgresql.org/pub/source/v9.1.3/postgresql-9.1.3.tar.bz2


2) Precisamos instalar ferramentas necessárias para compilação da extensão

$ sudo apt-get update
$ sudo apt-get install build-essential libreadline-dev zlib1g-dev flex bison libssl-dev git-core


3) Compilar o PostgreSQL e a extensao pldebugger

$ tar jxvf postgresql-9.1.3.tar.bz2
$ cd postgresql-9.1.3
$ ./configure --prefix=/usr --includedir=/usr/include --mandir=/usr/share/man --infodir=/usr/share/info --sysconfdir=/etc --localstatedir=/var --libexecdir=/usr/lib/postgresql-9.1 --srcdir=. --mandir=/usr/share/postgresql/9.1/man --docdir=/usr/share/doc/postgresql-doc-9.1 --datadir=/usr/share/postgresql/9.1 --bindir=/usr/lib/postgresql/9.1/bin --libdir=/usr/lib/postgresql/9.1/lib --includedir=/usr/include/postgresql/ --enable-integer-datetimes --with-openssl
$ make
$ cd contrib
$ git clone git://git.postgresql.org/git/pldebugger.git
$ cd pldebugger
$ make
$ sudo make install

Obs: lembrando que, apesar de extenso, o "./configure" deve ser todo escrito na mesma linha

4) Após compilar e instalar a extensao pldebugger precisamos ativa-a no PostgreSQL

$ sudo vim /etc/postgresql/9.1/main/postgresql.conf

alterar
 
  #shared_preload_libraries = ''

para
 
  shared_preload_libraries = '$libdir/plugin_debugger'
 

5) Reiniciar PostgreSQL

$ sudo /etc/init.d/postgresql restart 9.1


6) Criar a EXTENSAO "pldbgpapi" na(s) base(s) de dados que deseja fazer debug de pls

$ psql -U postgres bdteste
psql (9.1.3)
Digite "help" para ajuda.


bdteste=# CREATE EXTENSION pldbgapi;
CREATE EXTENSION
bdteste=#


7) Pronto, agora vc pode usar o PGAdmin para "debugar" suas funções PL/pgSQL



---
Fabrízio Mello
fabriziomello [at] gmail.com