diff -rpcd a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c *** a/contrib/dblink/dblink.c Thu Jun 5 13:17:04 2014 --- b/contrib/dblink/dblink.c Mon Jun 9 15:35:39 2014 *************** materializeQueryResult(FunctionCallInfo *** 1045,1050 **** --- 1045,1052 ---- sinfo.last_res = NULL; PQclear(sinfo.cur_res); sinfo.cur_res = NULL; + if (sinfo.tmpcontext != NULL) + MemoryContextDelete(sinfo.tmpcontext); } PG_CATCH(); { *************** materializeQueryResult(FunctionCallInfo *** 1055,1060 **** --- 1057,1064 ---- /* and clear out any pending data in libpq */ while ((res = PQgetResult(conn)) != NULL) PQclear(res); + if (sinfo.tmpcontext != NULL) + MemoryContextDelete(sinfo.tmpcontext); PG_RE_THROW(); } PG_END_TRY();