Fix connection in dblink when dblink_connect() or dblink_connect_u()
authorItagaki Takahiro <[email protected]>
Wed, 9 Jun 2010 00:59:54 +0000 (00:59 +0000)
committerItagaki Takahiro <[email protected]>
Wed, 9 Jun 2010 00:59:54 +0000 (00:59 +0000)
end with "duplicate connection name" errors.

Backported to release 7.4.

contrib/dblink/dblink.c

index bbe40060a2f3e61e70ad31aae0e4d67d67690dfd..e5db663ec434f9205107ff3376b9e617d29ba91f 100644 (file)
@@ -8,7 +8,7 @@
  * Darko Prenosil <[email protected]>
  * Shridhar Daithankar <[email protected]>
  *
- * $PostgreSQL: pgsql/contrib/dblink/dblink.c,v 1.60.2.6 2010/06/03 09:43:04 itagaki Exp $
+ * $PostgreSQL: pgsql/contrib/dblink/dblink.c,v 1.60.2.7 2010/06/09 00:59:54 itagaki Exp $
  * Copyright (c) 2001-2006, PostgreSQL Global Development Group
  * ALL RIGHTS RESERVED;
  *
@@ -2287,9 +2287,14 @@ createNewConnection(const char *name, remoteConn * rconn)
                                               HASH_ENTER, &found);
 
    if (found)
+   {
+       PQfinish(rconn->conn);
+       pfree(rconn);
+
        ereport(ERROR,
                (errcode(ERRCODE_DUPLICATE_OBJECT),
                 errmsg("duplicate connection name")));
+   }
 
    hentry->rconn = rconn;
    strncpy(hentry->name, name, NAMEDATALEN - 1);