mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-05 19:09:58 +08:00
Document a gotcha that happens on Windows when using libpq's new event
procedure support: it's possible to get confused because exported procedures have two different addresses. Per Andrew Chernow.
This commit is contained in:
parent
772eedb6bb
commit
07c179a82b
@ -1,4 +1,4 @@
|
||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/libpq.sgml,v 1.269 2008/11/13 09:45:24 mha Exp $ -->
|
||||
<!-- $PostgreSQL: pgsql/doc/src/sgml/libpq.sgml,v 1.270 2008/11/14 22:58:51 tgl Exp $ -->
|
||||
|
||||
<chapter id="libpq">
|
||||
<title><application>libpq</application> - C Library</title>
|
||||
@ -5255,6 +5255,19 @@ int eventproc(PGEventId evtId, void *evtInfo, void *passThrough)
|
||||
<structname>PGconn</>. This is because the address of the procedure
|
||||
is used as a lookup key to identify the associated instance data.
|
||||
</para>
|
||||
|
||||
<caution>
|
||||
<para>
|
||||
On Windows, functions can have two different addresses: one visible
|
||||
from outside a DLL and another visible from inside the DLL. One
|
||||
should be careful that only one of these addresses is used with
|
||||
<application>libpq</>'s event-procedure functions, else confusion will
|
||||
result. The simplest rule for writing code that will work is to
|
||||
ensure that event procedures are declared <literal>static</>. If the
|
||||
procedure's address must be available outside its own source file,
|
||||
expose a separate function to return the address.
|
||||
</para>
|
||||
</caution>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
Loading…
Reference in New Issue
Block a user