[10865] Make DB code thread-safe. Original patch by Machiavelli and Kero99.

Signed-off-by: Ambal <pogrebniak@gala.net>
This commit is contained in:
Ambal 2010-12-12 11:34:26 +02:00
parent 9b3535f803
commit af66b470a8
8 changed files with 53 additions and 26 deletions

View file

@ -31,8 +31,10 @@ void SqlStatement::Execute(Database *db)
void SqlTransaction::Execute(Database *db)
{
ACE_Guard<ACE_Thread_Mutex> _lock(m_Mutex);
if(m_queue.empty())
return;
db->DirectExecute("START TRANSACTION");
while(!m_queue.empty())
{
@ -42,17 +44,20 @@ void SqlTransaction::Execute(Database *db)
if(!db->DirectExecute(sql))
{
delete [] sql;
db->DirectExecute("ROLLBACK");
while(!m_queue.empty())
{
delete [] (const_cast<char*>(m_queue.front()));
m_queue.pop();
}
return;
}
delete [] sql;
}
db->DirectExecute("COMMIT");
}