Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
P
Postgres FD Implementation
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Abuhujair Javed
Postgres FD Implementation
Commits
9dc2e6de
Commit
9dc2e6de
authored
Apr 14, 2005
by
Michael Meskes
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added patch by Philip Yarra <philip.yarra@internode.on.net> for a bug in thread support.
parent
7c13781e
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
29 additions
and
7 deletions
+29
-7
src/interfaces/ecpg/ChangeLog
src/interfaces/ecpg/ChangeLog
+5
-0
src/interfaces/ecpg/ecpglib/connect.c
src/interfaces/ecpg/ecpglib/connect.c
+24
-7
No files found.
src/interfaces/ecpg/ChangeLog
View file @
9dc2e6de
...
...
@@ -1918,6 +1918,11 @@ Fri Mar 18 10:54:47 CET 2005
- Added patch by Christof Petig <christof@petig-baender.de> to work
around gcc bug on powerpc and amd64.
Thu Apr 14 11:59:47 CEST 2005
- Added patch by Philip Yarra <philip.yarra@internode.on.net> for a
bug in thread support.
- Set ecpg library version to 5.1.
- Set ecpg version to 4.1.1.
src/interfaces/ecpg/ecpglib/connect.c
View file @
9dc2e6de
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/connect.c,v 1.2
4 2004/12/30 09:36:3
7 meskes Exp $ */
/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/connect.c,v 1.2
5 2005/04/14 10:08:5
7 meskes Exp $ */
#define POSTGRES_ECPG_INTERNAL
#include "postgres_fe.h"
...
...
@@ -17,9 +17,8 @@ static pthread_mutex_t connections_mutex = PTHREAD_MUTEX_INITIALIZER;
static
pthread_key_t
actual_connection_key
;
static
pthread_once_t
actual_connection_key_once
=
PTHREAD_ONCE_INIT
;
#else
static
struct
connection
*
actual_connection
=
NULL
;
#endif
static
struct
connection
*
actual_connection
=
NULL
;
static
struct
connection
*
all_connections
=
NULL
;
#ifdef ENABLE_THREAD_SAFETY
...
...
@@ -39,6 +38,16 @@ ecpg_get_connection_nr(const char *connection_name)
{
#ifdef ENABLE_THREAD_SAFETY
ret
=
pthread_getspecific
(
actual_connection_key
);
/* if no connection in TSD for this thread, get the global default connection
* and hope the user knows what they're doing (i.e. using their own mutex to
* protect that connection from concurrent accesses */
if
(
NULL
==
ret
)
{
ECPGlog
(
"no TSD connection, going for global
\n
"
);
ret
=
actual_connection
;
}
else
ECPGlog
(
"got the TSD connection
\n
"
);
#else
ret
=
actual_connection
;
#endif
...
...
@@ -67,6 +76,16 @@ ECPGget_connection(const char *connection_name)
{
#ifdef ENABLE_THREAD_SAFETY
ret
=
pthread_getspecific
(
actual_connection_key
);
/* if no connection in TSD for this thread, get the global default connection
* and hope the user knows what they're doing (i.e. using their own mutex to
* protect that connection from concurrent accesses */
if
(
NULL
==
ret
)
{
ECPGlog
(
"no TSD connection here either, using global
\n
"
);
ret
=
actual_connection
;
}
else
ECPGlog
(
"got TSD connection
\n
"
);
#else
ret
=
actual_connection
;
#endif
...
...
@@ -117,10 +136,9 @@ ecpg_finish(struct connection * act)
#ifdef ENABLE_THREAD_SAFETY
if
(
pthread_getspecific
(
actual_connection_key
)
==
act
)
pthread_setspecific
(
actual_connection_key
,
all_connections
);
#e
lse
#e
ndif
if
(
actual_connection
==
act
)
actual_connection
=
all_connections
;
#endif
ECPGlog
(
"ecpg_finish: Connection %s closed.
\n
"
,
act
->
name
);
...
...
@@ -416,9 +434,8 @@ ECPGconnect(int lineno, int c, const char *name, const char *user, const char *p
#ifdef ENABLE_THREAD_SAFETY
pthread_once
(
&
actual_connection_key_once
,
ecpg_actual_connection_init
);
pthread_setspecific
(
actual_connection_key
,
all_connections
);
#else
actual_connection
=
all_connections
;
#endif
actual_connection
=
all_connections
;
ECPGlog
(
"ECPGconnect: opening database %s on %s port %s %s%s%s%s
\n
"
,
realname
?
realname
:
"<DEFAULT>"
,
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment