バックエンドインタフェース(BKI)ファイルは、"bootstrap"モードで稼動中のPostgreSQLで解釈される特殊な言語で記述されたスクリプトです。 普通のSQLコマンドを実行するにはシステムカタログが事前に存在していなければなりませんが、bootstrapモードではシステムカタログを一から作成することができます。 ですからBKIファイルはデータベースシステムを初めて作成する時に使用します。 (そしてそれ以外の時にはあまり有効ではありません。)
initdbは新しいデータベースクラスタを作成する際に、その作業の一部を担わすためBKIファイルを使います。 initdbが使う入力ファイルはPostgreSQLの構築時にgenbki.shというプログラムによって、ソースツリー内のsrc/include/catalog/にある特別な書式のCのヘッダファイルから作成されます。 作成されたBKIファイルはpostgres.bkiと呼ばれ、通常インストールツリーのshareサブディレクトリにインストールされます。
関連情報はinitdbのドキュメントにもあります。
この節ではPostgreSQLのバックエンドがどのようにしてBKIファイルを解釈するのかを説明します。 例としてpostgres.bkiファイルが手元にあると説明が一層理解しやすくなるでしょう。
BKIの入力は一連のコマンドで構成されます。 コマンドはいくつものトークンから構成されていて、コマンドの構文に依存しています。 トークンは通常空白で分離されていますが、どちらとも解釈されるような曖昧性がなければ必要性ありません。 特別なコマンド区切り文字はありません。 従って、構文上その前のコマンドに属すことができない次のトークンは新たなコマンドとなります。 (通常、わかりやすくするために、新しいコマンドは新しい行に記述します。) トークンはある一定のキーワードや特別な文字(括弧やカンマなど)、数字、二重引用符で囲まれた文字列などが使用できます。 大文字/小文字は全て区別されます。
#で始まる行は無視されます。