aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoe Conway <mail@joeconway.com>2020-05-28 13:45:15 -0400
committerJoe Conway <mail@joeconway.com>2020-05-28 13:45:15 -0400
commitf140d9b6e0aff91e07b7dd80cf0915bb19f02a9c (patch)
treebc61fc28c4c21ed207795d8de5e68d65ba790405
parentbfb9595a786e62359d0a2c1613f4acdd3e1b88e6 (diff)
downloadpostgresql-f140d9b6e0aff91e07b7dd80cf0915bb19f02a9c.tar.gz
postgresql-f140d9b6e0aff91e07b7dd80cf0915bb19f02a9c.zip
Initialize dblink remoteConn struct in all cases
Two of the members of rconn were left uninitialized. When dblink_open() is called without an outer transaction it handles the initialization for us, but with an outer transaction it does not. Arrange for initialization in all cases. Backpatch to all supported versions. Reported-by: Alexander Lakhin Discussion: https://www.postgresql.org/message-id/flat/9bd0744f-5f04-c778-c5b3-809efe9c30c7%40joeconway.com#c545909a41664991aca60c4d70a10ce7
-rw-r--r--contrib/dblink/dblink.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c
index 057a25ae118..123b70ae258 100644
--- a/contrib/dblink/dblink.c
+++ b/contrib/dblink/dblink.c
@@ -263,8 +263,13 @@ dblink_connect(PG_FUNCTION_ARGS)
conname_or_str = text_to_cstring(PG_GETARG_TEXT_PP(0));
if (connname)
+ {
rconn = (remoteConn *) MemoryContextAlloc(TopMemoryContext,
sizeof(remoteConn));
+ rconn->conn = NULL;
+ rconn->openCursorCount = 0;
+ rconn->newXactForCursor = false;
+ }
/* first check for valid foreign data server */
connstr = get_connect_string(conname_or_str);