この章ではそれぞれのメッセージの形式について記載します。それぞれはフロント エンド(F)、 postmaster とバックエンド(B)あるいは双方 (F & B)から送出されます。
ASCIIデータ列でのメッセージを示します。 (先行する RowDescription メッセージで列の中のフィールド数 とそのデータ型を定義します。)
行の各フィールドに1ビットずつ対応するビットマップです。 第1フィールドは第1バイトのビット7(MSB)に対応し、第2フィー ルドは 第1バイトのビット6、第8フィールドは第1バイトのビット 0(LSB)、第9 フィールドは第2バイトのビット7といった順で 対応します。対応する フィールドの値が NULL で無い限りそれぞれの ビットが立てられます。 もしもフィールド数が8の倍数 でない場合には、ビット対応における最後 のバイトの余りは不要と なります。
値が NULL でないそれぞれのフィールドに対して次のものがあります。
このサイズを含めたフィールドの値の大きさを指定します。
ASCII 文字でのフィールドの値そのものの指定 です。 n は上記のサイズ引く4です。 フィールドデータの最後には '\0' が付いていません。必要なら フロントエンドが付加 しなければなりません。
メッセージが認証リクエストであることを識別します。
認証が成功したことを示します。
メッセージが認証要求であることを識別します。
Kerberos V4 の認証が必要なことを指定します。
メッセージが認証リクエストであること示します。
Kerberos V5 の認証が必要なことを指定します。
メッセージが認証要求であることを示します。
暗号化されていないパスワードが必要なことを指定します。
メッセージが認証要求であることを示します。
暗号化されたパスワードが必要であることを指定します。
パスワードを暗号化するときに使用するソルト。
メッセージが取り消しの鍵データであることを示します。 フロントエンドは後で CancelRequest メッセージを出すのであれば これらの値を保存しておかなければなりません。
このバックエンドのプロセス ID。
このバックエンドの秘密キー。
メッセージがバイナリデータ列であることを示します。 (先行する RowDescription メッセージで列の中のフィールド数 とそのデータ型を定義します。)
行の各フィールドに1ビットずつ対応するビットマップです。 第1フィールドは第1バイトのビット7(MSB)に対応し、第2フィー ルドは第1バイトのビット6、第8フィールドは第1バイトのビット 0(LSB)、 第9フィールドは第2バイトのビット7といった順で 対応します。 対応するフィールドの値が NULL で無い限りそれぞれ のビットが立てられます。もしフィールド数が8の倍数で ない場合には、ビット対応に おける最後のバイトの余りは不要と なります。
値が NULL でないそれぞれのフィールドに対して以下があります。
このサイズを含めないフィールドの値の大きさを指定します。
バイナリ形式でのフィールドの値そのものを指定します。 n は上記のサイズです。
バイト数によるパケットのサイズ。
取り消し要求のコード。この値は最上位16ビットに 「1234」を、 また最下位16ビットに 「5678」を含むように選ばれます。 (混乱を避けるた め、このコードは他のプロトコルバージョンとは 同一でありません。)
目的とするバックエンドのプロセス ID。
目的とするバックエンドの秘密キー。
メッセージが完了した回答であることを示します。
コマンドタグ。これは通常(常にではありません)どの SQL 命令が 完了したかを示す1単語です。
連続する行データで、各行は Byte1('\n') で終ります。全てのデータの一番 最後には Byte1('\\')、Byte1('.')、Byte1('\n') というシーケ ンスが来ます。
メッセージが「コピーインの開始」であることを示します。 このコマンドには、さらに CopyDataRows メッセージが続きま す。
メッセージが「コピーアウトの開始」であることを示します。 このコマンドには、さらに CopyDataRows メッセージが続きま す。
メッセージがカーソル回答であることを識別します。
カーソルの名称。カーソル名を明示的に指定しなかった場合、 これは 「blank」という文字列になります。
メッセージが空の問い合わせ文字列の回答であることを示します。
未使用。
バイト数によるパケットのサイズ。
(crypt() を使用した)暗号化されたパスワード。
エラーのメッセージを識別します。
エラーメッセージそのもの。
メッセージが関数呼び出しであることを示します。
未使用。
呼び出す関数のオブジェクト ID を指定します。
関数に渡される引数の数を指定します。
それぞれの引数に対して以下のものがあります。
このサイズを除いた引数の値のサイズの指定。
バイナリ形式でのフィールドそのものの値を指定します。 n は上記のサイズです。
メッセージが関数呼び出しの結果であることを識別します。
空でない結果が返されたことを指定します。
このサイズを除いた結果の値のサイズを指定します。
バイナリ形式で結果の値そのものを指定します。 n は上記のサイズです。
未使用。(厳密に言うと、FunctionResultResponse と FunctionVoidResponse は同一のものですが、メッセージに対して いくつかの選択部分があります。)
メッセージが関数呼び出しの結果であることを示します。
空の結果が返されたことを指定します。
メッセージが通知であることを識別します。
通知メッセージそのものです。
メッセージが通知に関する回答であることを識別します。
バックエンドプロセスを通知するプロセス ID。
通知が出された状況の名称。
メッセージが問い合わせであることを示します。
問い合わせ文字列そのもの。
メッセージの型を示します。バックエンドが新規の問い合わせ サイクルに入れる場合 ReadyForQuery が送られます。
メッセージが行の解説であることを識別します。
行のフィールド数(ゼロの場合もある)を指定します。
それぞれのフィールドに対し以下があります。
フィールドの名称を指定します。
フィールドの型のオブジェクト ID を指定します。
型のサイズを指定します。
修飾子の型を指定します。
バイトでのパケットのサイズ。
プロトコルのバージョン番号。最上位16ビットはメジャー バージョン 番号です。最下位16ビットはマイナーバージョン番号を 表します。
データベースの名前で、空であればユーザ名がデフォルトになります。
ユーザ名。
postmaster からバックエンドに渡される任意の追加のコマンド ライン引数。
未使用。
バックエンドがメッセージのバグ取りに使用すべき任意の tty。
メッセージが終了であることを識別します。
バイト数によるパケットのサイズ。
暗号化されていないパスワード。