Purge connection if re-raising error

The only way we re-raise an error is if the raiseError flag is true, so
might as well purge connection in that block rather than independently
checking errorLevel.
pull/615/head
Jason Petersen 2016-06-20 16:14:58 -06:00
parent aa94a0b1ca
commit 16fc92bf6b
No known key found for this signature in database
GPG Key ID: 9F1D3510D110ABA9
1 changed files with 10 additions and 5 deletions

View File

@ -263,11 +263,6 @@ ReportRemoteError(PGconn *connection, PGresult *result, bool raiseError)
sqlStateString[3], sqlStateString[4]);
}
if (raiseError)
{
errorLevel = ERROR;
}
/*
* If the PGresult did not contain a message, the connection may provide a
* suitable top level one. At worst, this is an empty string.
@ -286,6 +281,16 @@ ReportRemoteError(PGconn *connection, PGresult *result, bool raiseError)
}
}
/*
* If requested, actually raise an error. This necessitates purging the
* connection so it doesn't remain in the hash in an invalid state.
*/
if (raiseError)
{
errorLevel = ERROR;
PurgeConnection(connection);
}
if (sqlState == ERRCODE_CONNECTION_FAILURE)
{
ereport(errorLevel, (errcode(sqlState),