Re-connect to postgresql when the connection is lost

fix #3336
This commit is contained in:
louiz’
2018-03-19 00:16:16 +01:00
parent 8f74d4dd40
commit d7427fc9ca
2 changed files with 15 additions and 2 deletions
+12 -2
View File
@@ -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,7 +113,17 @@ 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});
return false;
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;
}