diff options
Diffstat (limited to 'src/server/shared/Database/PreparedStatement.cpp')
-rwxr-xr-x | src/server/shared/Database/PreparedStatement.cpp | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/server/shared/Database/PreparedStatement.cpp b/src/server/shared/Database/PreparedStatement.cpp index b95fb485079..95d0f89ba67 100755 --- a/src/server/shared/Database/PreparedStatement.cpp +++ b/src/server/shared/Database/PreparedStatement.cpp @@ -332,10 +332,19 @@ void MySQLPreparedStatement::setValue(MYSQL_BIND* param, enum_field_types type, //- Execution PreparedStatementTask::PreparedStatementTask(PreparedStatement* stmt) : -m_stmt(stmt) +m_stmt(stmt), +m_has_result(false) { } +PreparedStatementTask::PreparedStatementTask(PreparedStatement* stmt, PreparedQueryResultFuture result) : +m_stmt(stmt), +m_has_result(true), +m_result(result) +{ +} + + PreparedStatementTask::~PreparedStatementTask() { delete m_stmt; @@ -343,5 +352,17 @@ PreparedStatementTask::~PreparedStatementTask() bool PreparedStatementTask::Execute() { + if (m_has_result) + { + PreparedResultSet* result = m_conn->Query(m_stmt); + if (!result || !result->GetRowCount()) + { + m_result.set(PreparedQueryResult(NULL)); + return false; + } + m_result.set(PreparedQueryResult(result)); + return true; + } + return m_conn->Execute(m_stmt); } |