aboutsummaryrefslogtreecommitdiff
path: root/src/shared/Database/SqlOperations.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/Database/SqlOperations.cpp')
-rw-r--r--src/shared/Database/SqlOperations.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/shared/Database/SqlOperations.cpp b/src/shared/Database/SqlOperations.cpp
index c766d6ca21d..8894f896855 100644
--- a/src/shared/Database/SqlOperations.cpp
+++ b/src/shared/Database/SqlOperations.cpp
@@ -35,21 +35,32 @@ 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())
{
+ sql = m_queue.peek();
+ m_queue.unlock();
if (!db->DirectExecute(sql))
{
free((void*)const_cast<char*>(sql));
+ m_queue.pop_front();
db->DirectExecute("ROLLBACK");
- while (m_queue.next(sql))
+ while (!m_queue.empty())
{
+ sql = m_queue.peek();
+ m_queue.unlock();
free((void*)const_cast<char*>(sql));
+ m_queue.pop_front();
}
+
return;
}
free((void*)const_cast<char*>(sql));
+ m_queue.pop_front();
}
db->DirectExecute("COMMIT");