From 471139ba4d5de6cc6d57bae39401c8ee8f0a9b1d Mon Sep 17 00:00:00 2001 From: eelke Date: Sun, 23 Dec 2018 12:39:53 +0100 Subject: [PATCH] Added getResultNoThrow as the AsyncDBCOnnection doesn't like exceptions. --- pglablib/ASyncDBConnection.cpp | 2 +- pgsql/Pgsql_Connection.cpp | 11 +++++++++++ pgsql/Pgsql_Connection.h | 1 + 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/pglablib/ASyncDBConnection.cpp b/pglablib/ASyncDBConnection.cpp index 3b93ce8..90e44db 100644 --- a/pglablib/ASyncDBConnection.cpp +++ b/pglablib/ASyncDBConnection.cpp @@ -138,7 +138,7 @@ void ASyncDBConnection::async_query_handler(boost::system::error_code ec, std::s bool finished = false; if (m_connection.consumeInput()) { while ( ! finished && ! m_connection.isBusy()) { - auto res = m_connection.getResult(); + auto res = m_connection.getResultNoThrow(); qint64 ms = m_timer.restart(); on_result(res, ms); if (res == nullptr) { diff --git a/pgsql/Pgsql_Connection.cpp b/pgsql/Pgsql_Connection.cpp index 65d9d48..e065ab8 100644 --- a/pgsql/Pgsql_Connection.cpp +++ b/pgsql/Pgsql_Connection.cpp @@ -159,6 +159,17 @@ std::shared_ptr Connection::getResult() } } +std::shared_ptr Connection::getResultNoThrow() +{ + PGresult *r = PQgetResult(conn); + if (r) { + return std::make_shared(r); + } + else { + return nullptr; + } +} + bool Connection::consumeInput() { int res = PQconsumeInput(conn); diff --git a/pgsql/Pgsql_Connection.h b/pgsql/Pgsql_Connection.h index 6f5bcc1..2aa3336 100644 --- a/pgsql/Pgsql_Connection.h +++ b/pgsql/Pgsql_Connection.h @@ -98,6 +98,7 @@ namespace Pgsql { bool sendQueryParams(const char * command, const Params ¶ms); std::shared_ptr getResult(); + std::shared_ptr getResultNoThrow(); bool consumeInput(); bool isBusy();