このサイトを参考にデバッグ環境を構築。PostgreSQLは既定ではデバッグが有効化されていないため、一度環境の設定変更が必要。Enterpriseうんちゃら書いてあるが、無料でダウンロードできるPostgreSQLのインストーラーでデバッグが可能。
環境構築手順
postgresql.confのshared_preload_librariesの設定
- C:\Program Files\PostgreSQL\9.2\lib ディレクトリ配下にplugin_debugger.dllが存在することを確認
- C:\Program Files\PostgreSQL\9.2\dataディレクトリにあるpostgresql.confを開く
- shared_preload_librariesというパラメータを探し、先ほど確認したplugin_debuggerを指定
- コメントアウトは解除。拡張子の記載は不要。
shared_preload_libraries = 'plugin_debugger'
- PostgreSQLサーバを再起動
CREATE EXTENSIONでエクステンションのセットアップ
- pgAdminIIIのオブジェクトブラウザペインで、データベース内の「Extensions」を選択
- 右クリックメニューから「New Extension...」を選択
- 名前で、「pldbgapi」を選択
実行方法
- 関数を右クリックし、コンテキストメニューから「デバッグ→ブレークポイントの設定」を選択
- デバッガの画面が現れ、ブレークポイントへの到達を待機している状態となる
- 通常のクエリウィンドウに切り替えて、関数を実行
2016/08/01 追記
- pgAdminでデバッグしようとしたところ、ほぼ確実に処理が止まる&異常終了する。
- pgAdminでのデバッグ開発はまだ難しそうであるため、伝統的なprintfでデバッグする。
- 任意の箇所で以下のコードを記述。
raise notice 'RoundABSFlg:% %', value1, value2;
- 「%」がパラメータ変数にあたる。左から順にvalue1、value2が代入される。