On Thu, Dec 16, 2010 at 17:13, Tom Lane <t...@sss.pgh.pa.us> wrote: > Magnus Hagander <mag...@hagander.net> writes: >> On Thu, Dec 16, 2010 at 17:07, Tom Lane <t...@sss.pgh.pa.us> wrote: >>> because if you're trying to link against an older libpq, the link will >>> fail before you ever get to execute. So let's have a less implausible >>> use-case please. > >> Look back at the very start of the thread. > > OK, but let's document those examples instead.
Something like this better? -- Magnus Hagander Me: http://www.hagander.net/ Work: http://www.redpill-linpro.com/
diff --git a/doc/src/sgml/libpq.sgml b/doc/src/sgml/libpq.sgml index c502439..a776df4 100644 --- a/doc/src/sgml/libpq.sgml +++ b/doc/src/sgml/libpq.sgml @@ -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 value of this function can be used to determine, at + runtime, if a specific functionality is available in the currently + loaded version of libpq. Examples of this include whether specific + connection options are available for <function>PQconnectdb</> and + the new <type>bytea</> encoding in PostgreSQL 9.0 that requires + libpq version 9.0 or later to work. + </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 load time dependency + on version 9.1. + </para> + </note> + </listitem> + </varlistentry> + </variablelist> </sect1> diff --git a/src/interfaces/libpq/exports.txt b/src/interfaces/libpq/exports.txt index a6c73af..1af8df6 100644 --- a/src/interfaces/libpq/exports.txt +++ b/src/interfaces/libpq/exports.txt @@ -159,3 +159,4 @@ PQconnectdbParams 156 PQconnectStartParams 157 PQping 158 PQpingParams 159 +PQlibVersion 160 diff --git a/src/interfaces/libpq/fe-misc.c b/src/interfaces/libpq/fe-misc.c index 24ab7cf..999f60b 100644 --- a/src/interfaces/libpq/fe-misc.c +++ b/src/interfaces/libpq/fe-misc.c @@ -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 diff --git a/src/interfaces/libpq/libpq-fe.h b/src/interfaces/libpq/libpq-fe.h index 271afed..6075ea8 100644 --- a/src/interfaces/libpq/libpq-fe.h +++ b/src/interfaces/libpq/libpq-fe.h @@ -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);
-- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers