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
| Position | Format | Meaning |
|---|---|---|
| 1 | Byte1('T') | Identifies the message as a row description. |
| 2 | Int32 | Length of message contents in bytes, including self. |
| 3 | Int16 | Specifies the number of fields in a row (can be zero). |
| 4 | String | The field name. |
| 5 | Int32 | If the field can be identified as a column of a specific table, the object ID of the table; otherwise zero. |
| 6 | Int16 | If the field can be identified as a column of a specific table, the attribute number of the column; otherwise zero. |
| 7 | Int32 | The object ID of the field's data type. |
| 8 | Int16 | The data type size (see pg_type.typlen ). Note that negative values denote variable-width types. |
| 9 | Int32 | The type modifier (see pg_attribute.atttypmod ). The meaning of the modifier is type-specific. |
| 10 | 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. |
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.