summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Eisentraut2017-03-28 15:08:38 +0000
committerPeter Eisentraut2017-03-28 15:08:38 +0000
commit85163641f8bdeb7734b37ae67faa224a029afe25 (patch)
tree768a1f1edb64979a6c468f60e39bd2628af32134
parentff539da31691f2cd2694360250571c5c5fb7415e (diff)
dblink: Fix error reporting
The conname variable was not initialized in some code paths, resulting in error reports referring to the "unnamed" connection rather than the correct connection name. Author: Rushabh Lathia <[email protected]>
-rw-r--r--contrib/dblink/dblink.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c
index c1e9089914..1d5555afb6 100644
--- a/contrib/dblink/dblink.c
+++ b/contrib/dblink/dblink.c
@@ -687,23 +687,25 @@ dblink_record_internal(FunctionCallInfo fcinfo, bool is_async)
if (PG_NARGS() == 3)
{
/* text,text,bool */
- dblink_get_conn(text_to_cstring(PG_GETARG_TEXT_PP(0)), &conn, &conname, &freeconn);
+ conname = text_to_cstring(PG_GETARG_TEXT_PP(0));
sql = text_to_cstring(PG_GETARG_TEXT_PP(1));
fail = PG_GETARG_BOOL(2);
+ dblink_get_conn(conname, &conn, &conname, &freeconn);
}
else if (PG_NARGS() == 2)
{
/* text,text or text,bool */
if (get_fn_expr_argtype(fcinfo->flinfo, 1) == BOOLOID)
{
- conn = pconn->conn;
sql = text_to_cstring(PG_GETARG_TEXT_PP(0));
fail = PG_GETARG_BOOL(1);
+ conn = pconn->conn;
}
else
{
- dblink_get_conn(text_to_cstring(PG_GETARG_TEXT_PP(0)), &conn, &conname, &freeconn);
+ conname = text_to_cstring(PG_GETARG_TEXT_PP(0));
sql = text_to_cstring(PG_GETARG_TEXT_PP(1));
+ dblink_get_conn(conname, &conn, &conname, &freeconn);
}
}
else if (PG_NARGS() == 1)
@@ -719,16 +721,18 @@ dblink_record_internal(FunctionCallInfo fcinfo, bool is_async)
else /* is_async */
{
/* get async result */
+ conname = text_to_cstring(PG_GETARG_TEXT_PP(0));
+
if (PG_NARGS() == 2)
{
/* text,bool */
- conn = dblink_get_named_conn(text_to_cstring(PG_GETARG_TEXT_PP(0)));
fail = PG_GETARG_BOOL(1);
+ conn = dblink_get_named_conn(conname);
}
else if (PG_NARGS() == 1)
{
/* text */
- conn = dblink_get_named_conn(text_to_cstring(PG_GETARG_TEXT_PP(0)));
+ conn = dblink_get_named_conn(conname);
}
else
/* shouldn't happen */
@@ -1390,23 +1394,25 @@ dblink_exec(PG_FUNCTION_ARGS)
if (PG_NARGS() == 3)
{
/* must be text,text,bool */
- dblink_get_conn(text_to_cstring(PG_GETARG_TEXT_PP(0)), &conn, &conname, &freeconn);
+ conname = text_to_cstring(PG_GETARG_TEXT_PP(0));
sql = text_to_cstring(PG_GETARG_TEXT_PP(1));
fail = PG_GETARG_BOOL(2);
+ dblink_get_conn(conname, &conn, &conname, &freeconn);
}
else if (PG_NARGS() == 2)
{
/* might be text,text or text,bool */
if (get_fn_expr_argtype(fcinfo->flinfo, 1) == BOOLOID)
{
- conn = pconn->conn;
sql = text_to_cstring(PG_GETARG_TEXT_PP(0));
fail = PG_GETARG_BOOL(1);
+ conn = pconn->conn;
}
else
{
- dblink_get_conn(text_to_cstring(PG_GETARG_TEXT_PP(0)), &conn, &conname, &freeconn);
+ conname = text_to_cstring(PG_GETARG_TEXT_PP(0));
sql = text_to_cstring(PG_GETARG_TEXT_PP(1));
+ dblink_get_conn(conname, &conn, &conname, &freeconn);
}
}
else if (PG_NARGS() == 1)