aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Database/AdhocStatement.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/shared/Database/AdhocStatement.cpp')
-rw-r--r--src/server/shared/Database/AdhocStatement.cpp20
1 files changed, 9 insertions, 11 deletions
diff --git a/src/server/shared/Database/AdhocStatement.cpp b/src/server/shared/Database/AdhocStatement.cpp
index 65c41823ccb..7fae9173d20 100644
--- a/src/server/shared/Database/AdhocStatement.cpp
+++ b/src/server/shared/Database/AdhocStatement.cpp
@@ -19,22 +19,20 @@
#include "MySQLConnection.h"
/*! Basic, ad-hoc queries. */
-BasicStatementTask::BasicStatementTask(const char* sql) :
-m_has_result(false)
-{
- m_sql = strdup(sql);
-}
-
-BasicStatementTask::BasicStatementTask(const char* sql, QueryResultPromise& result) :
-m_has_result(true),
-m_result(std::move(result))
+BasicStatementTask::BasicStatementTask(const char* sql, bool async) :
+m_result(nullptr)
{
m_sql = strdup(sql);
+ m_has_result = async; // If the operation is async, then there's a result
+ if (async)
+ m_result = new QueryResultPromise();
}
BasicStatementTask::~BasicStatementTask()
{
free((void*)m_sql);
+ if (m_has_result && m_result != nullptr)
+ delete m_result;
}
bool BasicStatementTask::Execute()
@@ -45,11 +43,11 @@ bool BasicStatementTask::Execute()
if (!result || !result->GetRowCount() || !result->NextRow())
{
delete result;
- m_result.set_value(QueryResult(NULL));
+ m_result->set_value(QueryResult(NULL));
return false;
}
- m_result.set_value(QueryResult(result));
+ m_result->set_value(QueryResult(result));
return true;
}