~singpolyma/biboumi

b1750843008b7928c72699c592776fb56c66ec26 — louiz’ 6 years ago d3e07ee
Log the warn/error messages coming from libpq in a correct format
1 files changed, 12 insertions(+), 0 deletions(-)

M src/database/postgresql_engine.cpp
M src/database/postgresql_engine.cpp => src/database/postgresql_engine.cpp +12 -0
@@ 11,6 11,8 @@

#include <logger/logger.hpp>

#include <cstring>

PostgresqlEngine::PostgresqlEngine(PGconn*const conn):
    conn(conn)
{}


@@ 20,6 22,15 @@ PostgresqlEngine::~PostgresqlEngine()
  PQfinish(this->conn);
}

static void logging_notice_processor(void*, const char* original)
{
  if (original && std::strlen(original) > 0)
    {
      std::string message{original, std::strlen(original) - 1};
      log_warning("PostgreSQL: ", message);
    }
}

std::unique_ptr<DatabaseEngine> PostgresqlEngine::open(const std::string& conninfo)
{
  PGconn* con = PQconnectdb(conninfo.data());


@@ 37,6 48,7 @@ std::unique_ptr<DatabaseEngine> PostgresqlEngine::open(const std::string& connin
      PQfinish(con);
      throw std::runtime_error("failed to open connection.");
    }
  PQsetNoticeProcessor(con, &logging_notice_processor, nullptr);
  return std::make_unique<PostgresqlEngine>(con);
}