diff options
author | thenecromancer <none@none> | 2010-02-01 10:23:18 +0100 |
---|---|---|
committer | thenecromancer <none@none> | 2010-02-01 10:23:18 +0100 |
commit | fd5f1e554d830de7b968707efaa99c4075aeb35c (patch) | |
tree | 4baafaa565050d9c17e9e94f0c29477c92387951 /src/shared/Database/SqlOperations.cpp | |
parent | adfce8fec4a30ee578a11bfe44e3036de28df8a2 (diff) |
Use recursive thread mutex for SQL transaction queue
--HG--
branch : trunk
Diffstat (limited to 'src/shared/Database/SqlOperations.cpp')
-rw-r--r-- | src/shared/Database/SqlOperations.cpp | 13 |
1 files changed, 4 insertions, 9 deletions
diff --git a/src/shared/Database/SqlOperations.cpp b/src/shared/Database/SqlOperations.cpp index 793fabecde7..d657c667913 100644 --- a/src/shared/Database/SqlOperations.cpp +++ b/src/shared/Database/SqlOperations.cpp @@ -33,22 +33,17 @@ void SqlStatement::Execute(Database *db) void SqlTransaction::Execute(Database *db) { - if(m_queue.empty()) - return; + const char *sql; db->DirectExecute("START TRANSACTION"); - while(!m_queue.empty()) + while(m_queue.next(sql)) { - char const *sql = m_queue.front(); - m_queue.pop(); - if(!db->DirectExecute(sql)) { free((void*)const_cast<char*>(sql)); db->DirectExecute("ROLLBACK"); - while(!m_queue.empty()) + while(m_queue.next(sql)) { - free((void*)const_cast<char*>(m_queue.front())); - m_queue.pop(); + free((void*)const_cast<char*>(sql)); } return; } |