mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-25 11:21:58 +01:00
Core/DBLayer:
- Declare the datatypes used to determine transaction element data (prepared statement/adhoc query string) on a generic level in SQLOperation.h - Implement variable SQL element data for SQLQueryHolder class so it can execute both prepared statements and adhoc queries - Make MySQLConnection::Query for adhoc queries return pointer to type instead of an autopointer, the autopointer is now applied on higher level code just like the function for querying prepared statements --HG-- branch : trunk
This commit is contained in:
@@ -22,8 +22,8 @@
|
||||
//- Append a raw ad-hoc query to the transaction
|
||||
void Transaction::Append(const char* sql)
|
||||
{
|
||||
TransactionElementData data;
|
||||
data.type = TRANSACTION_ELEMENT_RAW;
|
||||
SQLElementData data;
|
||||
data.type = SQL_ELEMENT_RAW;
|
||||
data.element.query = strdup(sql);
|
||||
m_queries.push(data);
|
||||
}
|
||||
@@ -42,8 +42,8 @@ void Transaction::PAppend(const char* sql, ...)
|
||||
//- Append a prepared statement to the transaction
|
||||
void Transaction::Append(PreparedStatement* stmt)
|
||||
{
|
||||
TransactionElementData data;
|
||||
data.type = TRANSACTION_ELEMENT_PREPARED;
|
||||
SQLElementData data;
|
||||
data.type = SQL_ELEMENT_PREPARED;
|
||||
data.element.stmt = stmt;
|
||||
m_queries.push(data);
|
||||
}
|
||||
@@ -52,13 +52,13 @@ void Transaction::Cleanup()
|
||||
{
|
||||
while (!m_queries.empty())
|
||||
{
|
||||
TransactionElementData data = m_queries.front();
|
||||
SQLElementData data = m_queries.front();
|
||||
switch (data.type)
|
||||
{
|
||||
case TRANSACTION_ELEMENT_PREPARED:
|
||||
case SQL_ELEMENT_PREPARED:
|
||||
delete data.element.stmt;
|
||||
break;
|
||||
case TRANSACTION_ELEMENT_RAW:
|
||||
case SQL_ELEMENT_RAW:
|
||||
free((void*)(data.element.query));
|
||||
break;
|
||||
}
|
||||
@@ -68,17 +68,17 @@ void Transaction::Cleanup()
|
||||
|
||||
bool TransactionTask::Execute()
|
||||
{
|
||||
std::queue<TransactionElementData> &queries = m_trans->m_queries;
|
||||
std::queue<SQLElementData> &queries = m_trans->m_queries;
|
||||
if (queries.empty())
|
||||
return false;
|
||||
|
||||
m_conn->BeginTransaction();
|
||||
while (!queries.empty())
|
||||
{
|
||||
TransactionElementData data = queries.front();
|
||||
SQLElementData data = queries.front();
|
||||
switch (data.type)
|
||||
{
|
||||
case TRANSACTION_ELEMENT_PREPARED:
|
||||
case SQL_ELEMENT_PREPARED:
|
||||
{
|
||||
PreparedStatement* stmt = data.element.stmt;
|
||||
ASSERT(stmt);
|
||||
@@ -91,7 +91,7 @@ bool TransactionTask::Execute()
|
||||
delete data.element.stmt;
|
||||
}
|
||||
break;
|
||||
case TRANSACTION_ELEMENT_RAW:
|
||||
case SQL_ELEMENT_RAW:
|
||||
{
|
||||
const char* sql = data.element.query;
|
||||
ASSERT(sql);
|
||||
|
||||
Reference in New Issue
Block a user