aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Database/PreparedStatement.cpp
diff options
context:
space:
mode:
authorleak <leakzx@googlemail.com>2011-01-26 00:41:55 +0100
committerleak <leakzx@googlemail.com>2011-01-26 00:41:55 +0100
commit57f85ab7da3c1759a0cef3bd0497253c54bf1218 (patch)
tree56d8515122fe65f055f8bd5c30788f15683fef34 /src/server/shared/Database/PreparedStatement.cpp
parent180b739483a0cf7f55342effa9c205e2365029f5 (diff)
Core/DBLayer: Replace prepared statement arrays with a map to avoid asynchronous indexes at query logging or error output
- Add values to prepared statement query log messages - Killed a bit Engrish and trailing white whitespaces
Diffstat (limited to 'src/server/shared/Database/PreparedStatement.cpp')
-rwxr-xr-xsrc/server/shared/Database/PreparedStatement.cpp50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/server/shared/Database/PreparedStatement.cpp b/src/server/shared/Database/PreparedStatement.cpp
index ace7ce29af7..de10f925fdb 100755
--- a/src/server/shared/Database/PreparedStatement.cpp
+++ b/src/server/shared/Database/PreparedStatement.cpp
@@ -330,6 +330,56 @@ void MySQLPreparedStatement::setValue(MYSQL_BIND* param, enum_field_types type,
memcpy(param->buffer, value, len);
}
+std::string MySQLPreparedStatement::getQueryString(const char *query)
+{
+ std::string queryString = query;
+
+ uint32 pos = 0;
+ for (uint32 i = 0; i < m_stmt->statement_data.size(); i++)
+ {
+ pos = queryString.find("?", pos);
+ std::stringstream replace;
+
+ replace << "'";
+
+ switch (m_stmt->statement_data[i].type)
+ {
+ case TYPE_BOOL:
+ replace << m_stmt->statement_data[i].data.boolean ? "1" : "0";
+ break;
+ case TYPE_UI8:
+ case TYPE_UI16:
+ case TYPE_UI32:
+ replace << m_stmt->statement_data[i].data.ui32;
+ break;
+ case TYPE_I8:
+ case TYPE_I16:
+ case TYPE_I32:
+ replace << m_stmt->statement_data[i].data.i32;
+ break;
+ case TYPE_UI64:
+ replace << m_stmt->statement_data[i].data.ui64;
+ break;
+ case TYPE_I64:
+ replace << m_stmt->statement_data[i].data.i64;
+ break;
+ case TYPE_FLOAT:
+ replace << m_stmt->statement_data[i].data.f;
+ break;
+ case TYPE_DOUBLE:
+ replace << m_stmt->statement_data[i].data.d;
+ break;
+ case TYPE_STRING:
+ replace << m_stmt->statement_data[i].str;
+ break;
+ }
+ replace << "'";
+ queryString.replace(pos,1, replace.str());
+ }
+
+ return queryString;
+}
+
//- Execution
PreparedStatementTask::PreparedStatementTask(PreparedStatement* stmt) :
m_stmt(stmt),