linkend="libpq-PQerrorMessage"/> (on the connection) will return
the same string as <xref linkend="libpq-PQresultErrorMessage"/> (on
the result). However, a <structname>PGresult</structname> will
retain its error message until destroyed, whereas the connection's
error message will change when subsequent operations are done.
Use <xref linkend="libpq-PQresultErrorMessage"/> when you want to
know the status associated with a particular
<structname>PGresult</structname>; use
<xref linkend="libpq-PQerrorMessage"/> when you want to know the
status from the latest operation on the connection.
</para>
</listitem>
</varlistentry>
<varlistentry id="libpq-PQresultVerboseErrorMessage">
<term><function>PQresultVerboseErrorMessage</function><indexterm><primary>PQresultVerboseErrorMessage</primary></indexterm></term>
<listitem>
<para>
Returns a reformatted version of the error message associated with
a <structname>PGresult</structname> object.
<synopsis>
char *PQresultVerboseErrorMessage(const PGresult *res,
PGVerbosity verbosity,
PGContextVisibility show_context);
</synopsis>
In some situations a client might wish to obtain a more detailed
version of a previously-reported error.
<xref linkend="libpq-PQresultVerboseErrorMessage"/> addresses this need
by computing the message that would have been produced
by <xref linkend="libpq-PQresultErrorMessage"/> if the specified
verbosity settings had been in effect for the connection when the
given <structname>PGresult</structname> was generated. If
the <structname>PGresult</structname> is not an error result,
<quote>PGresult is not an error result</quote> is reported instead.
The returned string includes a trailing newline.
</para>
<para>
Unlike most other functions for extracting data from
a <structname>PGresult</structname>, the result of this function is a freshly
allocated string. The caller must free it
using <function>PQfreemem()</function> when the string is no longer needed.
</para>
<para>
A NULL return is possible if there is insufficient memory.
</para>
</listitem>
</varlistentry>
<varlistentry id="libpq-PQresultErrorField">
<term><function>PQresultErrorField</function><indexterm><primary>PQresultErrorField</primary></indexterm></term>
<listitem>
<para>
Returns an individual field of an error report.
<synopsis>
char *PQresultErrorField(const PGresult *res, int fieldcode);
</synopsis>
<parameter>fieldcode</parameter> is an error field identifier; see the symbols
listed below. <symbol>NULL</symbol> is returned if the
<structname>PGresult</structname> is not an error or warning result,
or does not include the specified field. Field values will normally
not include a trailing newline. The caller should not free the
result directly. It will be freed when the
associated <structname>PGresult</structname> handle is passed to
<xref linkend="libpq-PQclear"/>.
</para>
<para>
The following field codes are available:
<variablelist>
<varlistentry id="libpq-pg-diag-severity">
<term><symbol>PG_DIAG_SEVERITY</symbol></term>
<listitem>
<para>
The severity; the field contents are <literal>ERROR</literal>,
<literal>FATAL</literal>, or <literal>PANIC</literal> (in an error message),
or <literal>WARNING</literal>, <literal>NOTICE</literal>, <literal>DEBUG</literal>,
<literal>INFO</literal>, or <literal>LOG</literal> (in a notice message), or
a localized translation of one of these. Always present.
</para>