pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
百科 / 协议消息
前后端消息方向、线上字段与对应版本的协议定义。
当前查看 PostgreSQL 18。
共 73 个条目,PostgreSQL 18 收录 72 个。
Byte1('B') 将该消息标识为 Bind 命令。 Int32 消息内容的长度(以字节为单位),包括其自身。 String 目标 portal 的名称(空字符串选择未命名的 portal)。 String 源预备语句的名称(空字符串选择未命名的预备语句)。 Int16 后续参数格式代码的数量(下文以 C 表示)。可以为零,表示没有参数,或者所有参数都使用默认格式(文本);也可以为一,此时指定的格式代码应用于所有参数;还可以等于实际参数数量。 Int16[ C ] 参数格式代码。目前每个格式…
Int32 消息内容的长度(以字节为单位),包括其自身。 Int32(80877102) 取消请求代码。此值的最高 16 位为 1234 ,最低 16 位为 5678 。(为避免混淆,此代码不能与任何协议版本号相同。) Int32 目标后端的进程 ID。 Byte n 目标后端的密钥。此字段延伸至消息末尾,其范围由长度字段确定。密钥最长为 256 字节。 在协议版本 3.2 之前,密钥始终为 4 字节长。
Byte1('C') 将该消息标识为 Close 命令。 Int32 消息内容的长度(以字节为单位),包括其自身。 Byte1 “ S ”表示关闭预备语句;“ P ”表示关闭 portal。 String 要关闭的预备语句或 portal 的名称(空字符串选择未命名的预备语句或 portal)。
Byte1('f') 将消息标识为 COPY 失败指示器。 Int32 消息内容的长度(以字节为单位),包括其自身。 String 作为失败原因报告的错误消息。
Byte1('D') 将该消息标识为 Describe 命令。 Int32 消息内容的长度(以字节为单位),包括其自身。 Byte1 ' S ' 表示描述一个预备语句;或者 ' P ' 表示描述一个 portal。 String 要描述的预备语句或 portal 的名称(空字符串选择未命名的预备语句或 portal)。
Byte1('E') 将该消息标识为 Execute 命令。 Int32 消息内容的长度(以字节为单位),包括其自身。 String 要执行的 portal 的名称(空字符串选择未命名的 portal)。 Int32 如果 portal 包含返回行的查询,则这是最多返回的行数(否则忽略此值)。零表示 “ 无限制 ” 。
Byte1('H') 将该消息标识为 Flush 命令。 Int32(4) 消息内容的长度(以字节为单位),包括其自身。
Byte1('F') 标识消息为函数调用。 Int32 消息内容的长度(以字节为单位),包括其自身。 Int32 指定要调用的函数的对象 ID。 Int16 后续参数格式代码的数量(以下用 C 表示)。可以为零,表示没有参数,或所有参数都采用默认格式(文本);也可以为一,表示将指定的格式代码用于所有参数;还可以等于实际参数数量。 Int16[ C ] 参数格式代码。每个目前必须是零(文本)或一(二进制)。 Int16 指定传递给函数的参数数量。 接下来,每个参数都有以下两个字段: Int32 …
Int32(8) 消息内容的长度(以字节为单位),包括其自身。 Int32(80877104) GSSAPI 加密请求代码。此值的最高 16 位为 1234 ,最低 16 位为 5680 。(为避免混淆,此代码不得与任何协议版本号相同。)
Byte1('p') 标识消息为 GSSAPI 或 SSPI 响应。请注意,这也用于 SASL 和密码响应消息。可以从上下文中推断出确切的消息类型。 Int32 消息内容的长度(以字节为单位),包括其自身。 Byte n GSSAPI/SSPI 特定的消息数据。
Byte1('P') 将该消息标识为 Parse 命令。 Int32 消息内容的长度(以字节为单位),包括其自身。 String 目标预备语句的名称(空字符串选择未命名的预备语句)。 String 要解析的查询字符串。 Int16 指定的参数数据类型的数量(可以为零)。请注意,这不是查询字符串中可能出现的参数数量的指示,而是前端希望为其预先指定类型的参数数量。 接下来,每个参数都有以下内容: Int32 指定参数数据类型的对象 ID。此处填零等同于不指定类型。
Byte1('p') 标识消息为密码响应。请注意,这也用于 GSSAPI、SSPI 和 SASL 响应消息。可以从上下文中推断出确切的消息类型。 Int32 消息内容的长度(以字节为单位),包括其自身。 String 密码(如果需要,已加密)。
Byte1('Q') 标识消息为简单查询。 Int32 消息内容的长度(以字节为单位),包括其自身。 String 查询字符串本身。
Byte1('p') 标识消息为初始 SASL 响应。请注意,这也用于 GSSAPI、SSPI 和密码响应消息。精确的消息类型是从上下文中推断出来的。 Int32 消息内容的长度(以字节为单位),包括其自身。 String 客户端选择的 SASL 认证机制的名称。 Int32 后续 SASL 机制特有的“客户端初始响应”的长度;如果没有初始响应,则为 -1。 Byte n SASL 机制特定的“初始响应”。
Byte1('p') 标识消息为 SASL 响应。请注意,这也用于 GSSAPI、SSPI 和密码响应消息。可以从上下文中推断出确切的消息类型。 Int32 消息内容的长度(以字节为单位),包括其自身。 Byte n SASL 机制特定的消息数据。
Int32(8) 消息内容的长度(以字节为单位),包括其自身。 Int32(80877103) SSL 请求代码。该值被选择为在最高的 16 位中包含 1234 ,在最低的 16 位中包含 5679 。(为避免混淆,此代码不得与任何协议版本号相同。)
Int32 消息内容的长度(以字节为单位),包括其自身。 Int32(196610) 协议版本号。高 16 位为主版本号(此处描述的协议为 3);低 16 位为次版本号(此处描述的协议为 2)。 协议版本号之后是一个或多个参数名与参数值字符串对。最后一个名称/值对之后必须有一个零字节作为终止符。参数可以按任意顺序出现。其中, user 是必需的,其余均为可选。每个参数按以下方式指定: String 参数名称。目前能够识别的名称如下: user 要连接的数据库用户名称。必填项;没有默认值。 da…
Byte1('S') 将该消息标识为 Sync 命令。 Int32(4) 消息内容的长度(以字节为单位),包括其自身。
Byte1('X') 标识消息为终止。 Int32(4) 消息内容的长度(以字节为单位),包括其自身。
Byte1('d') 标识消息为 COPY 数据。 Int32 消息内容的长度(以字节为单位),包括其自身。 Byte n 数据是 COPY 数据流的一部分。来自后端的消息始终对应单个数据行,但来自前端的消息可能会任意划分数据流。
Byte1('c') 将消息标识为 COPY 完成指示符。 Int32(4) 消息内容的长度(以字节为单位),包括其自身。
Byte1('R') 将该消息标识为认证请求。 Int32(8) 消息内容的长度(以字节为单位),包括其自身。 Int32(3) 表示需要明文密码。
Byte1('R') 将该消息标识为认证请求。 Int32(8) 消息内容的长度(以字节为单位),包括其自身。 Int32(7) 表示需要 GSSAPI 认证。
Byte1('R') 将该消息标识为认证请求。 Int32 消息内容的长度(以字节为单位),包括其自身。 Int32(8) 表示此消息包含 GSSAPI 或 SSPI 数据。 Byte n GSSAPI 或 SSPI 认证数据。
Byte1('R') 将该消息标识为认证请求。 Int32(8) 消息内容的长度(以字节为单位),包括其自身。 Int32(2) 表示需要 Kerberos V5 认证。
Byte1('R') 将该消息标识为认证请求。 Int32(12) 消息内容的长度(以字节为单位),包括其自身。 Int32(5) 表示需要经过 MD5 加密的密码。 Byte4 加密密码时使用的盐。
Byte1('R') 将该消息标识为认证请求。 Int32(8) 消息内容的长度(以字节为单位),包括其自身。 Int32(0) 表示认证成功。
Byte1('R') 将该消息标识为认证请求。 Int32 消息内容的长度(以字节为单位),包括其自身。 Int32(10) 表示需要 SASL 认证。 消息体是按服务器偏好顺序排列的 SASL 认证机制列表。在最后一个认证机制名称之后,必须有一个零字节作为终止符。每个机制包含以下内容: String SASL 认证机制的名称。
Byte1('R') 将该消息标识为认证请求。 Int32 消息内容的长度(以字节为单位),包括其自身。 Int32(11) 表示此消息包含 SASL 挑战。 Byte n SASL 数据,具体内容取决于所使用的 SASL 机制。
Byte1('R') 将该消息标识为认证请求。 Int32 消息内容的长度(以字节为单位),包括其自身。 Int32(12) 表示 SASL 认证已完成。 Byte n SASL 结果的“附加数据”,具体内容取决于所使用的 SASL 机制。
所选版本未收录此条目。
Byte1('R') 将该消息标识为认证请求。 Int32(8) 消息内容的长度(以字节为单位),包括其自身。 Int32(9) 表示需要 SSPI 认证。
Byte1('K') 将此消息标识为取消请求密钥数据。如果前端希望以后能够发送 CancelRequest 消息,就必须保存这些值。 Int32 消息内容的长度(以字节为单位),包括其自身。 Int32 此后端的进程 ID。 Byte n 此后端的密钥。此字段延伸至消息末尾,其范围由长度字段确定。 密钥长度最小为 4 字节,最大为 256 字节。 PostgreSQL 服务器只发送最长 32 字节的密钥,但更大的长度上限允许未来的服务器版本、连接池和其他中间件使用更长的密钥。一种可能的用途是在…
Byte1('2') 将该消息标识为 Bind 完成指示。 Int32(4) 消息内容的长度(以字节为单位),包括其自身。
Byte1('3') 将该消息标识为 Close 完成指示。 Int32(4) 消息内容的长度(以字节为单位),包括其自身。
Byte1('C') 将该消息标识为命令完成响应。 Int32 消息内容的长度(以字节为单位),包括其自身。 String 命令标签。通常是一个单词,用来标识已完成的 SQL 命令。 对于 INSERT 命令,标签是 INSERT oid rows ,其中 rows 是插入的行数。如果 rows 为 1 且目标表具有 OIDs,则 oid 曾经是插入行的对象 ID,但不再支持 OIDs 系统列;因此 oid 总是 0。 对于 DELETE 命令,标签是 DELETE rows ,其中 rows…
Byte1('W') 将该消息标识为开始双向 COPY 的响应。此消息仅用于流复制。 Int32 消息内容的长度(以字节为单位),包括其自身。 Int8 0 表示整体 COPY 格式是文本的(行由换行符分隔,列由分隔符分隔等)。1 表示整体复制格式是二进制的(类似于 DataRow 格式)。更多信息请参见 COPY 。 Int16 要复制的数据中的列数(以下用 N 表示)。 Int16[ N ] 各列使用的格式代码。目前每个代码必须为零(文本)或一(二进制)。如果整体复制格式为文本,则所有代码…
Byte1('G') 将该消息标识为开始 COPY 输入的响应。前端此时必须发送 COPY 输入数据(如果尚未准备好,应发送 CopyFail 消息)。 Int32 消息内容的长度(以字节为单位),包括其自身。 Int8 0 表示整体 COPY 格式是文本的(行由换行符分隔,列由分隔符分隔等)。1 表示整体复制格式是二进制的(类似于 DataRow 格式)。更多信息请参见 COPY 。 Int16 要复制的数据中的列数(以下用 N 表示)。 Int16[ N ] 各列使用的格式代码。目前每个代…
Byte1('H') 将该消息标识为开始 COPY 输出的响应。此消息之后会发送 COPY 输出数据。 Int32 消息内容的长度(以字节为单位),包括其自身。 Int8 0 表示整体 COPY 格式是文本的(行由换行符分隔,列由分隔符分隔等)。1 表示整体复制格式是二进制的(类似于 DataRow 格式)。更多信息请参见 COPY 。 Int16 要复制的数据中的列数(以下用 N 表示)。 Int16[ N ] 各列使用的格式代码。目前每个代码必须为零(文本)或一(二进制)。如果整体复制格式…
Byte1('D') 标识消息为数据行。 Int32 消息内容的长度(以字节为单位),包括其自身。 Int16 后面跟着的列值的数量(可能为零)。 接下来,每列都有以下两个字段: Int32 列值的长度,以字节为单位(不包括此长度字段本身)。可以为零。特殊值 -1 表示 NULL 列值。为 NULL 时,后面不再有值的字节。 Byte n 列的值,格式由相关的格式代码指示。 n 是上述长度。
Byte1('I') 标识消息为对空查询字符串的响应。(此消息替代 CommandComplete。) Int32(4) 消息内容的长度(以字节为单位),包括其自身。
Byte1('E') 将消息标识为错误。 Int32 消息内容的长度(以字节为单位),包括其自身。 消息体由一个或多个带标识的字段组成,最后以一个零字节终止。字段可以按任意顺序出现。每个字段包含以下内容: Byte1 一个用于标识字段类型的代码;如果为零,则这是消息终止符,后面没有字符串。目前定义的字段类型列在 第 54.8 节 中。由于将来可能会添加更多的字段类型,前端应该静默地忽略未识别类型的字段。 String 字段值。
Byte1('V') 标识消息为函数调用结果。 Int32 消息内容的长度(以字节为单位),包括其自身。 Int32 函数结果值的长度,以字节为单位(不包括此长度字段本身)。可以为零。特殊值 -1 表示 NULL 函数结果。为 NULL 时,后面不再有值的字节。 Byte n 函数结果的值,格式由相关的格式代码指示。 n 是上述长度。
Byte1('v') 标识消息为协议版本协商消息。 Int32 消息内容的长度(以字节为单位),包括其自身。 Int32 对于客户端请求的协议主版本,服务器所支持的最新协议次版本。 Int32 服务器无法识别的协议选项数量。 接下来,对于服务器无法识别的每个协议选项,都有以下内容: String 选项名称。
Byte1('n') 将消息标识为无数据指示器。 Int32(4) 消息内容的长度(以字节为单位),包括其自身。
Byte1('N') 将消息标识为通知。 Int32 消息内容的长度(以字节为单位),包括其自身。 消息体由一个或多个带标识的字段组成,最后以一个零字节终止。字段可以按任意顺序出现。每个字段包含以下内容: Byte1 一个用于标识字段类型的代码;如果为零,则这是消息终止符,后面没有字符串。目前定义的字段类型列在 第 54.8 节 中。由于将来可能会添加更多的字段类型,前端应该静默地忽略未识别类型的字段。 String 字段值。
Byte1('A') 标识消息为通知响应。 Int32 消息内容的长度(以字节为单位),包括其自身。 Int32 发出通知的后端进程的进程 ID。 String 发出该通知的通道名称。 String 通知进程传来的 “ 有效载荷 ” 字符串。
Byte1('t') 标识消息为参数描述。 Int32 消息内容的长度(以字节为单位),包括其自身。 Int16 语句使用的参数数量(可以为零)。 接下来,每个参数都有以下内容: Int32 指定参数数据类型的对象 ID。
Byte1('S') 标识消息为运行时参数状态报告。 Int32 消息内容的长度(以字节为单位),包括其自身。 String 所报告的运行时参数的名称。 String 参数的当前值。
Byte1('1') 将该消息标识为 Parse 完成指示。 Int32(4) 消息内容的长度(以字节为单位),包括其自身。
Byte1('s') 将该消息标识为 portal 挂起指示。注意,仅当达到 Execute 消息指定的行数限制时,才会出现此消息。 Int32(4) 消息内容的长度(以字节为单位),包括其自身。
Byte1('Z') 标识消息类型。ReadyForQuery 在后端准备好进行新的查询周期时发送。 Int32(5) 消息内容的长度(以字节为单位),包括其自身。 Byte1 当前后端事务状态指示器。可能的值为' I ',如果空闲(不在事务块中);' T ',如果在事务块中;或' E ',如果在失败的事务块中(查询将被拒绝,直到块结束)。
Byte1('T') 标识消息为行描述。 Int32 消息内容的长度(以字节为单位),包括其自身。 Int16 指定一行中的字段数量(可以为零)。 接下来,每个字段都有以下内容: String 字段名称。 Int32 如果能够确定该字段是某个特定表的列,则为该表的对象 ID;否则为零。 Int16 如果能够确定该字段是某个特定表的列,则为该列的属性编号;否则为零。 Int32 字段数据类型的对象 ID。 Int16 数据类型大小(参见 pg_type.typlen )。注意,负值表示可变宽度类…
Byte1('B') 将该消息标识为 Begin 消息。 Int64 (XLogRecPtr) 事务的最终 LSN。 Int64 (TimestampTz) 事务的提交时间戳。其值为自 PostgreSQL 纪元(2000-01-01)起经过的微秒数。 Int32 (TransactionId) 事务的 Xid。
Byte1('b') 将该消息标识为 Begin Prepare 消息。 Int64 (XLogRecPtr) PREPARE 的 LSN。 Int64 (XLogRecPtr) 预备事务的结束 LSN。 Int64 (TimestampTz) 事务进入预备状态的时间戳。其值为自 PostgreSQL 纪元(2000-01-01)起经过的微秒数。 Int32 (TransactionId) 事务的 Xid。 String 预备事务的用户定义 GID。
Byte1('C') 将该消息标识为 Commit 消息。 Int8(0) 标志;目前未使用。 Int64 (XLogRecPtr) 提交的 LSN。 Int64 (XLogRecPtr) 事务的结束 LSN。 Int64 (TimestampTz) 事务的提交时间戳。其值为自 PostgreSQL 纪元(2000-01-01)起经过的微秒数。
Byte1('K') 将该消息标识为 Commit Prepared 消息。 Int8(0) 标志;目前未使用。 Int64 (XLogRecPtr) 预备事务提交的 LSN。 Int64 (XLogRecPtr) 预备事务提交的结束 LSN。 Int64 (TimestampTz) 事务的提交时间戳。其值为自 PostgreSQL 纪元(2000-01-01)起经过的微秒数。 Int32 (TransactionId) 事务的 Xid。 String 预备事务的用户定义 GID。
Byte1('D') 将该消息标识为 Delete 消息。 Int32 (TransactionId) 事务的 Xid(仅在流式传输的事务中出现)。此字段从协议版本 2 起可用。 Int32 (Oid) 关系的 OID,与 Relation 消息中的 ID 对应。 Byte1('K') 将后续 TupleData 子消息标识为键。如果发生删除的表使用索引作为 REPLICA IDENTITY,则出现此字段。 Byte1('O') 将后续 TupleData 消息标识为旧元组。如果发生删除的表将…
Byte1('I') 将该消息标识为 Insert 消息。 Int32 (TransactionId) 事务的 Xid(仅在流式传输的事务中出现)。此字段从协议版本 2 起可用。 Int32 (Oid) 关系的 OID,与 Relation 消息中的 ID 对应。 Byte1('N') 将后续 TupleData 消息标识为新元组。 TupleData 表示新元组内容的 TupleData 消息部分。
Byte1('M') 将消息标识为逻辑解码消息。 Int32 (TransactionId) 事务的 Xid(仅在流式传输的事务中出现)。此字段从协议版本 2 起可用。 Int8 标志:0 表示没有标志;1 表示该逻辑解码消息是事务性的。 Int64 (XLogRecPtr) 逻辑解码消息的 LSN。 String 逻辑解码消息的前缀。 Int32 内容的长度。 Byte n 逻辑解码消息的内容。
Byte1('O') 将该消息标识为 Origin 消息。 Int64 (XLogRecPtr) 源服务器上提交的 LSN。 String 复制源的名称。 注意,单个事务中可能有多条 Origin 消息。
Byte1('P') 将该消息标识为 Prepare 消息。 Int8(0) 标志;目前未使用。 Int64 (XLogRecPtr) PREPARE 的 LSN。 Int64 (XLogRecPtr) 预备事务的结束 LSN。 Int64 (TimestampTz) 事务进入预备状态的时间戳。其值为自 PostgreSQL 纪元(2000-01-01)起经过的微秒数。 Int32 (TransactionId) 事务的 Xid。 String 预备事务的用户定义 GID。
Byte1('R') 将该消息标识为 Relation 消息。 Int32 (TransactionId) 事务的 Xid(仅在流式传输的事务中出现)。此字段从协议版本 2 起可用。 Int32 (Oid) 关系的 OID。 String 命名空间(对于 pg_catalog 为空字符串)。 String 关系名称。 Int8 关系的复制标识设置(与 pg_class 中的 relreplident 相同)。 Int16 列数。 接下来,发布中包含的每一列都会出现以下消息部分: Int8 列的…
Byte1('r') 将该消息标识为 Rollback Prepared 消息。 Int8(0) 标志;目前未使用。 Int64 (XLogRecPtr) 预备事务的结束 LSN。 Int64 (XLogRecPtr) 回滚预备事务的结束 LSN。 Int64 (TimestampTz) 事务进入预备状态的时间戳。其值为自 PostgreSQL 纪元(2000-01-01)起经过的微秒数。 Int64 (TimestampTz) 事务的回滚时间戳。该值是自 PostgreSQL 纪元(2000…
Byte1('A') 将该消息标识为 Stream Abort 消息。 Int32 (TransactionId) 事务的 Xid。 Int32 (TransactionId) 子事务的 Xid(对于顶层事务,将与事务的 xid 相同)。 Int64 (XLogRecPtr) 中止操作的 LSN,仅当 streaming 设置为 parallel 时出现。此字段从协议版本 4 起可用。 Int64 (TimestampTz) 事务的中止时间戳,仅当 streaming 设置为 parallel…
Byte1('c') 将该消息标识为 Stream Commit 消息。 Int32 (TransactionId) 事务的 Xid。 Int8(0) 标志;目前未使用。 Int64 (XLogRecPtr) 提交的 LSN。 Int64 (XLogRecPtr) 事务的结束 LSN。 Int64 (TimestampTz) 事务的提交时间戳。其值为自 PostgreSQL 纪元(2000-01-01)起经过的微秒数。
Byte1('p') 将该消息标识为 Stream Prepare 消息。 Int8(0) 标志;目前未使用。 Int64 (XLogRecPtr) PREPARE 的 LSN。 Int64 (XLogRecPtr) 预备事务的结束 LSN。 Int64 (TimestampTz) 事务进入预备状态的时间戳。其值为自 PostgreSQL 纪元(2000-01-01)起经过的微秒数。 Int32 (TransactionId) 事务的 Xid。 String 预备事务的用户定义 GID。
Byte1('S') 将该消息标识为 Stream Start 消息。 Int32 (TransactionId) 事务的 Xid。 Int8 值为 1 表示这是该 XID 的第一个流段,值为 0 表示其他任何流段。
Byte1('E') 将该消息标识为 Stream Stop 消息。
Byte1('T') 将该消息标识为 Truncate 消息。 Int32 (TransactionId) 事务的 Xid(仅在流式传输的事务中出现)。此字段从协议版本 2 起可用。 Int32 关系数量 Int8 选项位用于 TRUNCATE 命令:1 表示 CASCADE ,2 表示 RESTART IDENTITY Int32 (Oid) 关系的 OID,与 Relation 消息中的 ID 对应。每个关系都重复出现此字段。
表示新元组内容的 TupleData 消息部分。
Byte1('Y') 将该消息标识为 Type 消息。 Int32 (TransactionId) 事务的 Xid(仅在流式传输的事务中出现)。此字段从协议版本 2 起可用。 Int32 (Oid) 数据类型的 OID。 String 命名空间(对于 pg_catalog 为空字符串)。 String 数据类型的名称。
Byte1('U') 将该消息标识为 Update 消息。 Int32 (TransactionId) 事务的 Xid(仅在流式传输的事务中出现)。此字段从协议版本 2 起可用。 Int32 (Oid) 关系的 OID,与 Relation 消息中的 ID 对应。 Byte1('K') 将后续 TupleData 子消息标识为键。此字段可选,仅在更新更改了属于 REPLICA IDENTITY 索引的某一列或多列的数据时出现。 Byte1('O') 将后续 TupleData 子消息标识为旧元…
已收录首次收录接口或属性变化不再收录
版本方格表示采样构建中的收录情况,不代表实际引入时间。点击方格可查看对应版本的定义和来源。
前后端协议消息与逻辑复制载荷分别标识,定义保留条件和重复字段。字段顺序不等于字节偏移;交互章节说明合法消息交换。