</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>
 
              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
 
 
 /* === 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);