↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

不受支持的版本: 7.0 / 6.5 / 6.4 / 6.3
历史版本PostgreSQL 6.3 已于 2003 年 3 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本手册首页。

51.4. 消息格式

本节描述每种消息的详细格式。每种消息可以由前端(F)、postmaster/后端(B)或两者(F & B)发送。

AsciiRow (B)
Byte1('D')

在发送它的上下文中(见 CopyInResponse)把该消息标识为一个 ASCII 行。

Byten

一个位图,行中每个字段一位。第 1 个字段对应第 1 个字节的第 7 位,第 2 个字段对应第 1 个字节的第 6 位,第 8 个字段对应第 1 个字节的第 0 位,第 9 个字段对应第 2 个字节的第 8 位,依此类推。如果对应字段的值不是 NULL,则该位被置位。

然后,对每个非 NULL 值的字段,有下列内容:

Int32

指定字段值的大小,包括 该大小本身。

Byten

以 ASCII 字符指定字段本身的值。n 是上面的尺寸减 4。

AuthenticationOk (B)
Byte1('R')

标识此消息为认证请求。

Int32(0)

指定认证成功。

AuthenticationKerberosV4 (B)
Byte1('R')

标识此消息为认证请求。

Int32(1)

指定需要 Kerberos V4 认证。

AuthenticationKerberosV5 (B)
Byte1('R')

标识此消息为认证请求。

Int32(2)

指定需要 Kerberos V5 认证。

AuthenticationUnencryptedPassword (B)
Byte1('R')

标识此消息为认证请求。

Int32(3)

指定需要未加密的密码。

AuthenticationEncryptedPassword (B)
Byte1('R')

标识此消息为认证请求。

Int32(4)

指定需要加密的密码。

Byte2

加密密码时使用的盐。

BinaryRow (B)
Byte1('B')

在其发送的上下文中(见 CopyOutResponse)标识此消息为二进制行。

Byten

一个位图,行中每个字段一位。第 1 个字段对应第 1 个字节的第 7 位,第 2 个字段对应第 1 个字节的第 6 位,第 8 个字段对应第 1 个字节的第 0 位,第 9 个字段对应第 2 个字节的第 8 位,依此类推。如果对应字段的值不是 NULL,则该位被置位。

然后,对每个非 NULL 值的字段,有下列内容:

Int32

指定字段值的大小,不包括 该大小本身。

Byten

以二进制格式指定字段本身的值。n 是上面的尺寸。

CompletedResponse (B)
Byte1('C')

标识此消息为完成响应。

String

命令标签。这通常是(但不总是)标识完成了哪条 SQL 命令的单个词。

CopyDataRows (B & F)

这是一个行流,其中每行以 Byte1('\n') 结束。然后跟随序列 Byte1('\\')、Byte1('.')、Byte1('\n')。

CopyInResponse (B)
Byte1('D')

在其发送的上下文中(见 AsciiRow)标识此消息为 copy in 开始响应。

CopyOutResponse (B)
Byte1('B')

在其发送的上下文中(见 BinaryRow)标识此消息为 copy out 开始响应。

CursorResponse (B)
Byte1('P')

标识此消息为游标响应。

String

游标的名称。如果游标是隐式的,则为“blank”。

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 和 FunctionVoidResponse 是同一个东西,只是消息的某些 部分是可选的。)

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

指定一行中的字段数(可以为零)。

Then, for each field, there is the following:

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

未加密的密码。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。