Add function to return the thread safety status of libpq

Started by Qingqing Zhouover 20 years ago3 messagespatches
Jump to latest
#1Qingqing Zhou
zhouqq@cs.toronto.edu

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);
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Qingqing Zhou (#1)
Re: Add function to return the thread safety status of libpq

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

#3Qingqing Zhou
zhouqq@cs.toronto.edu
In reply to: Qingqing Zhou (#1)
Re: Add function to return the thread safety status of libpq

"Tom Lane" <tgl@sss.pgh.pa.us> wrote

Is there a point in checking the thread-safety of
libpq when you can't check the thread-safety of libc?

Exactly :-(

Regards,
Qingqing