]> granicus.if.org Git - postgresql/commitdiff
And one more:
authorMichael Meskes <meskes@postgresql.org>
Fri, 28 Jul 2006 10:10:42 +0000 (10:10 +0000)
committerMichael Meskes <meskes@postgresql.org>
Fri, 28 Jul 2006 10:10:42 +0000 (10:10 +0000)
Connection identifier has to be unique

src/interfaces/ecpg/ChangeLog
src/interfaces/ecpg/ecpglib/connect.c

index 3514d3a199ed233d911b94ed1df07bca109a0fbb..0bfe3ef928d0fc4641444fd5468c8d3adf6872a7 100644 (file)
@@ -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.
index 3cba42d25ff6b200bf6a295b739a299d413c0bb4..dcc70a5754486ba3c88540da0dcaace10922c13a 100644 (file)
@@ -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 */