aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/interfaces/ecpg/ChangeLog1
-rw-r--r--src/interfaces/ecpg/ecpglib/connect.c17
2 files changed, 14 insertions, 4 deletions
diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog
index 3514d3a199e..0bfe3ef928d 100644
--- a/src/interfaces/ecpg/ChangeLog
+++ b/src/interfaces/ecpg/ChangeLog
@@ -2050,5 +2050,6 @@ Fr Jul 28 11:00:51 CEST 2006
- Added more SoC changes by Joachim Wieland <joe@mcknight.de>:
- SHOW statement puts result into a variable
- COPY TO STDOUT works
+ - Connection identifier has to be unique
- Set ecpg library version to 5.2.
- Set ecpg version to 4.2.1.
diff --git a/src/interfaces/ecpg/ecpglib/connect.c b/src/interfaces/ecpg/ecpglib/connect.c
index 3cba42d25ff..dcc70a57544 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.30 2006/06/21 11:38:07 meskes Exp $ */
+/* $PostgreSQL: pgsql/src/interfaces/ecpg/ecpglib/connect.c,v 1.31 2006/07/28 10:10:42 meskes Exp $ */
#define POSTGRES_ECPG_INTERNAL
#include "postgres_fe.h"
@@ -295,12 +295,21 @@ ECPGconnect(int lineno, int c, const char *name, const char *user, const char *p
}
- if ((this = (struct connection *) ECPGalloc(sizeof(struct connection), lineno)) == NULL)
- return false;
-
if (dbname == NULL && connection_name == NULL)
connection_name = "DEFAULT";
+ /* check if the identifier is unique */
+ if (ECPGget_connection(connection_name))
+ {
+ ECPGfree(dbname);
+ ECPGlog("connect: connection identifier %s is already in use\n",
+ connection_name);
+ return false;
+ }
+
+ if ((this = (struct connection *) ECPGalloc(sizeof(struct connection), lineno)) == NULL)
+ return false;
+
if (dbname != NULL)
{
/* get the detail information out of dbname */