@ -3547,8 +3547,9 @@ ExecStatusType PQresultStatus(const PGresult *res);
<listitem>
<listitem>
<para>
<para>
The <structname>PGresult</structname> represents a
The <structname>PGresult</structname> represents a
synchronization point in pipeline mode, requested by
synchronization point in pipeline mode, requested by either
<xref linkend="libpq-PQpipelineSync"/>.
<xref linkend="libpq-PQpipelineSync"/> or
<xref linkend="libpq-PQsendPipelineSync"/>.
This status occurs only when pipeline mode has been selected.
This status occurs only when pipeline mode has been selected.
</para>
</para>
</listitem>
</listitem>
@ -5122,7 +5123,8 @@ int PQsendClosePortal(PGconn *conn, const char *portalName);
<xref linkend="libpq-PQsendDescribePrepared"/>,
<xref linkend="libpq-PQsendDescribePrepared"/>,
<xref linkend="libpq-PQsendDescribePortal"/>,
<xref linkend="libpq-PQsendDescribePortal"/>,
<xref linkend="libpq-PQsendClosePrepared"/>,
<xref linkend="libpq-PQsendClosePrepared"/>,
<xref linkend="libpq-PQsendClosePortal"/>, or
<xref linkend="libpq-PQsendClosePortal"/>,
<xref linkend="libpq-PQsendPipelineSync"/>, or
<xref linkend="libpq-PQpipelineSync"/>
<xref linkend="libpq-PQpipelineSync"/>
call, and returns it.
call, and returns it.
A null pointer is returned when the command is complete and there
A null pointer is returned when the command is complete and there
@ -5507,8 +5509,9 @@ int PQflush(PGconn *conn);
client sends them. The server will begin executing the commands in the
client sends them. The server will begin executing the commands in the
pipeline immediately, not waiting for the end of the pipeline.
pipeline immediately, not waiting for the end of the pipeline.
Note that results are buffered on the server side; the server flushes
Note that results are buffered on the server side; the server flushes
that buffer when a synchronization point is established with
that buffer when a synchronization point is established with either
<function>PQpipelineSync</function>, or when
<function>PQpipelineSync</function> or
<function>PQsendPipelineSync</function>, or when
<function>PQsendFlushRequest</function> is called.
<function>PQsendFlushRequest</function> is called.
If any statement encounters an error, the server aborts the current
If any statement encounters an error, the server aborts the current
transaction and does not execute any subsequent command in the queue
transaction and does not execute any subsequent command in the queue
@ -5565,7 +5568,8 @@ int PQflush(PGconn *conn);
<type>PGresult</type> types <literal>PGRES_PIPELINE_SYNC</literal>
<type>PGresult</type> types <literal>PGRES_PIPELINE_SYNC</literal>
and <literal>PGRES_PIPELINE_ABORTED</literal>.
and <literal>PGRES_PIPELINE_ABORTED</literal>.
<literal>PGRES_PIPELINE_SYNC</literal> is reported exactly once for each
<literal>PGRES_PIPELINE_SYNC</literal> is reported exactly once for each
<function>PQpipelineSync</function> at the corresponding point
<function>PQpipelineSync</function> or
<function>PQsendPipelineSync</function> at the corresponding point
in the pipeline.
in the pipeline.
<literal>PGRES_PIPELINE_ABORTED</literal> is emitted in place of a normal
<literal>PGRES_PIPELINE_ABORTED</literal> is emitted in place of a normal
query result for the first error and all subsequent results
query result for the first error and all subsequent results
@ -5603,7 +5607,8 @@ int PQflush(PGconn *conn);
<function>PQresultStatus</function> will report a
<function>PQresultStatus</function> will report a
<literal>PGRES_PIPELINE_ABORTED</literal> result for each remaining queued
<literal>PGRES_PIPELINE_ABORTED</literal> result for each remaining queued
operation in an aborted pipeline. The result for
operation in an aborted pipeline. The result for
<function>PQpipelineSync</function> is reported as
<function>PQpipelineSync</function> or
<function>PQsendPipelineSync</function> is reported as
<literal>PGRES_PIPELINE_SYNC</literal> to signal the end of the aborted pipeline
<literal>PGRES_PIPELINE_SYNC</literal> to signal the end of the aborted pipeline
and resumption of normal result processing.
and resumption of normal result processing.
</para>
</para>
@ -5810,6 +5815,32 @@ int PQpipelineSync(PGconn *conn);
</listitem>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry id="libpq-PQsendPipelineSync">
<term><function>PQsendPipelineSync</function><indexterm><primary>PQsendPipelineSync</primary></indexterm></term>
<listitem>
<para>
Marks a synchronization point in a pipeline by sending a
<link linkend="protocol-flow-ext-query">sync message</link>
without flushing the send buffer. This serves as
the delimiter of an implicit transaction and an error recovery
point; see <xref linkend="libpq-pipeline-errors"/>.
<synopsis>
int PQsendPipelineSync(PGconn *conn);
</synopsis>
</para>
<para>
Returns 1 for success. Returns 0 if the connection is not in
pipeline mode or sending a
<link linkend="protocol-flow-ext-query">sync message</link>
failed.
Note that the message is not itself flushed to the server automatically;
use <function>PQflush</function> if necessary.
</para>
</listitem>
</varlistentry>
<varlistentry id="libpq-PQsendFlushRequest">
<varlistentry id="libpq-PQsendFlushRequest">
<term><function>PQsendFlushRequest</function><indexterm><primary>PQsendFlushRequest</primary></indexterm></term>
<term><function>PQsendFlushRequest</function><indexterm><primary>PQsendFlushRequest</primary></indexterm></term>