btree index (14)

_bt_metapinit

btree indexのmeta page(先頭のpage)を作成する。ReadBuffer(rel, NEW)で新しいページを作成し,_bt_initmetapageで初期化する。
リレーションが一時テーブルでないときは,ログレコードを出力する。
_bt_metapinitはソートしない方法でindexを構築するときにbtbuildから実行される。
ソートする方法でindexを構築するときは,meta pageの領域は確保されているので,_bt_initmetapageを直接実行している。

_bt_initmetapage

btree indexのmeta pageの情報を初期化する。_bt_pageinitでpageを初期化したあと,
pageのpd_linp[0]の位置にBTMetaPageDataを設定する。BTPageOpaqueのフラグにBTP_METAを設定する。

_bt_pageinit

btree indexのpageを初期化する。PageInitを実行している。

_bt_getroot

btree indexのfast root pageを取得する。
root pageが無いときの動作は,accessの指定により動作が違う。
(1)accessにBT_READを指定: InvalidBufferを返す
(2)accessにBT_WRITEを指定: root pageを作成してそのpageを返す
root pageがある場合は,meta pageに記録されているfast root pageを返す。
_bt_getrootが返すfast root pageはRead Lockが取得されている(accessでBT_WRITEを指定してもRead Lock)。

_bt_gettrueroot

btree indexの本当のroot pageを取得する。
root pageが無いときは,InvalidBufferになる。root pageはRead Lockを取得した状態で返される。