aboutsummaryrefslogtreecommitdiff
path: root/contrib/dblink/dblink.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/dblink/dblink.c')
-rw-r--r--contrib/dblink/dblink.c19
1 files changed, 3 insertions, 16 deletions
diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c
index 54b7bf952f3..7e225589a9b 100644
--- a/contrib/dblink/dblink.c
+++ b/contrib/dblink/dblink.c
@@ -776,19 +776,14 @@ dblink_record_internal(FunctionCallInfo fcinfo, bool is_async)
}
}
}
- PG_CATCH();
+ PG_FINALLY();
{
/* if needed, close the connection to the database */
if (freeconn)
PQfinish(conn);
- PG_RE_THROW();
}
PG_END_TRY();
- /* if needed, close the connection to the database */
- if (freeconn)
- PQfinish(conn);
-
return (Datum) 0;
}
@@ -952,14 +947,11 @@ materializeResult(FunctionCallInfo fcinfo, PGconn *conn, PGresult *res)
/* clean up and return the tuplestore */
tuplestore_donestoring(tupstore);
}
-
- PQclear(res);
}
- PG_CATCH();
+ PG_FINALLY();
{
/* be sure to release the libpq result */
PQclear(res);
- PG_RE_THROW();
}
PG_END_TRY();
}
@@ -1464,19 +1456,14 @@ dblink_exec(PG_FUNCTION_ARGS)
errmsg("statement returning results not allowed")));
}
}
- PG_CATCH();
+ PG_FINALLY();
{
/* if needed, close the connection to the database */
if (freeconn)
PQfinish(conn);
- PG_RE_THROW();
}
PG_END_TRY();
- /* if needed, close the connection to the database */
- if (freeconn)
- PQfinish(conn);
-
PG_RETURN_TEXT_P(sql_cmd_status);
}