diff options
author | leak <leakzx@googlemail.com> | 2011-01-26 00:41:55 +0100 |
---|---|---|
committer | leak <leakzx@googlemail.com> | 2011-01-26 00:41:55 +0100 |
commit | 57f85ab7da3c1759a0cef3bd0497253c54bf1218 (patch) | |
tree | 56d8515122fe65f055f8bd5c30788f15683fef34 /src/server/shared/Database/PreparedStatement.cpp | |
parent | 180b739483a0cf7f55342effa9c205e2365029f5 (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-x | src/server/shared/Database/PreparedStatement.cpp | 50 |
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), |