From 57f85ab7da3c1759a0cef3bd0497253c54bf1218 Mon Sep 17 00:00:00 2001 From: leak Date: Wed, 26 Jan 2011 00:41:55 +0100 Subject: 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 --- src/server/shared/Database/PreparedStatement.cpp | 50 ++++++++++++++++++++++++ 1 file changed, 50 insertions(+) (limited to 'src/server/shared/Database/PreparedStatement.cpp') 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), -- cgit v1.2.3