summaryrefslogtreecommitdiffstats
path: root/doc/src/sgml/html/protocol-message-formats.html
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:19:15 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-04 12:19:15 +0000
commit6eb9c5a5657d1fe77b55cc261450f3538d35a94d (patch)
tree657d8194422a5daccecfd42d654b8a245ef7b4c8 /doc/src/sgml/html/protocol-message-formats.html
parentInitial commit. (diff)
downloadpostgresql-13-upstream.tar.xz
postgresql-13-upstream.zip
Adding upstream version 13.4.upstream/13.4upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'doc/src/sgml/html/protocol-message-formats.html')
-rw-r--r--doc/src/sgml/html/protocol-message-formats.html1380
1 files changed, 1380 insertions, 0 deletions
diff --git a/doc/src/sgml/html/protocol-message-formats.html b/doc/src/sgml/html/protocol-message-formats.html
new file mode 100644
index 0000000..3f9d46f
--- /dev/null
+++ b/doc/src/sgml/html/protocol-message-formats.html
@@ -0,0 +1,1380 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>52.7. Message Formats</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="protocol-message-types.html" title="52.6. Message Data Types" /><link rel="next" href="protocol-error-fields.html" title="52.8. Error and Notice Message Fields" /></head><body id="docContent" class="container-fluid col-10"><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">52.7. Message Formats</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="protocol-message-types.html" title="52.6. Message Data Types">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="protocol.html" title="Chapter 52. Frontend/Backend Protocol">Up</a></td><th width="60%" align="center">Chapter 52. Frontend/Backend Protocol</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 13.4 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="protocol-error-fields.html" title="52.8. Error and Notice Message Fields">Next</a></td></tr></table><hr></hr></div><div class="sect1" id="PROTOCOL-MESSAGE-FORMATS"><div class="titlepage"><div><div><h2 class="title" style="clear: both">52.7. Message Formats</h2></div></div></div><p>
+This section describes the detailed format of each message. Each is marked to
+indicate that it can be sent by a frontend (F), a backend (B), or both
+(F &amp; B).
+Notice that although each message includes a byte count at the beginning,
+the message format is defined so that the message end can be found without
+reference to the byte count. This aids validity checking. (The CopyData
+message is an exception, because it forms part of a data stream; the contents
+of any individual CopyData message cannot be interpretable on their own.)
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+AuthenticationOk (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('R')
+</span></dt><dd><p>
+ Identifies the message as an authentication request.
+</p></dd><dt><span class="term">
+ Int32(8)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32(0)
+</span></dt><dd><p>
+ Specifies that the authentication was successful.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+AuthenticationKerberosV5 (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('R')
+</span></dt><dd><p>
+ Identifies the message as an authentication request.
+</p></dd><dt><span class="term">
+ Int32(8)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32(2)
+</span></dt><dd><p>
+ Specifies that Kerberos V5 authentication is required.
+</p></dd></dl></div><p>
+</p></dd><dt><span class="term">
+AuthenticationCleartextPassword (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('R')
+</span></dt><dd><p>
+ Identifies the message as an authentication request.
+</p></dd><dt><span class="term">
+ Int32(8)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32(3)
+</span></dt><dd><p>
+ Specifies that a clear-text password is required.
+</p></dd></dl></div><p>
+</p></dd><dt><span class="term">
+AuthenticationMD5Password (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('R')
+</span></dt><dd><p>
+ Identifies the message as an authentication request.
+</p></dd><dt><span class="term">
+ Int32(12)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32(5)
+</span></dt><dd><p>
+ Specifies that an MD5-encrypted password is required.
+</p></dd><dt><span class="term">
+ Byte4
+</span></dt><dd><p>
+ The salt to use when encrypting the password.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+AuthenticationSCMCredential (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('R')
+</span></dt><dd><p>
+ Identifies the message as an authentication request.
+</p></dd><dt><span class="term">
+ Int32(8)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32(6)
+</span></dt><dd><p>
+ Specifies that an SCM credentials message is required.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+AuthenticationGSS (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('R')
+</span></dt><dd><p>
+ Identifies the message as an authentication request.
+</p></dd><dt><span class="term">
+ Int32(8)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32(7)
+</span></dt><dd><p>
+ Specifies that GSSAPI authentication is required.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+AuthenticationSSPI (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('R')
+</span></dt><dd><p>
+ Identifies the message as an authentication request.
+</p></dd><dt><span class="term">
+ Int32(8)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32(9)
+</span></dt><dd><p>
+ Specifies that SSPI authentication is required.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+AuthenticationGSSContinue (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('R')
+</span></dt><dd><p>
+ Identifies the message as an authentication request.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32(8)
+</span></dt><dd><p>
+ Specifies that this message contains GSSAPI or SSPI data.
+</p></dd><dt><span class="term">
+ Byte<em class="replaceable"><code>n</code></em>
+</span></dt><dd><p>
+ GSSAPI or SSPI authentication data.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+AuthenticationSASL (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('R')
+</span></dt><dd><p>
+ Identifies the message as an authentication request.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32(10)
+</span></dt><dd><p>
+ Specifies that SASL authentication is required.
+</p></dd></dl></div><p>
+The message body is a list of SASL authentication mechanisms, in the
+server's order of preference. A zero byte is required as terminator after
+the last authentication mechanism name. For each mechanism, there is the
+following:
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ String
+</span></dt><dd><p>
+ Name of a SASL authentication mechanism.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+AuthenticationSASLContinue (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('R')
+</span></dt><dd><p>
+ Identifies the message as an authentication request.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32(11)
+</span></dt><dd><p>
+ Specifies that this message contains a SASL challenge.
+</p></dd><dt><span class="term">
+ Byte<em class="replaceable"><code>n</code></em>
+</span></dt><dd><p>
+ SASL data, specific to the SASL mechanism being used.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+AuthenticationSASLFinal (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('R')
+</span></dt><dd><p>
+ Identifies the message as an authentication request.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32(12)
+</span></dt><dd><p>
+ Specifies that SASL authentication has completed.
+</p></dd><dt><span class="term">
+ Byte<em class="replaceable"><code>n</code></em>
+</span></dt><dd><p>
+ SASL outcome "additional data", specific to the SASL mechanism
+ being used.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+BackendKeyData (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('K')
+</span></dt><dd><p>
+ Identifies the message as cancellation key data.
+ The frontend must save these values if it wishes to be
+ able to issue CancelRequest messages later.
+</p></dd><dt><span class="term">
+ Int32(12)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ The process ID of this backend.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ The secret key of this backend.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+Bind (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('B')
+</span></dt><dd><p>
+ Identifies the message as a Bind command.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The name of the destination portal
+ (an empty string selects the unnamed portal).
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The name of the source prepared statement
+ (an empty string selects the unnamed prepared statement).
+</p></dd><dt><span class="term">
+ Int16
+</span></dt><dd><p>
+ The number of parameter format codes that follow
+ (denoted <em class="replaceable"><code>C</code></em> 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.
+</p></dd><dt><span class="term">
+ Int16[<em class="replaceable"><code>C</code></em>]
+</span></dt><dd><p>
+ The parameter format codes. Each must presently be
+ zero (text) or one (binary).
+</p></dd><dt><span class="term">
+ Int16
+</span></dt><dd><p>
+ The number of parameter values that follow (possibly zero).
+ This must match the number of parameters needed by the query.
+</p></dd></dl></div><p>
+ Next, the following pair of fields appear for each parameter:
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ 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.
+</p></dd><dt><span class="term">
+ Byte<em class="replaceable"><code>n</code></em>
+</span></dt><dd><p>
+ The value of the parameter, in the format indicated by the
+ associated format code.
+ <em class="replaceable"><code>n</code></em> is the above length.
+</p></dd></dl></div><p>
+ After the last parameter, the following fields appear:
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Int16
+</span></dt><dd><p>
+ The number of result-column format codes that follow
+ (denoted <em class="replaceable"><code>R</code></em> 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.
+</p></dd><dt><span class="term">
+ Int16[<em class="replaceable"><code>R</code></em>]
+</span></dt><dd><p>
+ The result-column format codes. Each must presently be
+ zero (text) or one (binary).
+</p></dd></dl></div><p>
+</p></dd><dt><span class="term">
+BindComplete (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('2')
+</span></dt><dd><p>
+ Identifies the message as a Bind-complete indicator.
+</p></dd><dt><span class="term">
+ Int32(4)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+CancelRequest (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Int32(16)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32(80877102)
+</span></dt><dd><p>
+ The cancel request code. The value is chosen to contain
+ <code class="literal">1234</code> in the most significant 16 bits, and <code class="literal">5678</code> in the
+ least significant 16 bits. (To avoid confusion, this code
+ must not be the same as any protocol version number.)
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ The process ID of the target backend.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ The secret key for the target backend.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+Close (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('C')
+</span></dt><dd><p>
+ Identifies the message as a Close command.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Byte1
+</span></dt><dd><p>
+ '<code class="literal">S</code>' to close a prepared statement; or
+ '<code class="literal">P</code>' to close a portal.
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The name of the prepared statement or portal to close
+ (an empty string selects the unnamed prepared statement
+ or portal).
+</p></dd></dl></div><p>
+</p></dd><dt><span class="term">
+CloseComplete (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('3')
+</span></dt><dd><p>
+ Identifies the message as a Close-complete indicator.
+</p></dd><dt><span class="term">
+ Int32(4)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+CommandComplete (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('C')
+</span></dt><dd><p>
+ Identifies the message as a command-completed response.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The command tag. This is usually a single
+ word that identifies which SQL command was completed.
+ </p><p>
+ For an <code class="command">INSERT</code> command, the tag is
+ <code class="literal">INSERT <em class="replaceable"><code>oid</code></em>
+ <em class="replaceable"><code>rows</code></em></code>, where
+ <em class="replaceable"><code>rows</code></em> is the number of rows
+ inserted. <em class="replaceable"><code>oid</code></em> used to be the object ID
+ of the inserted row if <em class="replaceable"><code>rows</code></em> was 1
+ and the target table had OIDs, but OIDs system columns are
+ not supported anymore; therefore <em class="replaceable"><code>oid</code></em>
+ is always 0.
+ </p><p>
+ For a <code class="command">DELETE</code> command, the tag is
+ <code class="literal">DELETE <em class="replaceable"><code>rows</code></em></code> where
+ <em class="replaceable"><code>rows</code></em> is the number of rows deleted.
+ </p><p>
+ For an <code class="command">UPDATE</code> command, the tag is
+ <code class="literal">UPDATE <em class="replaceable"><code>rows</code></em></code> where
+ <em class="replaceable"><code>rows</code></em> is the number of rows updated.
+ </p><p>
+ For a <code class="command">SELECT</code> or <code class="command">CREATE TABLE AS</code>
+ command, the tag is <code class="literal">SELECT <em class="replaceable"><code>rows</code></em></code>
+ where <em class="replaceable"><code>rows</code></em> is the number of rows retrieved.
+ </p><p>
+ For a <code class="command">MOVE</code> command, the tag is
+ <code class="literal">MOVE <em class="replaceable"><code>rows</code></em></code> where
+ <em class="replaceable"><code>rows</code></em> is the number of rows the
+ cursor's position has been changed by.
+ </p><p>
+ For a <code class="command">FETCH</code> command, the tag is
+ <code class="literal">FETCH <em class="replaceable"><code>rows</code></em></code> where
+ <em class="replaceable"><code>rows</code></em> is the number of rows that
+ have been retrieved from the cursor.
+ </p><p>
+ For a <code class="command">COPY</code> command, the tag is
+ <code class="literal">COPY <em class="replaceable"><code>rows</code></em></code> where
+ <em class="replaceable"><code>rows</code></em> is the number of rows copied.
+ (Note: the row count appears only in
+ <span class="productname">PostgreSQL</span> 8.2 and later.)
+ </p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+CopyData (F &amp; B)
+</span></dt><dd><p>
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('d')
+</span></dt><dd><p>
+ Identifies the message as <code class="command">COPY</code> data.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Byte<em class="replaceable"><code>n</code></em>
+</span></dt><dd><p>
+ Data that forms part of a <code class="command">COPY</code> data stream. Messages sent
+ from the backend will always correspond to single data rows,
+ but messages sent by frontends might divide the data stream
+ arbitrarily.
+</p></dd></dl></div><p>
+</p></dd><dt><span class="term">
+CopyDone (F &amp; B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('c')
+</span></dt><dd><p>
+ Identifies the message as a <code class="command">COPY</code>-complete indicator.
+</p></dd><dt><span class="term">
+ Int32(4)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+CopyFail (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('f')
+</span></dt><dd><p>
+ Identifies the message as a <code class="command">COPY</code>-failure indicator.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ An error message to report as the cause of failure.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+CopyInResponse (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('G')
+</span></dt><dd><p>
+ Identifies the message as a Start Copy In response.
+ The frontend must now send copy-in data (if not
+ prepared to do so, send a CopyFail message).
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int8
+</span></dt><dd><p>
+ 0 indicates the overall <code class="command">COPY</code> format is textual (rows
+ separated by newlines, columns separated by separator
+ characters, etc).
+ 1 indicates the overall copy format is binary (similar
+ to DataRow format).
+ See <a class="xref" href="sql-copy.html" title="COPY"><span class="refentrytitle">COPY</span></a>
+ for more information.
+</p></dd><dt><span class="term">
+ Int16
+</span></dt><dd><p>
+ The number of columns in the data to be copied
+ (denoted <em class="replaceable"><code>N</code></em> below).
+</p></dd><dt><span class="term">
+ Int16[<em class="replaceable"><code>N</code></em>]
+</span></dt><dd><p>
+ The format codes to be used for each column.
+ Each must presently be zero (text) or one (binary).
+ All must be zero if the overall copy format is textual.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+CopyOutResponse (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('H')
+</span></dt><dd><p>
+ Identifies the message as a Start Copy Out response.
+ This message will be followed by copy-out data.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int8
+</span></dt><dd><p>
+ 0 indicates the overall <code class="command">COPY</code> format
+ is textual (rows separated by newlines, columns
+ separated by separator characters, etc). 1 indicates
+ the overall copy format is binary (similar to DataRow
+ format). See <a class="xref" href="sql-copy.html" title="COPY"><span class="refentrytitle">COPY</span></a> for more information.
+</p></dd><dt><span class="term">
+ Int16
+</span></dt><dd><p>
+ The number of columns in the data to be copied
+ (denoted <em class="replaceable"><code>N</code></em> below).
+</p></dd><dt><span class="term">
+ Int16[<em class="replaceable"><code>N</code></em>]
+</span></dt><dd><p>
+ The format codes to be used for each column.
+ Each must presently be zero (text) or one (binary).
+ All must be zero if the overall copy format is textual.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+CopyBothResponse (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('W')
+</span></dt><dd><p>
+ Identifies the message as a Start Copy Both response.
+ This message is used only for Streaming Replication.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int8
+</span></dt><dd><p>
+ 0 indicates the overall <code class="command">COPY</code> format
+ is textual (rows separated by newlines, columns
+ separated by separator characters, etc). 1 indicates
+ the overall copy format is binary (similar to DataRow
+ format). See <a class="xref" href="sql-copy.html" title="COPY"><span class="refentrytitle">COPY</span></a> for more information.
+</p></dd><dt><span class="term">
+ Int16
+</span></dt><dd><p>
+ The number of columns in the data to be copied
+ (denoted <em class="replaceable"><code>N</code></em> below).
+</p></dd><dt><span class="term">
+ Int16[<em class="replaceable"><code>N</code></em>]
+</span></dt><dd><p>
+ The format codes to be used for each column.
+ Each must presently be zero (text) or one (binary).
+ All must be zero if the overall copy format is textual.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+DataRow (B)
+</span></dt><dd><p>
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('D')
+</span></dt><dd><p>
+ Identifies the message as a data row.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int16
+</span></dt><dd><p>
+ The number of column values that follow (possibly zero).
+</p></dd></dl></div><p>
+ Next, the following pair of fields appear for each column:
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ The length of the column value, in bytes (this count
+ does not include itself). Can be zero.
+ As a special case, -1 indicates a NULL column value.
+ No value bytes follow in the NULL case.
+</p></dd><dt><span class="term">
+ Byte<em class="replaceable"><code>n</code></em>
+</span></dt><dd><p>
+ The value of the column, in the format indicated by the
+ associated format code.
+ <em class="replaceable"><code>n</code></em> is the above length.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+Describe (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('D')
+</span></dt><dd><p>
+ Identifies the message as a Describe command.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Byte1
+</span></dt><dd><p>
+ '<code class="literal">S</code>' to describe a prepared statement; or
+ '<code class="literal">P</code>' to describe a portal.
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The name of the prepared statement or portal to describe
+ (an empty string selects the unnamed prepared statement
+ or portal).
+</p></dd></dl></div><p>
+</p></dd><dt><span class="term">
+EmptyQueryResponse (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('I')
+</span></dt><dd><p>
+ Identifies the message as a response to an empty query string.
+ (This substitutes for CommandComplete.)
+</p></dd><dt><span class="term">
+ Int32(4)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+ErrorResponse (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('E')
+</span></dt><dd><p>
+ Identifies the message as an error.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd></dl></div><p>
+ The message body consists of one or more identified fields,
+ followed by a zero byte as a terminator. Fields can appear in
+ any order. For each field there is the following:
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1
+</span></dt><dd><p>
+ A code identifying the field type; if zero, this is
+ the message terminator and no string follows.
+ The presently defined field types are listed in
+ <a class="xref" href="protocol-error-fields.html" title="52.8. Error and Notice Message Fields">Section 52.8</a>.
+ Since more field types might be added in future,
+ frontends should silently ignore fields of unrecognized
+ type.
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The field value.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+Execute (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('E')
+</span></dt><dd><p>
+ Identifies the message as an Execute command.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The name of the portal to execute
+ (an empty string selects the unnamed portal).
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Maximum number of rows to return, if portal contains
+ a query that returns rows (ignored otherwise). Zero
+ denotes <span class="quote">“<span class="quote">no limit</span>”</span>.
+</p></dd></dl></div><p>
+</p></dd><dt><span class="term">
+Flush (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('H')
+</span></dt><dd><p>
+ Identifies the message as a Flush command.
+</p></dd><dt><span class="term">
+ Int32(4)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+FunctionCall (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('F')
+</span></dt><dd><p>
+ Identifies the message as a function call.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Specifies the object ID of the function to call.
+</p></dd><dt><span class="term">
+ Int16
+</span></dt><dd><p>
+ The number of argument format codes that follow
+ (denoted <em class="replaceable"><code>C</code></em> 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.
+</p></dd><dt><span class="term">
+ Int16[<em class="replaceable"><code>C</code></em>]
+</span></dt><dd><p>
+ The argument format codes. Each must presently be
+ zero (text) or one (binary).
+</p></dd><dt><span class="term">
+ Int16
+</span></dt><dd><p>
+ Specifies the number of arguments being supplied to the
+ function.
+</p></dd></dl></div><p>
+ Next, the following pair of fields appear for each argument:
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ 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.
+</p></dd><dt><span class="term">
+ Byte<em class="replaceable"><code>n</code></em>
+</span></dt><dd><p>
+ The value of the argument, in the format indicated by the
+ associated format code.
+ <em class="replaceable"><code>n</code></em> is the above length.
+</p></dd></dl></div><p>
+ After the last argument, the following field appears:
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Int16
+</span></dt><dd><p>
+ The format code for the function result. Must presently be
+ zero (text) or one (binary).
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+FunctionCallResponse (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('V')
+</span></dt><dd><p>
+ Identifies the message as a function call result.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ The length of the function result value, in bytes (this count
+ does not include itself). Can be zero.
+ As a special case, -1 indicates a NULL function result.
+ No value bytes follow in the NULL case.
+</p></dd><dt><span class="term">
+ Byte<em class="replaceable"><code>n</code></em>
+</span></dt><dd><p>
+ The value of the function result, in the format indicated by
+ the associated format code.
+ <em class="replaceable"><code>n</code></em> is the above length.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+GSSResponse (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('p')
+</span></dt><dd><p>
+ Identifies the message as a GSSAPI or SSPI response. Note that
+ this is also used for SASL and password response messages.
+ The exact message type can be deduced from the context.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Byte<em class="replaceable"><code>n</code></em>
+</span></dt><dd><p>
+ GSSAPI/SSPI specific message data.
+</p></dd></dl></div><p>
+</p></dd><dt><span class="term">
+NegotiateProtocolVersion (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('v')
+</span></dt><dd><p>
+ Identifies the message as a protocol version negotiation
+ message.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Newest minor protocol version supported by the server
+ for the major protocol version requested by the client.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Number of protocol options not recognized by the server.
+</p></dd></dl></div><p>
+ Then, for protocol option not recognized by the server, there
+ is the following:
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The option name.
+</p></dd></dl></div><p>
+</p></dd><dt><span class="term">
+NoData (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('n')
+</span></dt><dd><p>
+ Identifies the message as a no-data indicator.
+</p></dd><dt><span class="term">
+ Int32(4)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+NoticeResponse (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('N')
+</span></dt><dd><p>
+ Identifies the message as a notice.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd></dl></div><p>
+ The message body consists of one or more identified fields,
+ followed by a zero byte as a terminator. Fields can appear in
+ any order. For each field there is the following:
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1
+</span></dt><dd><p>
+ A code identifying the field type; if zero, this is
+ the message terminator and no string follows.
+ The presently defined field types are listed in
+ <a class="xref" href="protocol-error-fields.html" title="52.8. Error and Notice Message Fields">Section 52.8</a>.
+ Since more field types might be added in future,
+ frontends should silently ignore fields of unrecognized
+ type.
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The field value.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+NotificationResponse (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('A')
+</span></dt><dd><p>
+ Identifies the message as a notification response.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ The process ID of the notifying backend process.
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The name of the channel that the notify has been raised on.
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The <span class="quote">“<span class="quote">payload</span>”</span> string passed from the notifying process.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+ParameterDescription (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('t')
+</span></dt><dd><p>
+ Identifies the message as a parameter description.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int16
+</span></dt><dd><p>
+ The number of parameters used by the statement
+ (can be zero).
+</p></dd></dl></div><p>
+ Then, for each parameter, there is the following:
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Specifies the object ID of the parameter data type.
+</p></dd></dl></div><p>
+</p></dd><dt><span class="term">
+ParameterStatus (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('S')
+</span></dt><dd><p>
+ Identifies the message as a run-time parameter status report.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The name of the run-time parameter being reported.
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The current value of the parameter.
+</p></dd></dl></div><p>
+</p></dd><dt><span class="term">
+Parse (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('P')
+</span></dt><dd><p>
+ Identifies the message as a Parse command.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The name of the destination prepared statement
+ (an empty string selects the unnamed prepared statement).
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The query string to be parsed.
+</p></dd><dt><span class="term">
+ Int16
+</span></dt><dd><p>
+ The number of parameter data types specified
+ (can be zero). Note that this is not an indication of
+ the number of parameters that might appear in the
+ query string, only the number that the frontend wants to
+ prespecify types for.
+</p></dd></dl></div><p>
+ Then, for each parameter, there is the following:
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Specifies the object ID of the parameter data type.
+ Placing a zero here is equivalent to leaving the type
+ unspecified.
+</p></dd></dl></div><p>
+</p></dd><dt><span class="term">
+ParseComplete (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('1')
+</span></dt><dd><p>
+ Identifies the message as a Parse-complete indicator.
+</p></dd><dt><span class="term">
+ Int32(4)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+PasswordMessage (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('p')
+</span></dt><dd><p>
+ Identifies the message as a password response. Note that
+ this is also used for GSSAPI, SSPI and SASL response messages.
+ The exact message type can be deduced from the context.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The password (encrypted, if requested).
+</p></dd></dl></div><p>
+</p></dd><dt><span class="term">
+PortalSuspended (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('s')
+</span></dt><dd><p>
+ Identifies the message as a portal-suspended indicator.
+ Note this only appears if an Execute message's row-count limit
+ was reached.
+</p></dd><dt><span class="term">
+ Int32(4)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+Query (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('Q')
+</span></dt><dd><p>
+ Identifies the message as a simple query.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The query string itself.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+ReadyForQuery (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('Z')
+</span></dt><dd><p>
+ Identifies the message type. ReadyForQuery is sent
+ whenever the backend is ready for a new query cycle.
+</p></dd><dt><span class="term">
+ Int32(5)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Byte1
+</span></dt><dd><p>
+ Current backend transaction status indicator.
+ Possible values are '<code class="literal">I</code>' if idle (not in
+ a transaction block); '<code class="literal">T</code>' if in a transaction
+ block; or '<code class="literal">E</code>' if in a failed transaction
+ block (queries will be rejected until block is ended).
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+RowDescription (B)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('T')
+</span></dt><dd><p>
+ Identifies the message as a row description.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int16
+</span></dt><dd><p>
+ Specifies the number of fields in a row (can be zero).
+</p></dd></dl></div><p>
+ Then, for each field, there is the following:
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The field name.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ If the field can be identified as a column of a specific
+ table, the object ID of the table; otherwise zero.
+</p></dd><dt><span class="term">
+ Int16
+</span></dt><dd><p>
+ If the field can be identified as a column of a specific
+ table, the attribute number of the column; otherwise zero.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ The object ID of the field's data type.
+</p></dd><dt><span class="term">
+ Int16
+</span></dt><dd><p>
+ The data type size (see <code class="varname">pg_type.typlen</code>).
+ Note that negative values denote variable-width types.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ The type modifier (see <code class="varname">pg_attribute.atttypmod</code>).
+ The meaning of the modifier is type-specific.
+</p></dd><dt><span class="term">
+ Int16
+</span></dt><dd><p>
+ 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.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+SASLInitialResponse (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('p')
+</span></dt><dd><p>
+ Identifies the message as an initial SASL response. Note that
+ this is also used for GSSAPI, SSPI and password response messages.
+ The exact message type is deduced from the context.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ Name of the SASL authentication mechanism that the client
+ selected.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of SASL mechanism specific "Initial Client Response" that
+ follows, or -1 if there is no Initial Response.
+</p></dd><dt><span class="term">
+ Byte<em class="replaceable"><code>n</code></em>
+</span></dt><dd><p>
+ SASL mechanism specific "Initial Response".
+</p></dd></dl></div><p>
+</p></dd><dt><span class="term">
+SASLResponse (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('p')
+</span></dt><dd><p>
+ Identifies the message as a SASL response. Note that
+ this is also used for GSSAPI, SSPI and password response messages.
+ The exact message type can be deduced from the context.
+</p></dd><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Byte<em class="replaceable"><code>n</code></em>
+</span></dt><dd><p>
+ SASL mechanism specific message data.
+</p></dd></dl></div><p>
+</p></dd><dt><span class="term">
+SSLRequest (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Int32(8)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32(80877103)
+</span></dt><dd><p>
+ The <acronym class="acronym">SSL</acronym> request code. The value is chosen to contain
+ <code class="literal">1234</code> in the most significant 16 bits, and <code class="literal">5679</code> in the
+ least significant 16 bits. (To avoid confusion, this code
+ must not be the same as any protocol version number.)
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+GSSENCRequest (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Int32(8)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32(80877104)
+</span></dt><dd><p>
+ The <acronym class="acronym">GSSAPI</acronym> Encryption request code. The value is chosen to contain
+ <code class="literal">1234</code> in the most significant 16 bits, and <code class="literal">5680</code> in the
+ least significant 16 bits. (To avoid confusion, this code
+ must not be the same as any protocol version number.)
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+StartupMessage (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Int32
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd><dt><span class="term">
+ Int32(196608)
+</span></dt><dd><p>
+ The protocol version number. The most significant 16 bits are
+ the major version number (3 for the protocol described here).
+ The least significant 16 bits are the minor version number
+ (0 for the protocol described here).
+</p></dd></dl></div><p>
+ The protocol version number is followed by one or more pairs of
+ parameter name and value strings. A zero byte is required as a
+ terminator after the last name/value pair.
+ Parameters can appear in any
+ order. <code class="literal">user</code> is required, others are optional.
+ Each parameter is specified as:
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The parameter name. Currently recognized names are:
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ <code class="literal">user</code>
+</span></dt><dd><p>
+ The database user name to connect as. Required;
+ there is no default.
+</p></dd><dt><span class="term">
+ <code class="literal">database</code>
+</span></dt><dd><p>
+ The database to connect to. Defaults to the user name.
+</p></dd><dt><span class="term">
+ <code class="literal">options</code>
+</span></dt><dd><p>
+ Command-line arguments for the backend. (This is
+ deprecated in favor of setting individual run-time
+ parameters.) Spaces within this string are
+ considered to separate arguments, unless escaped with
+ a backslash (<code class="literal">\</code>); write <code class="literal">\\</code> to
+ represent a literal backslash.
+</p></dd><dt><span class="term">
+ <code class="literal">replication</code>
+</span></dt><dd><p>
+ Used to connect in streaming replication mode, where
+ a small set of replication commands can be issued
+ instead of SQL statements. Value can be
+ <code class="literal">true</code>, <code class="literal">false</code>, or
+ <code class="literal">database</code>, and the default is
+ <code class="literal">false</code>. See
+ <a class="xref" href="protocol-replication.html" title="52.4. Streaming Replication Protocol">Section 52.4</a> for details.
+</p></dd></dl></div><p>
+
+ In addition to the above, other parameters may be listed.
+ Parameter names beginning with <code class="literal">_pq_.</code> are
+ reserved for use as protocol extensions, while others are
+ treated as run-time parameters to be set at backend start
+ time. Such settings will be applied during backend start
+ (after parsing the command-line arguments if any) and will
+ act as session defaults.
+</p></dd><dt><span class="term">
+ String
+</span></dt><dd><p>
+ The parameter value.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+Sync (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('S')
+</span></dt><dd><p>
+ Identifies the message as a Sync command.
+</p></dd><dt><span class="term">
+ Int32(4)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd></dl></div><p>
+
+</p></dd><dt><span class="term">
+Terminate (F)
+</span></dt><dd><p>
+
+</p><div class="variablelist"><dl class="variablelist"><dt><span class="term">
+ Byte1('X')
+</span></dt><dd><p>
+ Identifies the message as a termination.
+</p></dd><dt><span class="term">
+ Int32(4)
+</span></dt><dd><p>
+ Length of message contents in bytes, including self.
+</p></dd></dl></div><p>
+
+</p></dd></dl></div></div><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="protocol-message-types.html" title="52.6. Message Data Types">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="protocol.html" title="Chapter 52. Frontend/Backend Protocol">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="protocol-error-fields.html" title="52.8. Error and Notice Message Fields">Next</a></td></tr><tr><td width="40%" align="left" valign="top">52.6. Message Data Types </td><td width="20%" align="center"><a accesskey="h" href="index.html" title="PostgreSQL 13.4 Documentation">Home</a></td><td width="40%" align="right" valign="top"> 52.8. Error and Notice Message Fields</td></tr></table></div></body></html> \ No newline at end of file