summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2006-05-23 22:13:19 +0000
committerBruce Momjian <bruce@momjian.us>2006-05-23 22:13:19 +0000
commitc1d4551ae1d63cfbff5db7b5fdec94f0357dff7b (patch)
tree801281906612d1114eb992d19efa48547a497011 /src
parent7f52e0c50e4d3e091fb3db2432a86249029af3d4 (diff)
downloadpostgresql-c1d4551ae1d63cfbff5db7b5fdec94f0357dff7b.tar.gz
Add PQisthreadsafe() to libpq, to allow library applications to query
the thread-safety status of the library.
Diffstat (limited to 'src')
-rw-r--r--src/interfaces/libpq/exports.txt4
-rw-r--r--src/interfaces/libpq/fe-exec.c14
-rw-r--r--src/interfaces/libpq/libpq-fe.h3
3 files changed, 18 insertions, 3 deletions
diff --git a/src/interfaces/libpq/exports.txt b/src/interfaces/libpq/exports.txt
index 7fcd43b01a..b50d062c0b 100644
--- a/src/interfaces/libpq/exports.txt
+++ b/src/interfaces/libpq/exports.txt
@@ -1,4 +1,4 @@
-# $PostgreSQL: pgsql/src/interfaces/libpq/exports.txt,v 1.8 2006/05/21 20:19:23 tgl Exp $
+# $PostgreSQL: pgsql/src/interfaces/libpq/exports.txt,v 1.9 2006/05/23 22:13:19 momjian Exp $
# Functions to be exported by libpq DLLs
PQconnectdb 1
PQsetdbLogin 2
@@ -128,3 +128,5 @@ PQregisterThreadLock 125
PQescapeStringConn 126
PQescapeByteaConn 127
PQencryptPassword 128
+PQisthreadsafe 129
+
diff --git a/src/interfaces/libpq/fe-exec.c b/src/interfaces/libpq/fe-exec.c
index 3139398946..7b999c8533 100644
--- a/src/interfaces/libpq/fe-exec.c
+++ b/src/interfaces/libpq/fe-exec.c
@@ -8,7 +8,7 @@
*
*
* IDENTIFICATION
- * $PostgreSQL: pgsql/src/interfaces/libpq/fe-exec.c,v 1.183 2006/05/21 20:19:23 tgl Exp $
+ * $PostgreSQL: pgsql/src/interfaces/libpq/fe-exec.c,v 1.184 2006/05/23 22:13:19 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -2343,6 +2343,18 @@ PQisnonblocking(const PGconn *conn)
return pqIsnonblocking(conn);
}
+/* libpq is thread-safe? */
+int
+PQisthreadsafe(void)
+{
+#ifdef ENABLE_THREAD_SAFETY
+ return true;
+#else
+ return false;
+#endif
+}
+
+
/* try to force data out, really only useful for non-blocking users */
int
PQflush(PGconn *conn)
diff --git a/src/interfaces/libpq/libpq-fe.h b/src/interfaces/libpq/libpq-fe.h
index c309448bac..3b824efe85 100644
--- a/src/interfaces/libpq/libpq-fe.h
+++ b/src/interfaces/libpq/libpq-fe.h
@@ -7,7 +7,7 @@
* Portions Copyright (c) 1996-2006, PostgreSQL Global Development Group
* Portions Copyright (c) 1994, Regents of the University of California
*
- * $PostgreSQL: pgsql/src/interfaces/libpq/libpq-fe.h,v 1.128 2006/05/21 20:19:23 tgl Exp $
+ * $PostgreSQL: pgsql/src/interfaces/libpq/libpq-fe.h,v 1.129 2006/05/23 22:13:19 momjian Exp $
*
*-------------------------------------------------------------------------
*/
@@ -366,6 +366,7 @@ extern int PQendcopy(PGconn *conn);
/* Set blocking/nonblocking connection to the backend */
extern int PQsetnonblocking(PGconn *conn, int arg);
extern int PQisnonblocking(const PGconn *conn);
+extern int PQisthreadsafe(void);
/* Force the write buffer to be written (or at least try) */
extern int PQflush(PGconn *conn);