diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c index 17f36f1306d7db69af6f0f6e5159bf6e522028a2..2b33043c5a29aa46000be1dee741c653f2e089b0 100644 --- a/contrib/dblink/dblink.c +++ b/contrib/dblink/dblink.c @@ -345,7 +345,6 @@ dblink_open(PG_FUNCTION_ARGS) else { DBLINK_RES_ERROR_AS_NOTICE("sql error"); - PQclear(res); PG_RETURN_TEXT_P(GET_TEXT("ERROR")); } } @@ -419,7 +418,6 @@ dblink_close(PG_FUNCTION_ARGS) else { DBLINK_RES_ERROR_AS_NOTICE("sql error"); - PQclear(res); PG_RETURN_TEXT_P(GET_TEXT("ERROR")); } } @@ -531,8 +529,6 @@ dblink_fetch(PG_FUNCTION_ARGS) DBLINK_RES_ERROR("sql error"); else { - if (res) - PQclear(res); DBLINK_RES_ERROR_AS_NOTICE("sql error"); SRF_RETURN_DONE(funcctx); } @@ -720,11 +716,9 @@ dblink_record(PG_FUNCTION_ARGS) DBLINK_RES_ERROR("sql error"); else { - if (res) - PQclear(res); + DBLINK_RES_ERROR_AS_NOTICE("sql error"); if (freeconn) PQfinish(conn); - DBLINK_RES_ERROR_AS_NOTICE("sql error"); SRF_RETURN_DONE(funcctx); } } @@ -938,13 +932,15 @@ dblink_exec(PG_FUNCTION_ARGS) * result tuple */ sql_cmd_status = GET_TEXT(PQcmdStatus(res)); + PQclear(res); } else + { + PQclear(res); ereport(ERROR, (errcode(ERRCODE_S_R_E_PROHIBITED_SQL_STATEMENT_ATTEMPTED), errmsg("statement returning results not allowed"))); - - PQclear(res); + } /* if needed, close the connection to the database and cleanup */ if (freeconn)