aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Database/PreparedStatement.cpp
diff options
context:
space:
mode:
authorMachiavelli <none@none>2010-12-23 16:05:43 +0100
committerMachiavelli <none@none>2010-12-23 16:05:43 +0100
commit76e111fa073d0074241242334983b5e7d8f64c2d (patch)
treee75d1de9b13cc8767cc351e886854808e07d0566 /src/server/shared/Database/PreparedStatement.cpp
parentb6724bea03f6421b7168f098554cd4c43f5e75f3 (diff)
Core/DBLayer: Allow asynchronous queries with callbacks to be executed in prepared statement format as well.
+ Cleanup and documentation --HG-- branch : trunk
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);
}