]> granicus.if.org Git - icinga2/commitdiff
Revert "DB IDO: Make sure that all result sets are processed before sending another...
authorMichael Friedrich <michael.friedrich@icinga.com>
Fri, 25 Nov 2016 14:43:54 +0000 (15:43 +0100)
committerMichael Friedrich <michael.friedrich@icinga.com>
Fri, 25 Nov 2016 14:53:07 +0000 (15:53 +0100)
This reverts commit b028ff2c33cc580d6cb0c063575d77a2f18ad0b1.

refs #12597
refs #13321

lib/db_ido_mysql/idomysqlconnection.cpp
lib/db_ido_mysql/idomysqlconnection.hpp

index 4d15ae3b19e6236e707682c90f71d951b441f06e..7b4153932ea10b950fa58bc70601a51bc2de4df0 100644 (file)
@@ -513,21 +513,20 @@ void IdoMysqlConnection::FinishAsyncQueries(void)
                        );
                }
 
-               std::vector<IdoMysqlResultInfo> resultSets;
-
                for (std::vector<IdoAsyncQuery>::size_type i = offset; i < offset + count; i++) {
                        const IdoAsyncQuery& aq = queries[i];
 
                        MYSQL_RES *result = mysql_store_result(&m_Connection);
 
-                       int affectedRows = mysql_affected_rows(&m_Connection);
+                       m_AffectedRows = mysql_affected_rows(&m_Connection);
+
                        IdoMysqlResult iresult;
 
                        if (!result) {
                                if (mysql_field_count(&m_Connection) > 0) {
                                        std::ostringstream msgbuf;
                                        String message = mysql_error(&m_Connection);
-                                       msgbuf << "Error \"" << message << "\" when checking field count \"" << aq.Query << "\"";
+                                       msgbuf << "Error \"" << message << "\" when executing query \"" << aq.Query << "\"";
                                        Log(LogCritical, "IdoMysqlConnection", msgbuf.str());
 
                                        BOOST_THROW_EXCEPTION(
@@ -539,11 +538,8 @@ void IdoMysqlConnection::FinishAsyncQueries(void)
                        } else
                                iresult = IdoMysqlResult(result, std::ptr_fun(mysql_free_result));
 
-                       IdoMysqlResultInfo resultInfo;
-                       resultInfo.Result = iresult;
-                       resultInfo.AffectedRows = affectedRows;
-
-                       resultSets.push_back(resultInfo);
+                       if (aq.Callback)
+                               aq.Callback(iresult);
 
                        if (mysql_next_result(&m_Connection) > 0) {
                                std::ostringstream msgbuf;
@@ -559,17 +555,6 @@ void IdoMysqlConnection::FinishAsyncQueries(void)
                        }
                }
 
-               for (std::vector<IdoAsyncQuery>::size_type i = offset; i < offset + count; i++) {
-                       const IdoAsyncQuery& aq = queries[i];
-
-                       const IdoMysqlResultInfo ri = resultSets[i - offset];
-
-                       m_AffectedRows = ri.AffectedRows;
-
-                       if (aq.Callback)
-                               aq.Callback(ri.Result);
-               }
-
                offset += count;
        }
 }
index 3be79da7ec8373b65649a5ac29b7867e0ea62ff3..c134cf7fe8c3ad93158dba35fe6cbe42c9a65cb3 100644 (file)
@@ -39,12 +39,6 @@ struct IdoAsyncQuery
        IdoAsyncCallback Callback;
 };
 
-struct IdoMysqlResultInfo
-{
-       IdoMysqlResult Result;
-       int AffectedRows;
-};
-
 /**
  * An IDO MySQL database connection.
  *