Commit de9a4c27 authored by Magnus Hagander's avatar Magnus Hagander

Add PQlibVersion() function to libpq

This function is like the PQserverVersion() function except
it returns the version of libpq, making it possible for a client
program or driver to determine which version of libpq is in
use at runtime, and not just at link time.

Suggested by Harald Armin Massa and several others.
parent 32ba2b51
......@@ -5359,6 +5359,50 @@ void *PQresultAlloc(PGresult *res, size_t nBytes);
</listitem>
</varlistentry>
<varlistentry id="libpq-pqlibversion">
<term>
<function>PQlibVersion</function>
<indexterm>
<primary>PQlibVersion</primary>
<seealso>PQserverVersion</seealso>
</indexterm>
</term>
<listitem>
<para>
Return the version of <productname>libpq</> that is being used.
<synopsis>
int PQlibVersion(void);
</synopsis>
</para>
<para>
The result of this function can be used to determine, at
runtime, if specific functionality is available in the currently
loaded version of libpq. The function can be used, for example,
to determine which connection options are available for
<function>PQconnectdb</> or if the <literal>hex</> <type>bytea</>
output added in PostgreSQL 9.0 is supported.
</para>
<para>
The number is formed by converting the major, minor, and revision
numbers into two-decimal-digit numbers and appending them together.
For example, version 9.1 will be returned as 90100, and version
9.1.2 will be returned as 90102 (leading zeroes are not shown).
</para>
<note>
<para>
This function appeared in <productname>PostgreSQL</> version 9.1, so
it cannot be used to detect required functionality in earlier
versions, since linking to it will create a link dependency
on version 9.1.
</para>
</note>
</listitem>
</varlistentry>
</variablelist>
</sect1>
......
......@@ -159,3 +159,4 @@ PQconnectdbParams 156
PQconnectStartParams 157
PQping 158
PQpingParams 159
PQlibVersion 160
......@@ -66,6 +66,14 @@ static int pqSocketCheck(PGconn *conn, int forRead, int forWrite,
time_t end_time);
static int pqSocketPoll(int sock, int forRead, int forWrite, time_t end_time);
/*
* PQlibVersion: return the libpq version number
*/
int
PQlibVersion(void)
{
return PG_VERSION_NUM;
}
/*
* fputnbytes: print exactly N bytes to a file
......
......@@ -547,6 +547,9 @@ extern int lo_export(PGconn *conn, Oid lobjId, const char *filename);
/* === in fe-misc.c === */
/* Get the version of the libpq library in use */
extern int PQlibVersion(void);
/* Determine length of multibyte encoded char at *s */
extern int PQmblen(const char *s, int encoding);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment