デバッグオプションをつけてコンパイル

上のリンク先の「PostgreSQL研究所」の5回目ではOPTIMIZER_DEBUGの設定にソースコードを修正していたのですが、「PostgreSQLの内部構造」のプランナの説明ではconfigureへのパラメータで設定していたのでそっちを参考にしました。こうするのがよさげです。

cd /usr/local/src/postgresql-8.3.5
CFLAGS=-DOPTIMIZER_DEBUG ./configure --enable-debug
make
make install

OPTIMIZER_DEBUGをつけておくと、allpaths.cのdebug_print_rel(root, rel)で実行プランがログ出力されるようになります。こんな感じで出力されます。まだ、意味は把握できていない。

RELOPTINFO (1): rows=1130 width=42
        path list:
        SeqScan(1) rows=1130 cost=0.00..21.30

        cheapest startup path:
        SeqScan(1) rows=1130 cost=0.00..21.30

        cheapest total path:
        SeqScan(1) rows=1130 cost=0.00..21.30

ほかにもこういったデバッグ用のオプションがあるんだろうな。