Wiki / Protocol Messages / Frontend messages
FunctionCall
FunctionCall is a frontend protocol message. Identifies the message as a function call.
Reading PostgreSQL 18.6.
Description
FunctionCall is a frontend protocol message. Identifies the message as a function call.
- Direction
- Frontend → backend
- First wire field
- Byte1('F')
- Field entries
- 9
- Documented flow contexts
- Function Call
Usage
FunctionCall (F)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('F') | Identifies the message as a function call. |
| 2 | Int32 | Length of message contents in bytes, including self. |
| 3 | Int32 | Specifies the object ID of the function to call. |
| 4 | Int16 | The number of argument format codes that follow (denoted C below). This can be zero to indicate that there are no arguments or that the arguments all use the default format (text); or one, in which case the specified format code is applied to all arguments; or it can equal the actual number of arguments. |
| 5 | Int16[ C ] | The argument format codes. Each must presently be zero (text) or one (binary). |
| 6 | Int16 | Specifies the number of arguments being supplied to the function. |
| 7 | Int32 | The length of the argument value, in bytes (this count does not include itself). Can be zero. As a special case, -1 indicates a NULL argument value. No value bytes follow in the NULL case. |
| 8 | Byte n | The value of the argument, in the format indicated by the associated format code. n is the above length. |
| 9 | Int16 | The format code for the function result. Must presently be zero (text) or one (binary). |
Manual definition
-
- Byte1('F')
-
Identifies the message as a function call.
- Int32
-
Length of message contents in bytes, including self.
- Int32
-
Specifies the object ID of the function to call.
- Int16
-
The number of argument format codes that follow (denoted
Cbelow). This can be zero to indicate that there are no arguments or that the arguments all use the default format (text); or one, in which case the specified format code is applied to all arguments; or it can equal the actual number of arguments. - Int16[
C] -
The argument format codes. Each must presently be zero (text) or one (binary).
- Int16
-
Specifies the number of arguments being supplied to the function.
Next, the following pair of fields appear for each argument:
- Int32
-
The length of the argument value, in bytes (this count does not include itself). Can be zero. As a special case, -1 indicates a NULL argument value. No value bytes follow in the NULL case.
- Byte
n -
The value of the argument, in the format indicated by the associated format code.
nis the above length.
After the last argument, the following field appears:
- Int16
-
The format code for the function result. Must presently be zero (text) or one (binary).
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.