aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/ecpglib/connect.c
diff options
context:
space:
mode:
authorBruce Momjian <bruce@momjian.us>2004-03-15 16:27:43 +0000
committerBruce Momjian <bruce@momjian.us>2004-03-15 16:27:43 +0000
commit8526f537cc24301f28015020862f02a6a8318196 (patch)
tree2087109b9e0aafd2025b8aaed7f2d2f034273e44 /src/interfaces/ecpg/ecpglib/connect.c
parentbda6e04ba070a84a124de0e6eeda52534cb4ed4c (diff)
downloadpostgresql-8526f537cc24301f28015020862f02a6a8318196.tar.gz
postgresql-8526f537cc24301f28015020862f02a6a8318196.zip
The "cvs add" of test_thread_implicit.pgc seems to have been missed,
i've attached this again. Additionally I include a small patch to remove mutex locking when a DEFAULT/NULL connection is being retrieved. This is consistent with libpq. Lee Kindness
Diffstat (limited to 'src/interfaces/ecpg/ecpglib/connect.c')
-rw-r--r--src/interfaces/ecpg/ecpglib/connect.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/interfaces/ecpg/ecpglib/connect.c b/src/interfaces/ecpg/ecpglib/connect.c
index a4a02c39141..82504723d12 100644
--- a/src/interfaces/ecpg/ecpglib/connect.c
+++ b/src/interfaces/ecpg/ecpglib/connect.c
@@ -1,4 +1,4 @@
-/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/connect.c,v 1.20 2004/03/14 12:16:29 meskes Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/connect.c,v 1.21 2004/03/15 16:27:43 momjian Exp $ */
#define POSTGRES_ECPG_INTERNAL
#include "postgres_fe.h"
@@ -62,18 +62,28 @@ ECPGget_connection(const char *connection_name)
{
struct connection *ret = NULL;
+ if ((connection_name == NULL) || (strcmp(connection_name, "CURRENT") == 0))
+ {
#ifdef ENABLE_THREAD_SAFETY
- pthread_mutex_lock(&connections_mutex);
+ ret = pthread_getspecific(actual_connection_key);
+#else
+ ret = actual_connection;
+#endif
+ }
+ else
+ {
+#ifdef ENABLE_THREAD_SAFETY
+ pthread_mutex_lock(&connections_mutex);
#endif
- ret = ecpg_get_connection_nr(connection_name);
+ ret = ecpg_get_connection_nr(connection_name);
#ifdef ENABLE_THREAD_SAFETY
- pthread_mutex_unlock(&connections_mutex);
+ pthread_mutex_unlock(&connections_mutex);
#endif
+ }
return (ret);
-
}
static void