linkend="libpq-PQconnectStartParams"/>, <function>PQconnectStart</function>
and <function>PQconnectPoll</function> with regards to other status codes that
might be returned.
</para>
</listitem>
</varlistentry>
<varlistentry id="libpq-PQtransactionStatus">
<term><function>PQtransactionStatus</function><indexterm><primary>PQtransactionStatus</primary></indexterm></term>
<listitem>
<para>
Returns the current in-transaction status of the server.
<synopsis>
PGTransactionStatusType PQtransactionStatus(const PGconn *conn);
</synopsis>
The status can be <literal>PQTRANS_IDLE</literal> (currently idle),
<literal>PQTRANS_ACTIVE</literal> (a command is in progress),
<literal>PQTRANS_INTRANS</literal> (idle, in a valid transaction block),
or <literal>PQTRANS_INERROR</literal> (idle, in a failed transaction block).
<literal>PQTRANS_UNKNOWN</literal> is reported if the connection is bad.
<literal>PQTRANS_ACTIVE</literal> is reported only when a query
has been sent to the server and not yet completed.
</para>
</listitem>
</varlistentry>
<varlistentry id="libpq-PQparameterStatus">
<term><function>PQparameterStatus</function><indexterm><primary>PQparameterStatus</primary></indexterm></term>
<listitem>
<para>
Looks up a current parameter setting of the server.
<synopsis>
const char *PQparameterStatus(const PGconn *conn, const char *paramName);
</synopsis>
Certain parameter values are reported by the server automatically at
connection startup or whenever their values change.
<xref linkend="libpq-PQparameterStatus"/> can be used to interrogate these settings.
It returns the current value of a parameter if known, or <symbol>NULL</symbol>
if the parameter is not known.
</para>
<para>
Parameters reported as of the current release include:
<simplelist type="vert" columns="2">
<member><varname>application_name</varname></member>
<member><varname>client_encoding</varname></member>
<member><varname>DateStyle</varname></member>
<member><varname>default_transaction_read_only</varname></member>
<member><varname>in_hot_standby</varname></member>
<member><varname>integer_datetimes</varname></member>
<member><varname>IntervalStyle</varname></member>
<member><varname>is_superuser</varname></member>
<member><varname>scram_iterations</varname></member>
<member><varname>search_path</varname></member>
<member><varname>server_encoding</varname></member>
<member><varname>server_version</varname></member>
<member><varname>session_authorization</varname></member>
<member><varname>standard_conforming_strings</varname></member>
<member><varname>TimeZone</varname></member>
</simplelist>
(<varname>default_transaction_read_only</varname> and
<varname>in_hot_standby</varname> were not reported by releases before
14; <varname>scram_iterations</varname> was not reported by releases
before 16; <varname>search_path</varname> was not reported by releases
before 18.)
Note that
<varname>server_version</varname>,
<varname>server_encoding</varname> and
<varname>integer_datetimes</varname>
cannot change after startup.
</para>
<para>
If no value for <varname>standard_conforming_strings</varname> is reported,
applications can assume it is <literal>off</literal>, that is, backslashes
are treated as escapes in string literals. Also, the presence of
this parameter can be taken as an indication that the escape string
syntax (<literal>E'...'</literal>) is accepted.
</para>
<para>
Although the returned pointer is declared <literal>const</literal>, it in fact
points to mutable storage associated with the <literal>PGconn</literal>