PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Depurar a função PostgreSQL usando pgAdmin


Você precisa habilitar a depuração em dois lugares. No PGAdmin e no próprio banco de dados. Esse artigo que você mencionou faz um trabalho maravilhoso explicando, mas havia algumas nuances.

PGAdmin

Ao atualizar seu postgresql.conf para carregar a biblioteca de depuração, eu estava executando o PGAdmin no Windows então o arquivo estava aqui:
C:\Program Files\PostgreSQL\9.4\data\postgresql.conf

E o caminho para o plugin_debugger.dll foi na verdade
$libdir/plugin_debugger.dll

não
$libdir/plugins/plugin_debugger.dll

conforme especificado no artigo. Portanto, seu postgresql.conf precisaria de uma linha assim
shared_preload_libraries = '$libdir/plugin_debugger.dll'

Procure o .dll real se estiver em dúvida. Se você estiver no Linux, o arquivo que estará procurando é plugin_debugger.so . Não esqueça que alterar o postgresql.conf arquivo exigirá uma reinicialização para que a alteração tenha efeito.

Banco de dados PostgreSQL

Supondo que você esteja executando seu banco de dados PostgreSQL em um servidor Linux esta essência faz um excelente trabalho explicando como baixar as dependências para habilitar a depuração. Certifique-se de estar executando como root ao instalar.

A parte que é fácil perder é emitir o comando no banco de dados real que você deseja depurar. Para versões mais recentes do PostgreSQL, tudo o que você precisa fazer é o seguinte:
CREATE EXTENSION IF NOT EXISTS pldbgapi;

Se isso não retornar um erro, você deve estar pronto.

Algumas coisas adicionais de nota:
  • Como mencionado acima, você só pode depurar ao executar como uma conta de superusuário
  • De deles documentos você só pode depurar funções pl/pgsql. Então, se sua função diz algo como LANGUAGE c O PGAdmin nem mesmo mostrará uma opção de menu Depurar com o botão direito do mouse quando você selecionar a função. Procure por algo que tenha LANGUAGE plpgsql e o menu Debug deve ser exibido.