PostgreSQLのコードを読む話(4)
前回 はオプティマイザー周りに入ったのでした。 home / postgres / src / backend / optimizer / README 多分 optimizer の planner.c あたりを読み進めると検索プランの作成方法が、 Portal あたり(どこだ?)を読み進めると、検索プランに従って実際に検索を行う処理が見つかる気がする。 今回は Portal の方にあたりをつけて読み進めてみることにする。 CreatePortal https://github.com/postgres/postgres/blob/master/src/backend/utils/mmgr/portalmem.c#L196 http://127.0.0.1:9292/home/postgres/src/backend/utils/mmgr/README readmeみる mmgr は Memory Manager っぽい Context単位でメモリ管理をするようなモデルらしい PortalDefineQuery parseされたStatementを受け取っているので、ここで実行? statement 名を設定しているだけだった。。。 PortalStart https://github.com/postgres/postgres/blob/master/src/backend/tcop/pquery.c#L436 実行準備とのこと なにやら strategy にしたがって動作している PortalSetResultFormat 見てない PortalRun 多分ここが実行。。。 時間切れだったので、次回はここから。 https://github.com/postgres/postgres/blob/master/src/backend/tcop/pquery.c#L706