message contents in bytes, including self.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Int32</term>
<listitem>
<para>
The process ID of this backend.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Byte<replaceable>n</replaceable></term>
<listitem>
<para>
The secret key of this backend. This field extends to the end of the
message, indicated by the length field.
</para>
<para>
The maximum key length is 256 bytes. The
<productname>PostgreSQL</productname> server only sends keys up to
32 bytes, but the larger maximum size allows for future server
versions, as well as connection poolers and other middleware, to use
longer keys. One possible use case is augmenting the server's key
with extra information. Middleware is therefore also encouraged to
not use up all of the bytes, in case multiple middleware
applications are layered on top of each other, each of which may
wrap the key with extra data.
</para>
</listitem>
</varlistentry>
</variablelist>
<para>
Before protocol version 3.2, the secret key was always 4 bytes long.
</para>
</listitem>
</varlistentry>
<varlistentry id="protocol-message-formats-Bind">
<term>Bind (F)</term>
<listitem>
<variablelist>
<varlistentry>
<term>Byte1('B')</term>
<listitem>
<para>
Identifies the message as a Bind command.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Int32</term>
<listitem>
<para>
Length of message contents in bytes, including self.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>String</term>
<listitem>
<para>
The name of the destination portal
(an empty string selects the unnamed portal).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>String</term>
<listitem>
<para>
The name of the source prepared statement
(an empty string selects the unnamed prepared statement).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Int16</term>
<listitem>
<para>
The number of parameter format codes that follow
(denoted <replaceable>C</replaceable> below).
This can be zero to indicate that there are no parameters
or that the parameters all use the default format (text);
or one, in which case the specified format code is applied
to all parameters; or it can equal the actual number of
parameters.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Int16[<replaceable>C</replaceable>]</term>
<listitem>
<para>
The parameter format codes. Each must presently be
zero (text) or one (binary).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Int16</term>
<listitem>
<para>
The number of parameter values that follow (possibly zero).
This must match the number of parameters needed by the query.
</para>
</listitem>
</varlistentry>
</variablelist>
<para>
Next, the following pair of fields appear for each parameter:
</para>
<variablelist>
<varlistentry>
<term>Int32</term>
<listitem>
<para>
The length of the parameter value, in bytes (this count
does not include itself). Can be zero.
As a special case, -1 indicates a NULL parameter value.
No value bytes follow in the NULL case.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Byte<replaceable>n</replaceable></term>