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>
<listitem>
<para>
The value of the parameter, in the format indicated by the
associated format code.
<replaceable>n</replaceable> is the above length.
</para>
</listitem>
</varlistentry>
</variablelist>
<para>
After the last parameter, the following fields appear:
</para>
<variablelist>
<varlistentry>
<term>Int16</term>
<listitem>
<para>
The number of result-column format codes that follow
(denoted <replaceable>R</replaceable> below).
This can be zero to indicate that there are no result columns
or that the result columns should all use the default format
(text);
or one, in which case the specified format code is applied
to all result columns (if any); or it can equal the actual
number of result columns of the query.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Int16[<replaceable>R</replaceable>]</term>
<listitem>
<para>
The result-column format codes. Each must presently be
zero (text) or one (binary).
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry id="protocol-message-formats-BindComplete">
<term>BindComplete (B)</term>
<listitem>
<variablelist>
<varlistentry>
<term>Byte1('2')</term>
<listitem>
<para>
Identifies the message as a Bind-complete indicator.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Int32(4)</term>
<listitem>
<para>
Length of message contents in bytes, including self.
</para>
</listitem>
</varlistentry>
</variablelist>
</listitem>
</varlistentry>
<varlistentry id="protocol-message-formats-CancelRequest">
<term>CancelRequest (F)</term>
<listitem>
<variablelist>
<varlistentry>
<term>Int32(16)</term>
<listitem>
<para>
Length of message contents in bytes, including self.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Int32(80877102)</term>
<listitem>
<para>
The cancel request code. The value is chosen to contain
<literal>1234</literal> in the most significant 16 bits, and <literal>5678</literal> in the
least significant 16 bits. (To avoid confusion, this code
must not be the same as any protocol version number.)
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Int32</term>
<listitem>
<para>
The process ID of the target backend.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term>Byte<replaceable>n</replaceable></term>
<listitem>
<para>
The secret key for