diff options
| author | Shauren <shauren.trinity@gmail.com> | 2023-08-15 20:10:04 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2023-08-15 20:10:04 +0200 |
| commit | aaa6e73c8ca6d60e943cb964605536eb78219db2 (patch) | |
| tree | f5a0187925e646ef071d647efa7a5dac20501813 /src/server/database/Database | |
| parent | 825c697a764017349ca94ecfca8f30a8365666c0 (diff) | |
Core/Logging: Switch from fmt::sprintf to fmt::format (c++20 standard compatible api)
(cherry picked from commit d791afae1dfcfaf592326f787755ca32d629e4d3)
Diffstat (limited to 'src/server/database/Database')
| -rw-r--r-- | src/server/database/Database/DatabaseLoader.cpp | 16 | ||||
| -rw-r--r-- | src/server/database/Database/DatabaseWorkerPool.cpp | 20 | ||||
| -rw-r--r-- | src/server/database/Database/DatabaseWorkerPool.h | 24 | ||||
| -rw-r--r-- | src/server/database/Database/Field.cpp | 2 | ||||
| -rw-r--r-- | src/server/database/Database/MySQLConnection.cpp | 58 | ||||
| -rw-r--r-- | src/server/database/Database/MySQLPreparedStatement.cpp | 6 | ||||
| -rw-r--r-- | src/server/database/Database/PreparedStatement.cpp | 2 | ||||
| -rw-r--r-- | src/server/database/Database/QueryHolder.cpp | 2 | ||||
| -rw-r--r-- | src/server/database/Database/QueryResult.cpp | 10 | ||||
| -rw-r--r-- | src/server/database/Database/Transaction.cpp | 8 | ||||
| -rw-r--r-- | src/server/database/Database/Transaction.h | 8 |
11 files changed, 78 insertions, 78 deletions
diff --git a/src/server/database/Database/DatabaseLoader.cpp b/src/server/database/Database/DatabaseLoader.cpp index 7a0e8c05c01..bc66fb32591 100644 --- a/src/server/database/Database/DatabaseLoader.cpp +++ b/src/server/database/Database/DatabaseLoader.cpp @@ -39,15 +39,15 @@ DatabaseLoader& DatabaseLoader::AddDatabase(DatabaseWorkerPool<T>& pool, std::st std::string const dbString = sConfigMgr->GetStringDefault(name + "DatabaseInfo", ""); if (dbString.empty()) { - TC_LOG_ERROR(_logger, "Database %s not specified in configuration file!", name.c_str()); + TC_LOG_ERROR(_logger, "Database {} not specified in configuration file!", name); return false; } uint8 const asyncThreads = uint8(sConfigMgr->GetIntDefault(name + "Database.WorkerThreads", 1)); if (asyncThreads < 1 || asyncThreads > 32) { - TC_LOG_ERROR(_logger, "%s database: invalid number of worker threads specified. " - "Please pick a value between 1 and 32.", name.c_str()); + TC_LOG_ERROR(_logger, "{} database: invalid number of worker threads specified. " + "Please pick a value between 1 and 32.", name); return false; } @@ -67,8 +67,8 @@ DatabaseLoader& DatabaseLoader::AddDatabase(DatabaseWorkerPool<T>& pool, std::st // If the error wasn't handled quit if (error) { - TC_LOG_ERROR("sql.driver", "\nDatabasePool %s NOT opened. There were errors opening the MySQL connections. Check your SQLDriverLogFile " - "for specific errors. Read wiki at http://www.trinitycore.info/display/tc/TrinityCore+Home", name.c_str()); + TC_LOG_ERROR("sql.driver", "\nDatabasePool {} NOT opened. There were errors opening the MySQL connections. Check your SQLDriverLogFile " + "for specific errors. Read wiki at http://www.trinitycore.info/display/tc/TrinityCore+Home", name); return false; } @@ -88,7 +88,7 @@ DatabaseLoader& DatabaseLoader::AddDatabase(DatabaseWorkerPool<T>& pool, std::st { if (!DBUpdater<T>::Populate(pool)) { - TC_LOG_ERROR(_logger, "Could not populate the %s database, see log for details.", name.c_str()); + TC_LOG_ERROR(_logger, "Could not populate the {} database, see log for details.", name); return false; } return true; @@ -98,7 +98,7 @@ DatabaseLoader& DatabaseLoader::AddDatabase(DatabaseWorkerPool<T>& pool, std::st { if (!DBUpdater<T>::Update(pool)) { - TC_LOG_ERROR(_logger, "Could not update the %s database, see log for details.", name.c_str()); + TC_LOG_ERROR(_logger, "Could not update the {} database, see log for details.", name); return false; } return true; @@ -109,7 +109,7 @@ DatabaseLoader& DatabaseLoader::AddDatabase(DatabaseWorkerPool<T>& pool, std::st { if (!pool.PrepareStatements()) { - TC_LOG_ERROR(_logger, "Could not prepare statements of the %s database, see log for details.", name.c_str()); + TC_LOG_ERROR(_logger, "Could not prepare statements of the {} database, see log for details.", name); return false; } return true; diff --git a/src/server/database/Database/DatabaseWorkerPool.cpp b/src/server/database/Database/DatabaseWorkerPool.cpp index 8c5aa283668..dca4ade2255 100644 --- a/src/server/database/Database/DatabaseWorkerPool.cpp +++ b/src/server/database/Database/DatabaseWorkerPool.cpp @@ -95,8 +95,8 @@ uint32 DatabaseWorkerPool<T>::Open() { WPFatal(_connectionInfo.get(), "Connection info was not set!"); - TC_LOG_INFO("sql.driver", "Opening DatabasePool '%s'. " - "Asynchronous connections: %u, synchronous connections: %u.", + TC_LOG_INFO("sql.driver", "Opening DatabasePool '{}'. " + "Asynchronous connections: {}, synchronous connections: {}.", GetDatabaseName(), _async_threads, _synch_threads); uint32 error = OpenConnections(IDX_ASYNC, _async_threads); @@ -108,8 +108,8 @@ uint32 DatabaseWorkerPool<T>::Open() if (!error) { - TC_LOG_INFO("sql.driver", "DatabasePool '%s' opened successfully. " SZFMTD - " total connections running.", GetDatabaseName(), + TC_LOG_INFO("sql.driver", "DatabasePool '{}' opened successfully. " + "{} total connections running.", GetDatabaseName(), (_connections[IDX_SYNCH].size() + _connections[IDX_ASYNC].size())); } @@ -119,12 +119,12 @@ uint32 DatabaseWorkerPool<T>::Open() template <class T> void DatabaseWorkerPool<T>::Close() { - TC_LOG_INFO("sql.driver", "Closing down DatabasePool '%s'.", GetDatabaseName()); + TC_LOG_INFO("sql.driver", "Closing down DatabasePool '{}'.", GetDatabaseName()); //! Closes the actualy MySQL connection. _connections[IDX_ASYNC].clear(); - TC_LOG_INFO("sql.driver", "Asynchronous connections on DatabasePool '%s' terminated. " + TC_LOG_INFO("sql.driver", "Asynchronous connections on DatabasePool '{}' terminated. " "Proceeding with synchronous connections.", GetDatabaseName()); @@ -134,7 +134,7 @@ void DatabaseWorkerPool<T>::Close() //! meaning there can be no concurrent access at this point. _connections[IDX_SYNCH].clear(); - TC_LOG_INFO("sql.driver", "All connections on DatabasePool '%s' closed.", GetDatabaseName()); + TC_LOG_INFO("sql.driver", "All connections on DatabasePool '{}' closed.", GetDatabaseName()); } template <class T> @@ -402,9 +402,9 @@ uint32 DatabaseWorkerPool<T>::OpenConnections(InternalIndex type, uint8 numConne #endif { #ifndef LIBMARIADB - TC_LOG_ERROR("sql.driver", "TrinityCore does not support MySQL versions below " MIN_MYSQL_SERVER_VERSION_STRING " (found id %u, need id >= %u), please update your MySQL server", connection->GetServerVersion(), MIN_MYSQL_SERVER_VERSION); + TC_LOG_ERROR("sql.driver", "TrinityCore does not support MySQL versions below " MIN_MYSQL_SERVER_VERSION_STRING " (found id {}, need id >= {}), please update your MySQL server", connection->GetServerVersion(), MIN_MYSQL_SERVER_VERSION); #else - TC_LOG_ERROR("sql.driver", "TrinityCore does not support MariaDB versions below " MIN_MARIADB_SERVER_VERSION_STRING " (found id %u, need id >= %u), please update your MySQL server", connection->GetServerVersion(), MIN_MARIADB_SERVER_VERSION); + TC_LOG_ERROR("sql.driver", "TrinityCore does not support MariaDB versions below " MIN_MARIADB_SERVER_VERSION_STRING " (found id {}, need id >= {}), please update your MySQL server", connection->GetServerVersion(), MIN_MARIADB_SERVER_VERSION); #endif return 1; @@ -448,7 +448,7 @@ T* DatabaseWorkerPool<T>::GetFreeConnection() { std::ostringstream ss; ss << boost::stacktrace::stacktrace(); - TC_LOG_WARN("sql.performances", "Sync query at:\n%s", ss.str().c_str()); + TC_LOG_WARN("sql.performances", "Sync query at:\n{}", ss.str()); } #endif diff --git a/src/server/database/Database/DatabaseWorkerPool.h b/src/server/database/Database/DatabaseWorkerPool.h index 66d5a55dffa..a0841d07529 100644 --- a/src/server/database/Database/DatabaseWorkerPool.h +++ b/src/server/database/Database/DatabaseWorkerPool.h @@ -72,13 +72,13 @@ class DatabaseWorkerPool //! Enqueues a one-way SQL operation in string format -with variable args- that will be executed asynchronously. //! This method should only be used for queries that are only executed once, e.g during startup. - template<typename Format, typename... Args> - void PExecute(Format&& sql, Args&&... args) + template<typename... Args> + void PExecute(Trinity::FormatString<Args...> sql, Args&&... args) { if (Trinity::IsFormatEmptyOrNull(sql)) return; - Execute(Trinity::StringFormat(std::forward<Format>(sql), std::forward<Args>(args)...).c_str()); + this->Execute(Trinity::StringFormat(sql, std::forward<Args>(args)...).c_str()); } //! Enqueues a one-way SQL operation in prepared statement format that will be executed asynchronously. @@ -95,13 +95,13 @@ class DatabaseWorkerPool //! Directly executes a one-way SQL operation in string format -with variable args-, that will block the calling thread until finished. //! This method should only be used for queries that are only executed once, e.g during startup. - template<typename Format, typename... Args> - void DirectPExecute(Format&& sql, Args&&... args) + template<typename... Args> + void DirectPExecute(Trinity::FormatString<Args...> sql, Args&&... args) { if (Trinity::IsFormatEmptyOrNull(sql)) return; - DirectExecute(Trinity::StringFormat(std::forward<Format>(sql), std::forward<Args>(args)...).c_str()); + this->DirectExecute(Trinity::StringFormat(sql, std::forward<Args>(args)...).c_str()); } //! Directly executes a one-way SQL operation in prepared statement format, that will block the calling thread until finished. @@ -118,24 +118,24 @@ class DatabaseWorkerPool //! Directly executes an SQL query in string format -with variable args- that will block the calling thread until finished. //! Returns reference counted auto pointer, no need for manual memory management in upper level code. - template<typename Format, typename... Args> - QueryResult PQuery(Format&& sql, T* conn, Args&&... args) + template<typename... Args> + QueryResult PQuery(Trinity::FormatString<Args...> sql, T* conn, Args&&... args) { if (Trinity::IsFormatEmptyOrNull(sql)) return QueryResult(nullptr); - return Query(Trinity::StringFormat(std::forward<Format>(sql), std::forward<Args>(args)...).c_str(), conn); + return this->Query(Trinity::StringFormat(sql, std::forward<Args>(args)...).c_str(), conn); } //! Directly executes an SQL query in string format -with variable args- that will block the calling thread until finished. //! Returns reference counted auto pointer, no need for manual memory management in upper level code. - template<typename Format, typename... Args> - QueryResult PQuery(Format&& sql, Args&&... args) + template<typename... Args> + QueryResult PQuery(Trinity::FormatString<Args...> sql, Args&&... args) { if (Trinity::IsFormatEmptyOrNull(sql)) return QueryResult(nullptr); - return Query(Trinity::StringFormat(std::forward<Format>(sql), std::forward<Args>(args)...).c_str()); + return this->Query(Trinity::StringFormat(sql, std::forward<Args>(args)...).c_str()); } //! Directly executes an SQL query in prepared format that will block the calling thread until finished. diff --git a/src/server/database/Database/Field.cpp b/src/server/database/Database/Field.cpp index 258bc2078fb..3713d2855d4 100644 --- a/src/server/database/Database/Field.cpp +++ b/src/server/database/Database/Field.cpp @@ -299,7 +299,7 @@ bool Field::IsNumeric() const void Field::LogWrongType(char const* getter) const { - TC_LOG_WARN("sql.sql", "Warning: %s on %s field %s.%s (%s.%s) at index %u.", + TC_LOG_WARN("sql.sql", "Warning: {} on {} field {}.{} ({}.{}) at index {}.", getter, meta->TypeName, meta->TableAlias, meta->Alias, meta->TableName, meta->Name, meta->Index); } diff --git a/src/server/database/Database/MySQLConnection.cpp b/src/server/database/Database/MySQLConnection.cpp index f36f9d93fd3..aa38d969a30 100644 --- a/src/server/database/Database/MySQLConnection.cpp +++ b/src/server/database/Database/MySQLConnection.cpp @@ -91,7 +91,7 @@ uint32 MySQLConnection::Open() mysqlInit = mysql_init(nullptr); if (!mysqlInit) { - TC_LOG_ERROR("sql.sql", "Could not initialize Mysql connection to database `%s`", m_connectionInfo.database.c_str()); + TC_LOG_ERROR("sql.sql", "Could not initialize Mysql connection to database `{}`", m_connectionInfo.database); return CR_UNKNOWN_ERROR; } @@ -156,14 +156,14 @@ uint32 MySQLConnection::Open() { if (!m_reconnecting) { - TC_LOG_INFO("sql.sql", "MySQL client library: %s", mysql_get_client_info()); - TC_LOG_INFO("sql.sql", "MySQL server ver: %s ", mysql_get_server_info(m_Mysql)); + TC_LOG_INFO("sql.sql", "MySQL client library: {}", mysql_get_client_info()); + TC_LOG_INFO("sql.sql", "MySQL server ver: {} ", mysql_get_server_info(m_Mysql)); // MySQL version above 5.1 IS required in both client and server and there is no known issue with different versions above 5.1 // if (mysql_get_server_version(m_Mysql) != mysql_get_client_version()) // TC_LOG_INFO("sql.sql", "[WARNING] MySQL client/server version mismatch; may conflict with behaviour of prepared statements."); } - TC_LOG_INFO("sql.sql", "Connected to MySQL database at %s", m_connectionInfo.host.c_str()); + TC_LOG_INFO("sql.sql", "Connected to MySQL database at {}", m_connectionInfo.host); mysql_autocommit(m_Mysql, 1); // set connection properties to UTF8 to properly handle locales for different @@ -173,7 +173,7 @@ uint32 MySQLConnection::Open() } else { - TC_LOG_ERROR("sql.sql", "Could not connect to MySQL database at %s: %s", m_connectionInfo.host.c_str(), mysql_error(mysqlInit)); + TC_LOG_ERROR("sql.sql", "Could not connect to MySQL database at {}: {}", m_connectionInfo.host, mysql_error(mysqlInit)); uint32 errorCode = mysql_errno(mysqlInit); mysql_close(mysqlInit); return errorCode; @@ -198,8 +198,8 @@ bool MySQLConnection::Execute(char const* sql) { uint32 lErrno = mysql_errno(m_Mysql); - TC_LOG_INFO("sql.sql", "SQL: %s", sql); - TC_LOG_ERROR("sql.sql", "[%u] %s", lErrno, mysql_error(m_Mysql)); + TC_LOG_INFO("sql.sql", "SQL: {}", sql); + TC_LOG_ERROR("sql.sql", "[{}] {}", lErrno, mysql_error(m_Mysql)); if (_HandleMySQLErrno(lErrno)) // If it returns true, an error was handled successfully (i.e. reconnection) return Execute(sql); // Try again @@ -207,7 +207,7 @@ bool MySQLConnection::Execute(char const* sql) return false; } else - TC_LOG_DEBUG("sql.sql", "[%u ms] SQL: %s", getMSTimeDiff(_s, getMSTime()), sql); + TC_LOG_DEBUG("sql.sql", "[{} ms] SQL: {}", getMSTimeDiff(_s, getMSTime()), sql); } return true; @@ -233,7 +233,7 @@ bool MySQLConnection::Execute(PreparedStatementBase* stmt) if (mysql_stmt_bind_param(msql_STMT, msql_BIND)) { uint32 lErrno = mysql_errno(m_Mysql); - TC_LOG_ERROR("sql.sql", "SQL(p): %s\n [ERROR]: [%u] %s", m_mStmt->getQueryString().c_str(), lErrno, mysql_stmt_error(msql_STMT)); + TC_LOG_ERROR("sql.sql", "SQL(p): {}\n [ERROR]: [{}] {}", m_mStmt->getQueryString(), lErrno, mysql_stmt_error(msql_STMT)); if (_HandleMySQLErrno(lErrno)) // If it returns true, an error was handled successfully (i.e. reconnection) return Execute(stmt); // Try again @@ -245,7 +245,7 @@ bool MySQLConnection::Execute(PreparedStatementBase* stmt) if (mysql_stmt_execute(msql_STMT)) { uint32 lErrno = mysql_errno(m_Mysql); - TC_LOG_ERROR("sql.sql", "SQL(p): %s\n [ERROR]: [%u] %s", m_mStmt->getQueryString().c_str(), lErrno, mysql_stmt_error(msql_STMT)); + TC_LOG_ERROR("sql.sql", "SQL(p): {}\n [ERROR]: [{}] {}", m_mStmt->getQueryString(), lErrno, mysql_stmt_error(msql_STMT)); if (_HandleMySQLErrno(lErrno)) // If it returns true, an error was handled successfully (i.e. reconnection) return Execute(stmt); // Try again @@ -254,7 +254,7 @@ bool MySQLConnection::Execute(PreparedStatementBase* stmt) return false; } - TC_LOG_DEBUG("sql.sql", "[%u ms] SQL(p): %s", getMSTimeDiff(_s, getMSTime()), m_mStmt->getQueryString().c_str()); + TC_LOG_DEBUG("sql.sql", "[{} ms] SQL(p): {}", getMSTimeDiff(_s, getMSTime()), m_mStmt->getQueryString()); m_mStmt->ClearParameters(); return true; @@ -281,7 +281,7 @@ bool MySQLConnection::_Query(PreparedStatementBase* stmt, MySQLPreparedStatement if (mysql_stmt_bind_param(msql_STMT, msql_BIND)) { uint32 lErrno = mysql_errno(m_Mysql); - TC_LOG_ERROR("sql.sql", "SQL(p): %s\n [ERROR]: [%u] %s", m_mStmt->getQueryString().c_str(), lErrno, mysql_stmt_error(msql_STMT)); + TC_LOG_ERROR("sql.sql", "SQL(p): {}\n [ERROR]: [{}] {}", m_mStmt->getQueryString(), lErrno, mysql_stmt_error(msql_STMT)); if (_HandleMySQLErrno(lErrno)) // If it returns true, an error was handled successfully (i.e. reconnection) return _Query(stmt, mysqlStmt, pResult, pRowCount, pFieldCount); // Try again @@ -293,8 +293,8 @@ bool MySQLConnection::_Query(PreparedStatementBase* stmt, MySQLPreparedStatement if (mysql_stmt_execute(msql_STMT)) { uint32 lErrno = mysql_errno(m_Mysql); - TC_LOG_ERROR("sql.sql", "SQL(p): %s\n [ERROR]: [%u] %s", - m_mStmt->getQueryString().c_str(), lErrno, mysql_stmt_error(msql_STMT)); + TC_LOG_ERROR("sql.sql", "SQL(p): {}\n [ERROR]: [{}] {}", + m_mStmt->getQueryString(), lErrno, mysql_stmt_error(msql_STMT)); if (_HandleMySQLErrno(lErrno)) // If it returns true, an error was handled successfully (i.e. reconnection) return _Query(stmt, mysqlStmt, pResult, pRowCount, pFieldCount); // Try again @@ -303,7 +303,7 @@ bool MySQLConnection::_Query(PreparedStatementBase* stmt, MySQLPreparedStatement return false; } - TC_LOG_DEBUG("sql.sql", "[%u ms] SQL(p): %s", getMSTimeDiff(_s, getMSTime()), m_mStmt->getQueryString().c_str()); + TC_LOG_DEBUG("sql.sql", "[{} ms] SQL(p): {}", getMSTimeDiff(_s, getMSTime()), m_mStmt->getQueryString()); m_mStmt->ClearParameters(); @@ -341,8 +341,8 @@ bool MySQLConnection::_Query(const char* sql, MySQLResult** pResult, MySQLField* if (mysql_query(m_Mysql, sql)) { uint32 lErrno = mysql_errno(m_Mysql); - TC_LOG_INFO("sql.sql", "SQL: %s", sql); - TC_LOG_ERROR("sql.sql", "[%u] %s", lErrno, mysql_error(m_Mysql)); + TC_LOG_INFO("sql.sql", "SQL: {}", sql); + TC_LOG_ERROR("sql.sql", "[{}] {}", lErrno, mysql_error(m_Mysql)); if (_HandleMySQLErrno(lErrno)) // If it returns true, an error was handled successfully (i.e. reconnection) return _Query(sql, pResult, pFields, pRowCount, pFieldCount); // We try again @@ -350,7 +350,7 @@ bool MySQLConnection::_Query(const char* sql, MySQLResult** pResult, MySQLField* return false; } else - TC_LOG_DEBUG("sql.sql", "[%u ms] SQL: %s", getMSTimeDiff(_s, getMSTime()), sql); + TC_LOG_DEBUG("sql.sql", "[{} ms] SQL: {}", getMSTimeDiff(_s, getMSTime()), sql); *pResult = reinterpret_cast<MySQLResult*>(mysql_store_result(m_Mysql)); *pRowCount = mysql_affected_rows(m_Mysql); @@ -405,7 +405,7 @@ int MySQLConnection::ExecuteTransaction(std::shared_ptr<TransactionBase> transac ASSERT(stmt); if (!Execute(stmt)) { - TC_LOG_WARN("sql.sql", "Transaction aborted. %u queries not executed.", (uint32)queries.size()); + TC_LOG_WARN("sql.sql", "Transaction aborted. {} queries not executed.", (uint32)queries.size()); int errorCode = GetLastError(); RollbackTransaction(); return errorCode; @@ -418,7 +418,7 @@ int MySQLConnection::ExecuteTransaction(std::shared_ptr<TransactionBase> transac ASSERT(sql); if (!Execute(sql)) { - TC_LOG_WARN("sql.sql", "Transaction aborted. %u queries not executed.", (uint32)queries.size()); + TC_LOG_WARN("sql.sql", "Transaction aborted. {} queries not executed.", (uint32)queries.size()); int errorCode = GetLastError(); RollbackTransaction(); return errorCode; @@ -473,8 +473,8 @@ MySQLPreparedStatement* MySQLConnection::GetPreparedStatement(uint32 index) index, m_stmts.size(), m_connectionInfo.database.c_str(), (m_connectionFlags & CONNECTION_ASYNC) ? "asynchronous" : "synchronous"); MySQLPreparedStatement* ret = m_stmts[index].get(); if (!ret) - TC_LOG_ERROR("sql.sql", "Could not fetch prepared statement %u on database `%s`, connection type: %s.", - index, m_connectionInfo.database.c_str(), (m_connectionFlags & CONNECTION_ASYNC) ? "asynchronous" : "synchronous"); + TC_LOG_ERROR("sql.sql", "Could not fetch prepared statement {} on database `{}`, connection type: {}.", + index, m_connectionInfo.database, (m_connectionFlags & CONNECTION_ASYNC) ? "asynchronous" : "synchronous"); return ret; } @@ -493,16 +493,16 @@ void MySQLConnection::PrepareStatement(uint32 index, std::string const& sql, Con MYSQL_STMT* stmt = mysql_stmt_init(m_Mysql); if (!stmt) { - TC_LOG_ERROR("sql.sql", "In mysql_stmt_init() id: %u, sql: \"%s\"", index, sql.c_str()); - TC_LOG_ERROR("sql.sql", "%s", mysql_error(m_Mysql)); + TC_LOG_ERROR("sql.sql", "In mysql_stmt_init() id: {}, sql: \"{}\"", index, sql); + TC_LOG_ERROR("sql.sql", "{}", mysql_error(m_Mysql)); m_prepareError = true; } else { if (mysql_stmt_prepare(stmt, sql.c_str(), static_cast<unsigned long>(sql.size()))) { - TC_LOG_ERROR("sql.sql", "In mysql_stmt_prepare() id: %u, sql: \"%s\"", index, sql.c_str()); - TC_LOG_ERROR("sql.sql", "%s", mysql_stmt_error(stmt)); + TC_LOG_ERROR("sql.sql", "In mysql_stmt_prepare() id: {}, sql: \"{}\"", index, sql); + TC_LOG_ERROR("sql.sql", "{}", mysql_stmt_error(stmt)); mysql_stmt_close(stmt); m_prepareError = true; } @@ -562,8 +562,8 @@ bool MySQLConnection::_HandleMySQLErrno(uint32 errNo, uint8 attempts /*= 5*/) std::abort(); } - TC_LOG_INFO("sql.sql", "Successfully reconnected to %s @%s:%s (%s).", - m_connectionInfo.database.c_str(), m_connectionInfo.host.c_str(), m_connectionInfo.port_or_socket.c_str(), + TC_LOG_INFO("sql.sql", "Successfully reconnected to {} @{}:{} ({}).", + m_connectionInfo.database, m_connectionInfo.host, m_connectionInfo.port_or_socket, (m_connectionFlags & CONNECTION_ASYNC) ? "asynchronous" : "synchronous"); m_reconnecting = false; @@ -610,7 +610,7 @@ bool MySQLConnection::_HandleMySQLErrno(uint32 errNo, uint8 attempts /*= 5*/) std::abort(); return false; default: - TC_LOG_ERROR("sql.sql", "Unhandled MySQL errno %u. Unexpected behaviour possible.", errNo); + TC_LOG_ERROR("sql.sql", "Unhandled MySQL errno {}. Unexpected behaviour possible.", errNo); return false; } } diff --git a/src/server/database/Database/MySQLPreparedStatement.cpp b/src/server/database/Database/MySQLPreparedStatement.cpp index 41f9bcba5b1..cbabd0bbf39 100644 --- a/src/server/database/Database/MySQLPreparedStatement.cpp +++ b/src/server/database/Database/MySQLPreparedStatement.cpp @@ -76,7 +76,7 @@ void MySQLPreparedStatement::BindParameters(PreparedStatementBase* stmt) } #ifdef _DEBUG if (pos < m_paramCount) - TC_LOG_WARN("sql.sql", "[WARNING]: BindParameters() for statement %u did not bind all allocated parameters", stmt->GetIndex()); + TC_LOG_WARN("sql.sql", "[WARNING]: BindParameters() for statement {} did not bind all allocated parameters", stmt->GetIndex()); #endif } @@ -94,7 +94,7 @@ void MySQLPreparedStatement::ClearParameters() static bool ParamenterIndexAssertFail(uint32 stmtIndex, uint8 index, uint32 paramCount) { - TC_LOG_ERROR("sql.driver", "Attempted to bind parameter %u%s on a PreparedStatement %u (statement has only %u parameters)", uint32(index) + 1, (index == 1 ? "st" : (index == 2 ? "nd" : (index == 3 ? "rd" : "nd"))), stmtIndex, paramCount); + TC_LOG_ERROR("sql.driver", "Attempted to bind parameter {}{} on a PreparedStatement {} (statement has only {} parameters)", uint32(index) + 1, (index == 1 ? "st" : (index == 2 ? "nd" : (index == 3 ? "rd" : "nd"))), stmtIndex, paramCount); return false; } @@ -104,7 +104,7 @@ void MySQLPreparedStatement::AssertValidIndex(uint8 index) ASSERT(index < m_paramCount || ParamenterIndexAssertFail(m_stmt->GetIndex(), index, m_paramCount)); if (m_paramsSet[index]) - TC_LOG_ERROR("sql.sql", "[ERROR] Prepared Statement (id: %u) trying to bind value on already bound index (%u).", m_stmt->GetIndex(), index); + TC_LOG_ERROR("sql.sql", "[ERROR] Prepared Statement (id: {}) trying to bind value on already bound index ({}).", m_stmt->GetIndex(), index); } void MySQLPreparedStatement::SetParameter(uint8 index, std::nullptr_t) diff --git a/src/server/database/Database/PreparedStatement.cpp b/src/server/database/Database/PreparedStatement.cpp index cd59b0c61d1..7f3dc0bba5e 100644 --- a/src/server/database/Database/PreparedStatement.cpp +++ b/src/server/database/Database/PreparedStatement.cpp @@ -186,7 +186,7 @@ template std::string PreparedStatementData::ToString<double>(double); std::string PreparedStatementData::ToString(std::string const& value) { - return fmt::format("'{}'", value); + return Trinity::StringFormat("'{}'", value); } std::string PreparedStatementData::ToString(std::vector<uint8> const& /*value*/) diff --git a/src/server/database/Database/QueryHolder.cpp b/src/server/database/Database/QueryHolder.cpp index a5c43b67c8a..7908c2c0206 100644 --- a/src/server/database/Database/QueryHolder.cpp +++ b/src/server/database/Database/QueryHolder.cpp @@ -26,7 +26,7 @@ bool SQLQueryHolderBase::SetPreparedQueryImpl(size_t index, PreparedStatementBas { if (m_queries.size() <= index) { - TC_LOG_ERROR("sql.sql", "Query index (%u) out of range (size: %u) for prepared statement", uint32(index), (uint32)m_queries.size()); + TC_LOG_ERROR("sql.sql", "Query index ({}) out of range (size: {}) for prepared statement", uint32(index), (uint32)m_queries.size()); return false; } diff --git a/src/server/database/Database/QueryResult.cpp b/src/server/database/Database/QueryResult.cpp index df07c773313..2ab20f392f2 100644 --- a/src/server/database/Database/QueryResult.cpp +++ b/src/server/database/Database/QueryResult.cpp @@ -69,7 +69,7 @@ static uint32 SizeForType(MYSQL_FIELD* field) MYSQL_TYPE_SET: */ default: - TC_LOG_WARN("sql.sql", "SQL::SizeForType(): invalid field type %u", uint32(field->type)); + TC_LOG_WARN("sql.sql", "SQL::SizeForType(): invalid field type {}", uint32(field->type)); return 0; } } @@ -111,7 +111,7 @@ DatabaseFieldTypes MysqlTypeToFieldType(enum_field_types type) case MYSQL_TYPE_VAR_STRING: return DatabaseFieldTypes::Binary; default: - TC_LOG_WARN("sql.sql", "MysqlTypeToFieldType(): invalid field type %u", uint32(type)); + TC_LOG_WARN("sql.sql", "MysqlTypeToFieldType(): invalid field type {}", uint32(type)); break; } @@ -211,7 +211,7 @@ m_metadataResult(result) //- This is where we store the (entire) resultset if (mysql_stmt_store_result(m_stmt)) { - TC_LOG_WARN("sql.sql", "%s:mysql_stmt_store_result, cannot bind result from MySQL server. Error: %s", __FUNCTION__, mysql_stmt_error(m_stmt)); + TC_LOG_WARN("sql.sql", "{}:mysql_stmt_store_result, cannot bind result from MySQL server. Error: {}", __FUNCTION__, mysql_stmt_error(m_stmt)); delete[] m_rBind; delete[] m_isNull; delete[] m_length; @@ -249,7 +249,7 @@ m_metadataResult(result) //- This is where we bind the bind the buffer to the statement if (mysql_stmt_bind_result(m_stmt, m_rBind)) { - TC_LOG_WARN("sql.sql", "%s:mysql_stmt_bind_result, cannot bind result from MySQL server. Error: %s", __FUNCTION__, mysql_stmt_error(m_stmt)); + TC_LOG_WARN("sql.sql", "{}:mysql_stmt_bind_result, cannot bind result from MySQL server. Error: {}", __FUNCTION__, mysql_stmt_error(m_stmt)); mysql_stmt_free_result(m_stmt); CleanUp(); delete[] m_isNull; @@ -338,7 +338,7 @@ bool ResultSet::NextRow() unsigned long* lengths = mysql_fetch_lengths(_result); if (!lengths) { - TC_LOG_WARN("sql.sql", "%s:mysql_fetch_lengths, cannot retrieve value lengths. Error %s.", __FUNCTION__, mysql_error(_result->handle)); + TC_LOG_WARN("sql.sql", "{}:mysql_fetch_lengths, cannot retrieve value lengths. Error {}.", __FUNCTION__, mysql_error(_result->handle)); CleanUp(); return false; } diff --git a/src/server/database/Database/Transaction.cpp b/src/server/database/Database/Transaction.cpp index 4f4767ece92..0ee1a8ef5cb 100644 --- a/src/server/database/Database/Transaction.cpp +++ b/src/server/database/Database/Transaction.cpp @@ -93,10 +93,10 @@ bool TransactionTask::Execute() if (!TryExecute()) return true; - TC_LOG_WARN("sql.sql", "Deadlocked SQL Transaction, retrying. Loop timer: %u ms, Thread Id: %s", loopDuration, threadId.c_str()); + TC_LOG_WARN("sql.sql", "Deadlocked SQL Transaction, retrying. Loop timer: {} ms, Thread Id: {}", loopDuration, threadId); } - TC_LOG_ERROR("sql.sql", "Fatal deadlocked SQL Transaction, it will not be retried anymore. Thread Id: %s", threadId.c_str()); + TC_LOG_ERROR("sql.sql", "Fatal deadlocked SQL Transaction, it will not be retried anymore. Thread Id: {}", threadId); } // Clean up now. @@ -144,10 +144,10 @@ bool TransactionWithResultTask::Execute() return true; } - TC_LOG_WARN("sql.sql", "Deadlocked SQL Transaction, retrying. Loop timer: %u ms, Thread Id: %s", loopDuration, threadId.c_str()); + TC_LOG_WARN("sql.sql", "Deadlocked SQL Transaction, retrying. Loop timer: {} ms, Thread Id: {}", loopDuration, threadId); } - TC_LOG_ERROR("sql.sql", "Fatal deadlocked SQL Transaction, it will not be retried anymore. Thread Id: %s", threadId.c_str()); + TC_LOG_ERROR("sql.sql", "Fatal deadlocked SQL Transaction, it will not be retried anymore. Thread Id: {}", threadId); } // Clean up now. diff --git a/src/server/database/Database/Transaction.h b/src/server/database/Database/Transaction.h index 205b06908fd..2d1ba4da14f 100644 --- a/src/server/database/Database/Transaction.h +++ b/src/server/database/Database/Transaction.h @@ -40,10 +40,10 @@ class TC_DATABASE_API TransactionBase virtual ~TransactionBase() { Cleanup(); } void Append(char const* sql); - template<typename Format, typename... Args> - void PAppend(Format&& sql, Args&&... args) + template<typename... Args> + void PAppend(Trinity::FormatString<Args...> sql, Args&&... args) { - Append(Trinity::StringFormat(std::forward<Format>(sql), std::forward<Args>(args)...).c_str()); + this->Append(Trinity::StringFormat(sql, std::forward<Args>(args)...).c_str()); } std::size_t GetSize() const { return m_queries.size(); } @@ -64,7 +64,7 @@ public: using TransactionBase::Append; void Append(PreparedStatement<T>* statement) { - AppendPreparedStatement(statement); + this->AppendPreparedStatement(statement); } }; |
