Add function to return the thread safety status of libpq
This is half of an item in TODO list. I patch this because now pgbench is
threaded in Win32, so it is better to check thread safety of libpq.dll.
Patch ecpg could be done in a similar way, but I am not sure how we will
use this function there ...
Regards,
Qingqing
---
Index: fe-connect.c
===================================================================
RCS file: /projects/cvsroot/pgsql/src/interfaces/libpq/fe-connect.c,v
retrieving revision 1.324
diff -c -r1.324 fe-connect.c
*** fe-connect.c 22 Nov 2005 18:17:32 -0000 1.324
--- fe-connect.c 3 Dec 2005 05:15:29 -0000
***************
*** 2860,2865 ****
--- 2860,2875 ----
return PG_PROTOCOL_MAJOR(conn->pversion);
}
+ bool
+ PQthreadSafe(void)
+ {
+ #ifdef ENABLE_THREAD_SAFETY
+ return true;
+ #else
+ return false;
+ #endif
+ }
+
int
PQserverVersion(const PGconn *conn)
{
Index: libpq-fe.h
===================================================================
RCS file: /projects/cvsroot/pgsql/src/interfaces/libpq/libpq-fe.h,v
retrieving revision 1.122
diff -c -r1.122 libpq-fe.h
*** libpq-fe.h 23 Nov 2005 04:23:28 -0000 1.122
--- libpq-fe.h 3 Dec 2005 05:15:29 -0000
***************
*** 264,269 ****
--- 264,270 ----
extern const char *PQparameterStatus(const PGconn *conn,
const char *paramName);
extern int PQprotocolVersion(const PGconn *conn);
+ extern bool PQthreadSafe(void);
extern int PQserverVersion(const PGconn *conn);
extern char *PQerrorMessage(const PGconn *conn);
extern int PQsocket(const PGconn *conn);
Qingqing Zhou <zhouqq@cs.toronto.edu> writes:
This is half of an item in TODO list. I patch this because now pgbench is
threaded in Win32, so it is better to check thread safety of libpq.dll.
ISTM this was proposed once before, and rejected on the grounds that
no one could present a convincing use case. Exactly where is there
an application that will support both threaded and nonthreaded libpq
*at run time*? Is there a point in checking the thread-safety of
libpq when you can't check the thread-safety of libc?
BTW, an acceptable patch that changes libpq's API would require
documentation and exports.txt updates...
regards, tom lane