aboutsummaryrefslogtreecommitdiff
path: root/src/server/database/Database/Transaction.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-12-27 00:14:12 +0100
committerShauren <shauren.trinity@gmail.com>2023-12-27 00:14:12 +0100
commit3a9cbd217aa14bd7543722d9f4849f736b7c3264 (patch)
tree1dbe14196d6a6ae0dcceb70a6edc9ebd9eb0bbba /src/server/database/Database/Transaction.cpp
parent13dc139742655ea523f02f67995ad376c9b912dc (diff)
Core/Database: Replace union with std::variant in Transaction
Diffstat (limited to 'src/server/database/Database/Transaction.cpp')
-rw-r--r--src/server/database/Database/Transaction.cpp26
1 files changed, 5 insertions, 21 deletions
diff --git a/src/server/database/Database/Transaction.cpp b/src/server/database/Database/Transaction.cpp
index 00ab5cbc7fa..f1ddb608c6c 100644
--- a/src/server/database/Database/Transaction.cpp
+++ b/src/server/database/Database/Transaction.cpp
@@ -16,6 +16,7 @@
*/
#include "Transaction.h"
+#include "Errors.h"
#include "Log.h"
#include "MySQLConnection.h"
#include "PreparedStatement.h"
@@ -32,19 +33,15 @@ std::mutex TransactionTask::_deadlockLock;
//- Append a raw ad-hoc query to the transaction
void TransactionBase::Append(char const* sql)
{
- SQLElementData data;
- data.type = SQL_ELEMENT_RAW;
- data.element.query = strdup(sql);
- m_queries.push_back(data);
+ ASSERT(sql);
+ m_queries.emplace_back(std::in_place_type<std::string>, sql);
}
//- Append a prepared statement to the transaction
void TransactionBase::AppendPreparedStatement(PreparedStatementBase* stmt)
{
- SQLElementData data;
- data.type = SQL_ELEMENT_PREPARED;
- data.element.stmt = stmt;
- m_queries.push_back(data);
+ ASSERT(stmt);
+ m_queries.emplace_back(std::in_place_type<std::unique_ptr<PreparedStatementBase>>, stmt);
}
void TransactionBase::Cleanup()
@@ -53,19 +50,6 @@ void TransactionBase::Cleanup()
if (_cleanedUp)
return;
- for (SQLElementData const& data : m_queries)
- {
- switch (data.type)
- {
- case SQL_ELEMENT_PREPARED:
- delete data.element.stmt;
- break;
- case SQL_ELEMENT_RAW:
- free((void*)(data.element.query));
- break;
- }
- }
-
m_queries.clear();
_cleanedUp = true;
}