PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Eseguire il debug della funzione PostgreSQL utilizzando pgAdmin

Devi abilitare il debug in due posti. Su PGAdmin e sul database stesso. L'articolo a cui hai fatto riferimento fa un ottimo lavoro nel spiegarlo, ma c'erano alcune sfumature.

Amministratore PG

Quando aggiorni il tuo postgresql.conf per caricare la libreria di debug, eseguivo PGAdmin su Windows quindi il file era qui:

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

E il percorso del plugin_debugger.dll era in realtà

$libdir/plugin_debugger.dll

non

$libdir/plugins/plugin_debugger.dll

come specificato nell'art. Quindi il tuo postgresql.conf servirebbe una linea come questa

shared_preload_libraries = '$libdir/plugin_debugger.dll'

Cerca il .dll effettivo in caso di dubbio. Se sei su Linux il file che cercherai è plugin_debugger.so . Non dimenticare che cambiando il postgresql.conf richiederà un riavvio per rendere effettiva la modifica.

Database PostgreSQL

Supponendo che tu stia eseguendo il tuo database PostgreSQL su un server Linux questo gist fa un ottimo lavoro nello spiegare come scaricare le dipendenze per abilitare il debug. Assicurati di essere eseguito come root durante l'installazione.

La parte che è facile perdere è l'emissione del comando sul database effettivo di cui si desidera eseguire il debug. Per le versioni più recenti su PostgreSQL tutto ciò che devi fare è questo:

CREATE EXTENSION IF NOT EXISTS pldbgapi;

Se ciò non restituisce un errore, dovresti essere pronto.

Alcune cose aggiuntive degne di nota:

  • Come accennato in precedenza, puoi eseguire il debug solo quando esegui come account super utente
  • Da loro documenti puoi solo eseguire il debug delle funzioni pl/pgsql. Quindi, se la tua funzione dice qualcosa come LANGUAGE c PGAdmin non mostrerà nemmeno un'opzione del menu Debug del tasto destro del mouse quando si seleziona la funzione. Cerca qualcosa che abbia LANGUAGE plpgsql e dovrebbe essere visualizzato il menu Debug.