PostgreSQL
PrevChapter 51. フロントエンド/バックエンド プロトコルNext

メッセージ書式

この章では、各メッセージの書式の詳細について述べます。それぞれ のメッセージはフロントエンド(F)、postmaster/バックエンド(B)のいづれか、 もしくは両方から送出されることができます。

AsciiRow (B)

Byte1('D')

送出された内容中(CopyInResponse参照)のメッセージを ASCII列と識別します。

Byten

列中の各フィールドの1ビットを使用したビットマップ。 最初のフィールドは最初のバイトのビット7に対応して、 二番目のフィールドは最初のバイトのビット6に対応。 八番目のフィールドは最初のバイトのビット0に対応し、 九番目のフィールドは二番目バイトのビット8という風に 繰り返します。フィールドがヌルでなければビットが設定されます。

このとき、各フィールドが非ヌル値であれば、下記の通りです。

Int32

これの大きさを含めたフィールドの値の大きさを指定します。

Byten

フィールド自身の価をASCII文字で指定します。 nは上記の大きさから4を引いた値です。

AuthenticationOk (B)

Byte1('R')

メッセージを認証要求として識別します。

Int32(0)

認証が成功したと指定します。

AuthenticationKerberosV4 (B)

Byte1('R')

認証要求としてメッセージを識別します。

Int32(1)

ケルベロスV4認証が必要と指定します。

AuthenticationKerberosV5 (B)

Byte1('R')

認証要求としてメッセージを識別します。

Int32(2)

ケルベロスV5認証が必要と指定しあmす。

AuthenticationUnencryptedPassword (B)

Byte1('R')

認証要求としてメッセージを識別します。

Int32(3)

非暗号化パスワードを要求すると指定します。

AuthenticationEncryptedPassword (B)

Byte1('R')

認証要求としてメッセージを識別します。

Int32(4)

暗号化パスワードを要求すると指定します。

Byte2

パスワードを暗号化する際に使うsalt。

BinaryRow (B)

Byte1('B')

送出した(CopyOutResponse参照)内容中のメッセージを バイナリー列として識別します。

Byten

列中の各フィールドの1ビットを使用したビットマップ。 最初のフィールドは最初のバイトのビット7に対応して、 二番目のフィールドは最初のバイトのビット6に対応。 八番目のフィールドは最初のバイトのビット0に対応し、 九番目のフィールドは二番目バイトのビット8という風に 繰り返します。フィールドがヌルでなければビットが設定されます。

このとき、各フィールドが非ヌル値であれば、下記の通りです。

Int32

この大きさを除いたフィールドの値の大きさを指定します。

Byten

フィールド自身の値をバイナリーフォーマットで指定します。 nは上記の大きさです。

CompletedResponse (B)

Byte1('C')

メッセージを応答完了と識別します。

String

コマンドタグ、これは普通は(いつもではないが)SQLコマンドの 完了を識別する単語です。

CopyDataRows (B & F)

これは、列のストリームで、各列は Byte1('\n')で終了します。 このとき続いて、Byte1('\\'), Byte1('.'),Byte1('\n')の並びを送出します。

CopyInResponse (B)

Byte1('D')

送出された内容中(AsciiRow参照)のメッセージをコピー開始の応答と 識別します。

CopyOutResponse (B)

Byte1('B')

送出された内容中(BinaryRow参照)のメッセージをコピー開始の応答と 識別します。

CursorResponse (B)

Byte1('P')

メッセージをカーソル応答と識別します。

String

カーソルの名前、カーソルが暗黙的ならば、"空白"となります。

EmptyQueryResponse (B)

Byte1('I')

空の問い合わせ応答としてメッセージを識別します。

String("")

未使用

EncryptedPasswordPacket (F)

Int32

バイト単位でのパケットの大きさ。

String

(crypt()関数を使って)暗号化したパスワード

ErrorResponse (B)

Byte1('E')

エラーとしてメッセージを識別します。

String

エラーメッセージ自身

FunctionCall (F)

Byte1('F')

関数呼び出しとしてメッセージを識別します。

String("")

未使用

Int32

呼び出した関数のオブジェクトIDを指定します。

Int32

関数の引数の数を指定します。

このとき、それぞれの引数は、次の通りです。

Int32

引数の値の大きさを指定します。

Byten

フィールドそれ自身の値をバイナリ形式で指定します。 nは上記の大きさです。

FunctionResultResponse (B)

Byte1('V')

関数呼び出しの結果としてメッセージを識別します。

Byte1('G')

実際に返された結果を指定します。

Int32

結果の値の大きさを指定します。

Byten

結果自身の値をバイナリーフォーマットで指定します。 nは上記の大きさです。

Byte1('0')

未使用(はっきり言えば、FunctionResultResponseと FunctionVoidResponsは同一ですが、いくつかのオプションがあります)

FunctionVoidResponse (B)

Byte1('V')

関数呼び出しの結果としてメッセージを識別します。

Byte1('0')

実際の結果が返されなかったことを指定します。

NoticeResponse (B)

Byte1('N')

注意としてメッセージを識別します。

String

注意メッセージ自身。

NotificationResponse (B)

Byte1('A')

メッセージを通知応答と識別します。

Int32

バックエンドのプロセスID。

String

通知が発生した表の名称。

Query (F)

Byte1('Q')

メッセージを問い合わせと識別します。

String

問い合わせ自身

RowDescription (B)

Byte1('T')

メッセージを列の記述と識別します。

Int16

列中のフィールドの数(0かもしれない)を指定します。

このとき、各々のフィールドは次の通りです。

String

フィールド名を指定します。

Int32

フィールド型のオブジェクトIDを指定します。

Int16

型の大きさを指定します。

StartupPacket (F)

Int32(296)

バイト単位でのパケットの大きさ。

Int32

プロトコルバージョン番号。最初の16ビットがメジャーな バージョン番号で、残りの16ビットがマイナーなバージョン番号です。

LimString64

データベース名で、省略した場合の既定値はユーザ名となります。

LimString32

ユーザ名

LimString64

postmasterによってバックエンドに渡された追加のコマンドライン 引数。

LimString64

未使用

LimString64

選択的ttyバックエンドはデバッグメッセージ用に使用すべきです。

Terminate (F)

Byte1('X')

メッセージを終了と識別します。

UnencryptedPasswordPacket (F)

Int32

バイト単位でのパケットの大きさ

String

非暗号化パスワード


PrevHomeNext
メッセージデータ型UpGCC のデフォルト値の最適化