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
This commit is contained in:
leak
2011-01-26 00:41:55 +01:00
parent 180b739483
commit 57f85ab7da
13 changed files with 371 additions and 332 deletions

View File

@@ -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),