Chapter 28. バックエンドインターフェイス

Table of Contents
BKI ファイルフォーマット
汎用コマンド
マクロコマンド
デバッグ命令

バックエンドインターフェイス (BKI) ファイルは特殊な "ブート"モードで立ち上がった Postgres バックエンド に入力されるスクリプトで、データベースシステムが未だ存在しなくてもデータベース の機能を使えるようにするものです。ですから BKI ファイルは一番最初にデータベースシステムを作成するときに使われます。 initdbBKI ファイルを データベースシステム作成のために使用するだけです。 しかし、initdbBKI ファイルは内部的に生成されるものです。そのファイルはそれ自身を Postgres の "library" ディレクトリにある global1.bki.source ファイルと local1.template1.bki.source ファイルを使用して生成 します。BKI ファイルは Postgres のインストールの一部 としてインストールされます。これらの .source ファイルは Postgres の組み立ての過程で genbki と呼ばれる組み立てプログラムにより組み立てられます。 genbki は入力として、Postgres ソースファイルを取り込み、 テーブルとテーブルを記述する C ヘッダーファイルを組み立てます。

関連情報は initdbcreatedb および SQL コマンド CREATE DATABASE にあります。

BKI ファイルフォーマット

Postgres バックエンドは BKI ファイルを 下記のようにして解釈します。この説明は、手元に global1.bki.source ファイルが用意されていればより理解しやすいでしょう。 (上で述べたように、この .source ファイルは正確には BKI ファイルではありませんが、最終的にどんな BKIファイルになるかはきっと想像がつくでしょう。)

コマンドはコマンド名とそれに引き続くスペースで区切られた引数からなります。 "$" で始まるコマンドに対する引数は特別に扱われます。もし、 "$$" が始めの二つの文字であれば、最初の "$" は 無視されて引数が通常通り処理されます。もし "$" の後にスペースが 続けば NULL 値として扱われます。さもなければ、"$" に続く文字が 引数をマクロの値で置換する、マクロの名前として翻訳されます。このマクロ が定義されてないとエラーになります。

マクロは

define macro マクロ名 = マクロ値
で定義され
undefine macro マクロ名
で定義が解除されます。 再定義は define と同じ構文で行います。

汎用コマンドとマクロコマンドの一覧は以下の通りです。