↑↓ select ↵ open ⌫ change scope Open full search

PG.CENTER connects PostgreSQL documentation, reference, and ecosystem knowledge. Maintained by Pigsty.

Wiki / Protocol Messages / Backend messages

RowDescription

RowDescription is a backend protocol message. Identifies the message as a row description.

Reading PostgreSQL 18.6.

Description

RowDescription is a backend protocol message. Identifies the message as a row description.

Direction
Backend → frontend
First wire field
Byte1('T')
Field entries
10
Documented flow contexts
Simple Query; Extended Query

Usage

RowDescription (B)

Framing and repetition

The complete definition below retains repetition, counts and conditional fields. A numbered table row is a documented field definition, not a fixed byte offset. Integer encodings and flow rules follow the same-version protocol chapter.

Wire fields in documented order

PositionFormatMeaning
1Byte1('T')Identifies the message as a row description.
2Int32Length of message contents in bytes, including self.
3Int16Specifies the number of fields in a row (can be zero).
4StringThe field name.
5Int32If the field can be identified as a column of a specific table, the object ID of the table; otherwise zero.
6Int16If the field can be identified as a column of a specific table, the attribute number of the column; otherwise zero.
7Int32The object ID of the field's data type.
8Int16The data type size (see pg_type.typlen ). Note that negative values denote variable-width types.
9Int32The type modifier (see pg_attribute.atttypmod ). The meaning of the modifier is type-specific.
10Int16The format code being used for the field. Currently will be zero (text) or one (binary). In a RowDescription returned from the statement variant of Describe, the format code is not yet known and will always be zero.

Manual definition

Byte1('T')

Identifies the message as a row description.

Int32

Length of message contents in bytes, including self.

Int16

Specifies the number of fields in a row (can be zero).

Then, for each field, there is the following:

String

The field name.

Int32

If the field can be identified as a column of a specific table, the object ID of the table; otherwise zero.

Int16

If the field can be identified as a column of a specific table, the attribute number of the column; otherwise zero.

Int32

The object ID of the field's data type.

Int16

The data type size (see pg_type.typlen). Note that negative values denote variable-width types.

Int32

The type modifier (see pg_attribute.atttypmod). The meaning of the modifier is type-specific.

Int16

The format code being used for the field. Currently will be zero (text) or one (binary). In a RowDescription returned from the statement variant of Describe, the format code is not yet known and will always be zero.

Related entries

Documentation and source

Source build
Version
18.6
Build
https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2
Source fingerprint
555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f

Compare versions

PostgreSQL 17 → 18: unchanged.

Compares recorded interfaces and attributes. Source fingerprints and build metadata are excluded; an absent sample is not proof of the introduction or removal release.

Related entries

Export JSON · Back to Protocol Messages · Recorded in PostgreSQL 10 through 20; the first sample is not necessarily its introduction.