aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/shared/Database/AdhocStatement.cpp57
-rw-r--r--src/server/shared/Database/AdhocStatement.h42
-rw-r--r--src/server/shared/Database/DatabaseWorkerPool.h2
-rw-r--r--src/server/shared/Database/QueryHolder.cpp (renamed from src/server/shared/Database/SQLOperation.cpp)45
-rw-r--r--src/server/shared/Database/QueryHolder.h58
-rw-r--r--src/server/shared/Database/SQLOperation.h57
6 files changed, 164 insertions, 97 deletions
diff --git a/src/server/shared/Database/AdhocStatement.cpp b/src/server/shared/Database/AdhocStatement.cpp
new file mode 100644
index 00000000000..b2e99f6d25c
--- /dev/null
+++ b/src/server/shared/Database/AdhocStatement.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2008-2010 Trinity <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include "AdhocStatement.h"
+#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, QueryResultFuture result) :
+m_has_result(true),
+m_result(result)
+{
+ m_sql = strdup(sql);
+}
+
+BasicStatementTask::~BasicStatementTask()
+{
+ free((void*)m_sql);
+}
+
+bool BasicStatementTask::Execute()
+{
+ if (m_has_result)
+ {
+ ResultSet* result = m_conn->Query(m_sql);
+ if (!result || !result->GetRowCount())
+ {
+ m_result.set(QueryResult(NULL));
+ return false;
+ }
+ result->NextRow();
+ m_result.set(QueryResult(result));
+ return true;
+ }
+
+ return m_conn->Execute(m_sql);
+}
diff --git a/src/server/shared/Database/AdhocStatement.h b/src/server/shared/Database/AdhocStatement.h
new file mode 100644
index 00000000000..ad580f1fbab
--- /dev/null
+++ b/src/server/shared/Database/AdhocStatement.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2008-2010 Trinity <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef _ADHOCSTATEMENT_H
+#define _ADHOCSTATEMENT_H
+
+#include <ace/Future.h>
+#include "SQLOperation.h"
+
+typedef ACE_Future<QueryResult> QueryResultFuture;
+/*! Raw, ad-hoc query. */
+class BasicStatementTask : public SQLOperation
+{
+ public:
+ BasicStatementTask(const char* sql);
+ BasicStatementTask(const char* sql, QueryResultFuture result);
+ ~BasicStatementTask();
+
+ bool Execute();
+
+ private:
+ const char* m_sql; //- Raw query to be executed
+ bool m_has_result;
+ QueryResultFuture m_result;
+};
+
+#endif \ No newline at end of file
diff --git a/src/server/shared/Database/DatabaseWorkerPool.h b/src/server/shared/Database/DatabaseWorkerPool.h
index e0735a83fba..2d55a6f1b6b 100644
--- a/src/server/shared/Database/DatabaseWorkerPool.h
+++ b/src/server/shared/Database/DatabaseWorkerPool.h
@@ -30,6 +30,8 @@
#include "PreparedStatement.h"
#include "Log.h"
#include "QueryResult.h"
+#include "QueryHolder.h"
+#include "AdhocStatement.h"
enum MySQLThreadBundle
{
diff --git a/src/server/shared/Database/SQLOperation.cpp b/src/server/shared/Database/QueryHolder.cpp
index 7ae690d2053..dfb5792cc9d 100644
--- a/src/server/shared/Database/SQLOperation.cpp
+++ b/src/server/shared/Database/QueryHolder.cpp
@@ -16,48 +16,11 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
-#include "Common.h"
-#include "SQLOperation.h"
+#include "QueryHolder.h"
+#include "PreparedStatement.h"
#include "MySQLConnection.h"
#include "Log.h"
-/*! Basic, ad-hoc queries. */
-BasicStatementTask::BasicStatementTask(const char* sql) :
-m_has_result(false)
-{
- m_sql = strdup(sql);
-}
-
-BasicStatementTask::BasicStatementTask(const char* sql, QueryResultFuture result) :
-m_has_result(true),
-m_result(result)
-{
- m_sql = strdup(sql);
-}
-
-BasicStatementTask::~BasicStatementTask()
-{
- free((void*)m_sql);
-}
-
-bool BasicStatementTask::Execute()
-{
- if (m_has_result)
- {
- ResultSet* result = m_conn->Query(m_sql);
- if (!result || !result->GetRowCount())
- {
- m_result.set(QueryResult(NULL));
- return false;
- }
- result->NextRow();
- m_result.set(QueryResult(result));
- return true;
- }
-
- return m_conn->Execute(m_sql);
-}
-
bool SQLQueryHolder::SetQuery(size_t index, const char *sql)
{
if (m_queries.size() <= index)
@@ -92,7 +55,7 @@ bool SQLQueryHolder::SetPQuery(size_t index, const char *format, ...)
int res = vsnprintf(szQuery, MAX_QUERY_LEN, format, ap);
va_end(ap);
- if (res==-1)
+ if (res == -1)
{
sLog.outError("SQL Query truncated (and not execute) for format: %s",format);
return false;
@@ -103,7 +66,7 @@ bool SQLQueryHolder::SetPQuery(size_t index, const char *format, ...)
QueryResult SQLQueryHolder::GetResult(size_t index)
{
- // Don't call to this function if the index is of a prepared statement
+ // Don't call to this function if the index is of an ad-hoc statement
if (index < m_queries.size())
{
/// the query strings are freed on the first GetResult or in the destructor
diff --git a/src/server/shared/Database/QueryHolder.h b/src/server/shared/Database/QueryHolder.h
new file mode 100644
index 00000000000..e43a8275554
--- /dev/null
+++ b/src/server/shared/Database/QueryHolder.h
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2008-2010 Trinity <http://www.trinitycore.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef _QUERYHOLDER_H
+#define _QUERYHOLDER_H
+
+#include <ace/Future.h>
+
+class SQLQueryHolder
+{
+ friend class SQLQueryHolderTask;
+ private:
+ typedef std::pair<SQLElementData, SQLResultSetUnion> SQLResultPair;
+ std::vector<SQLResultPair> m_queries;
+ public:
+ SQLQueryHolder() {}
+ ~SQLQueryHolder();
+ bool SetQuery(size_t index, const char *sql);
+ bool SetPQuery(size_t index, const char *format, ...) ATTR_PRINTF(3,4);
+ bool SetPreparedQuery(size_t index, PreparedStatement* stmt);
+ void SetSize(size_t size);
+ QueryResult GetResult(size_t index);
+ PreparedQueryResult GetPreparedResult(size_t index);
+ void SetResult(size_t index, ResultSet* result);
+ void SetPreparedResult(size_t index, PreparedResultSet* result);
+};
+
+typedef ACE_Future<SQLQueryHolder*> QueryResultHolderFuture;
+
+class SQLQueryHolderTask : public SQLOperation
+{
+ private:
+ SQLQueryHolder * m_holder;
+ QueryResultHolderFuture m_result;
+
+ public:
+ SQLQueryHolderTask(SQLQueryHolder *holder, QueryResultHolderFuture res)
+ : m_holder(holder), m_result(res){};
+ bool Execute();
+
+};
+
+#endif \ No newline at end of file
diff --git a/src/server/shared/Database/SQLOperation.h b/src/server/shared/Database/SQLOperation.h
index e5d7f7c7180..77f73a95a82 100644
--- a/src/server/shared/Database/SQLOperation.h
+++ b/src/server/shared/Database/SQLOperation.h
@@ -22,8 +22,7 @@
#include <ace/Method_Request.h>
#include <ace/Activation_Queue.h>
-#include "Common.h"
-#include "Callback.h"
+#include "QueryResult.h"
//- Forward declare (don't include header to prevent circular includes)
class PreparedStatement;
@@ -73,58 +72,4 @@ class SQLOperation : public ACE_Method_Request
MySQLConnection* m_conn;
};
-typedef ACE_Future<QueryResult> QueryResultFuture;
-/*! Raw, ad-hoc query. */
-class BasicStatementTask : public SQLOperation
-{
- public:
- BasicStatementTask(const char* sql);
- BasicStatementTask(const char* sql, QueryResultFuture result);
- ~BasicStatementTask();
-
- bool Execute();
-
- private:
- const char* m_sql; //- Raw query to be executed
- bool m_has_result;
- QueryResultFuture m_result;
-};
-
-
-
-class SQLQueryHolder
-{
- friend class SQLQueryHolderTask;
- private:
- typedef std::pair<SQLElementData, SQLResultSetUnion> SQLResultPair;
- std::vector<SQLResultPair> m_queries;
- public:
- SQLQueryHolder() {}
- ~SQLQueryHolder();
- bool SetQuery(size_t index, const char *sql);
- bool SetPQuery(size_t index, const char *format, ...) ATTR_PRINTF(3,4);
- bool SetPreparedQuery(size_t index, PreparedStatement* stmt);
- void SetSize(size_t size);
- QueryResult GetResult(size_t index);
- PreparedQueryResult GetPreparedResult(size_t index);
- void SetResult(size_t index, ResultSet* result);
- void SetPreparedResult(size_t index, PreparedResultSet* result);
-};
-
-typedef ACE_Future<SQLQueryHolder*> QueryResultHolderFuture;
-
-class SQLQueryHolderTask : public SQLOperation
-{
- private:
- SQLQueryHolder * m_holder;
- QueryResultHolderFuture m_result;
-
- public:
- SQLQueryHolderTask(SQLQueryHolder *holder, QueryResultHolderFuture res)
- : m_holder(holder), m_result(res){};
- bool Execute();
-
-};
-
-
#endif