diff options
Diffstat (limited to 'src/shared/Database/SqlOperations.cpp')
-rw-r--r-- | src/shared/Database/SqlOperations.cpp | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/shared/Database/SqlOperations.cpp b/src/shared/Database/SqlOperations.cpp index d657c667913..d97e778f6d1 100644 --- a/src/shared/Database/SqlOperations.cpp +++ b/src/shared/Database/SqlOperations.cpp @@ -33,17 +33,23 @@ void SqlStatement::Execute(Database *db) void SqlTransaction::Execute(Database *db) { - const char *sql; + if (m_queue.empty()) + return; + db->DirectExecute("START TRANSACTION"); - while(m_queue.next(sql)) + while(!m_queue.empty()) { + 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.next(sql)) + while(!m_queue.empty()) { - free((void*)const_cast<char*>(sql)); + free((void*)const_cast<char*>(m_queue.front())); + m_queue.pop(); } return; } |