diff options
author | Bruce Momjian <bruce@momjian.us> | 2004-03-15 16:27:43 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2004-03-15 16:27:43 +0000 |
commit | 8526f537cc24301f28015020862f02a6a8318196 (patch) | |
tree | 2087109b9e0aafd2025b8aaed7f2d2f034273e44 /src/interfaces/ecpg/ecpglib/connect.c | |
parent | bda6e04ba070a84a124de0e6eeda52534cb4ed4c (diff) | |
download | postgresql-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.c | 20 |
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 |