PostgreSQLのコードを読む話(3)
前回の続き、フロントエンドとバックエンド間の通常操作サブプロトコルのひとつ、Queryを読んでみることにした。
ここから
https://github.com/postgres/postgres/blob/master/src/backend/tcop/postgres.c#L3969
ここから
https://github.com/postgres/postgres/blob/master/src/backend/tcop/postgres.c#L3969
exec_simple_queryに入った
https://github.com/postgres/postgres/blob/master/src/backend/tcop/postgres.c#L824- start_xact_command - トランザクション?いったん飛ばす
- drop_unnamed_stmt - 名無しのステートメントを除去?一端とばす
- MemoryContextSwitchTo
- pg_parse_query - クエリをパースしてツリーを作るっぽい
- コンテキスト戻している
- ツリーをトラバースしている。。。
- pg_plan_queries - クエリプラン作成?ここで色々しているとのこと
- Portalってなんだろう?カーソルのことらしい
- CommandCounterIncrement トランザクション関連らしい。飛ばす
home/postgres/src/backend/access/transam/README トランザクションシステムの説明
pg_plan_queriesからオプティマイザーあたりに入った
- プラグインでoptimizerのプランナーフックを仕掛けることが可能っぽい
- pull_up_sublinks - any/existsを内部的にjoinに変形するらしい
オプティマイザーの全体を俯瞰した方がよいかと思いREADMEを見る
https://github.com/postgres/postgres/blob/master/src/backend/optimizer/README#L286
optimizerの動作についての説明がのっていた
時間切れ、次回はここから見ていこう。。。
時間切れ、次回はここから見ていこう。。。
コメント
コメントを投稿