@@ -8,6 +8,9 @@ Version 8.0
|
||||
the user customize the address to use when connecting to a server.
|
||||
See https://lab.louiz.org/louiz/biboumi/issues/3273 for more details.
|
||||
- Messages id are properly reflected to the sender
|
||||
- We now properly deal with a PostgreSQL server restart: whenever the
|
||||
connection is lost with the server, we try to reconnect and re-execute the
|
||||
query once.
|
||||
|
||||
Version 7.2 - 2018-01-24
|
||||
========================
|
||||
|
||||
@@ -92,7 +92,7 @@ class PostgresqlStatement: public Statement
|
||||
private:
|
||||
|
||||
private:
|
||||
bool execute()
|
||||
bool execute(const bool second_attempt=false)
|
||||
{
|
||||
std::vector<const char*> params;
|
||||
params.reserve(this->params.size());
|
||||
@@ -113,8 +113,18 @@ private:
|
||||
const char* original = PQerrorMessage(this->conn);
|
||||
if (original && std::strlen(original) > 0)
|
||||
log_error("Failed to execute command: ", std::string{original, std::strlen(original) - 1});
|
||||
if (PQstatus(this->conn) != CONNECTION_OK && !second_attempt)
|
||||
{
|
||||
log_info("Trying to reconnect to PostgreSQL server and execute the query again.");
|
||||
PQreset(this->conn);
|
||||
return this->execute(true);
|
||||
}
|
||||
else
|
||||
{
|
||||
log_error("Givin up.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user