diff --git a/src/interfaces/ecpg/ChangeLog b/src/interfaces/ecpg/ChangeLog index 3514d3a199ed233d911b94ed1df07bca109a0fbb..0bfe3ef928d0fc4641444fd5468c8d3adf6872a7 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 3cba42d25ff6b200bf6a295b739a299d413c0bb4..dcc70a5754486ba3c88540da0dcaace10922c13a 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 */