Ladění uložených procedur a triggerů v PostgreSQL

Databázové servery již dávno neumí pouze základní SQL dotazy, ale již pěknou řádku let jsou rozšiřovány o další funkcionalitu. Nedílnou součástí databázového serveru je i procedurální jazyk, který umí vykonávat kód přímo na straně serveru. Výhodou je zejména ušetření režie opakujících se dotazů, kdy jsme nuceni na základě výsledku jednoho dotazu provést další dotaz. V případě databázového serveru PostgreSQL je nejčastěji využíván jazyk PL/PgSQL, který vychází z PL/SQL databázového serveru od Oracle.

Pokud jste v PL/PgSQL psali rozsáhlejší kód, pravděpodobně jste se dříve či později dostali do situace, kdy jste potřebovali některý kód ladit. V takovém případě máte možnost vypisovat ladící výpisy do logu (pomocí raise notice) nebo použít modul pro ladění.

Ladění PL/PgSQL

Nutnou podmínku pro ladění je instalace PL/PgSQL Debuggeru, který je dostupný pro PostgreSQL 8.2 a vyšší. Pakliže instalujete PostgreSQL pro Windows, postačí v instalačním balíčku zaškrtnout při výběru modulů plDebugger. Pod Linuxem bude záležet na vámi použitém distribučním balíčku PostgreSQL.

Ukázka okna výběrů modulů při instalaci PostgreSQL

Druhou součást, kterou budete potřebovat, je nainstalovaný pgAdmin. Tento nástroj na správu PostgreSQL pravděpodobně většina z vás používá. V něm se připojte k databázovému serveru, který obsahuje podporu pro ladění PL/PgSQL a můžete začít ladit. Pro ladění uložené procedury ji postačí v pgAdminu označit a v místní nabídce v podnabídce „Debugging“ zvolit buď „Debug“ nebo „Set breakpoint“. První volba vám umožní spustit uloženou proceduru s vámi zadanými vstupními parametry.

Dialog pro zadání hodnot vstupních parametrů

Druhá volba („Set breakpoint“), která je též jako jediná dostupná i u triggerů, umožňuje ladit uloženou proceduru či trigger až v okamžiku, kdy dojde k reálnému vykonávání kódu tj. ve schvíli, kdy databázový server například při smazání záznamu v tabulce spustí příslušný trigger. Při aktivaci volby „Set breakpoint“ začne pgAdmin čekat do té doby, než je příslušná uložená procedura či trigger začne vykonávat. V tom okamžiku otevře okno debuggeru s možností krokování. V něm jsou samozřejmě vidět i vstupní parametry.

Okno s laděním kódu

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *