Home Explore Blog CI



postgresql

54th chunk of `doc/src/sgml/protocol.sgml`
6dd156c53777d97ce78b73445425a388183275b613ab441a0000000100000fc4
 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>

Title: Message Formats for Bind and Parameter Values
Summary
This section describes the formats of Bind messages, which include the destination portal and source prepared statement names, parameter format codes, and parameter values, as well as the structure of the parameter values themselves, including their lengths and NULL indicators.