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 */