aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Database/PreparedStatement.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/shared/Database/PreparedStatement.cpp')
-rwxr-xr-xsrc/server/shared/Database/PreparedStatement.cpp23
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);
}