aboutsummaryrefslogtreecommitdiff
path: root/src/server/shared/Database/MySQLConnection.cpp
AgeCommit message (Collapse)Author
2015-08-21Core/Build: Merge common library and move database out of sharedStormBytePP
2015-03-29Core/Database: Return an unknown error code instead of false (0) if ↵Naios
mysql_init failed. * Thanks @et65 for noticing. * ref #14139
2015-03-29Core/Database: Fix a mistake in 54ee5267244acac16Naios
* Also use proper errno instead of 0 when reconnecting. * Thanks @et65 for reporting * ref #14139
2015-03-28Core/Database Improve commit 39bdd06446dcNaios
* found a better way where no cast is needed. * ref #14430
2015-03-27Core/Database: Prepare statements at reconnect.Naios
* Closes #14430
2015-03-21Core/Updates: Add an automatic database update system. Automatically detects ↵Naios
new and edited sql updates through file lists and hashing. Detects renames, deletes and is able to create and auto import full databases. * cleanups in main.cpp of world & bnetserver * refactoring in DatabaseWorkerPool.h & MySQLConnection.cpp Make sure you re-run cmake, because boost::iostreams was added as dependency. Maybe you need to install libboost-iostreams1.55-dev on unix as well. Import every update manual until (included) those INSERT IGNORE updates for each database. Thanks DDuarte and Shauren for your amazing ideas, help and advises. In hope that nobody gets a "Your database structure is not up to date..." anymore ,-) Signed-off-by: Naios <naios-dev@live.de> Signed-off-by: Nayd <dnpd.dd@gmail.com>
2015-02-04Shared/Database: Fix transactions not being recommitted on dead-lock errorjackpoz
Fix transactions not being recommitted on dead-lock error (error code 1213) because of calling http://dev.mysql.com/doc/refman/5.0/en/mysql-errno.html after sending the ROLLBACK command. This way the returned error code was related to the ROLLBACK command, not the failed transaction. (cherry picked from commit d4db0c15c7e59f7139619720be3c26a48e6ff259)
2015-01-01Update copyright note for 2015Vincent-Michael
Happy new year
2014-09-19Core/Misc: Multiple static analysis issues fixed (small optimizations and ↵DDuarte
clear code)
2014-09-10Core/DB: Fix crash on shutdownjackpoz
Fix race condition crash on shutdown, closing MySQL connections with queries still being executed
2014-08-10Resolve shutdown crash/leak if MySQL server is not runningleak
Fixes #12734
2014-08-09Core/Server: Use nullptr instead of 0 where pointers are expectedDDuarte
2014-06-30Replaced ACE_Task_Base based DatabaseWorker with PCQleak
Note: Not exactly sure how shutdown should be handled, currently the queue clears itself out before shutting down This might need to be changed if the queue should be fully processed before being deleted
2014-06-24Core/Databases: Removed ACE dependencies on some of the database handling code.Subv
2014-01-01Update copyright note for 2014.Vincent_Michael
Happy new year.
2013-11-08Core/Logging: Remove LOG_FILTER_XXX defines with it's value (remember logger ↵Spp
names are case-sensitive)
2013-10-28Core/Code: Unify [more] codestyle for brackets: )\n{\n} to ) { }.leguybrush
2013-05-18Reverted part of 8be181c7e60daf9833044da61b379c2136892c37 that was not ↵Shauren
supposed to be pushed
2013-05-17Core/Misc: Fixed a bunch of issues found by static analysisShauren
2013-05-13Core/Logging: Performance-related tweaks to logging systemSpp
All sLog->out* functions (except outCommand atm) are replaced with TC_LOG_* macros. Memleak fix
2013-03-08First step of comment style refactoring to doxygen-style.Nefarion
2013-02-20Core/DBLayer: Comment out MySQL client/server version mismatch warningNay
MySQL version above 5.1 IS required in both client and server and there is no known issue with different versions above 5.1
2013-01-02Core/Mysql: Multiple changesSpp
- added support for setting NULL column values to MySQL wrapper in core - replaced nonstandard strdup function and manual memory management with std::string - fixed bug in MySQLPreparedStatement::getQueryString method, it failed when string parameter contained embedded '?' symbols - fixed memory leak in MySQLPreparedStatement::setString method
2013-01-01Update copyright note for 2013.Vincent_Michael
Happy new year.
2012-11-27Core/Misc: Set mode 0644 for filesSpp
2012-08-06Core/SQL: Kill core if error 1064 is triggered (error code 1064 you have an ↵Spp
error in your sql syntax). This means the sql has an build error and core fix is needed
2012-08-03Fix compile under windowsSpp
2012-08-03Core/Logging: Add Asyncronous logging with Loggers ("What to log") and ↵Spp
Appenders ("Where to log") system. Will allow to select to full log some parts of core while others are not even logged. - Logging System is asyncronous to improve performance. - Each msg and Logger has a Log Type and Log Level assigned. Each msg is assigned the Logger of same Log Type or "root" Logger is selected if there is no Logger configured for the given Log Type - Loggers have a list of Appenders to send the msg to. The Msg in the Logger is not sent to Appenders if the msg LogLevel is lower than Logger LogLevel. - There are three (at the moment) types of Appenders: Console, File or DB (this is WIP, not working ATM). Msg is not written to the resource if msg LogLevel is lower than Appender LogLevel. - Appender and Console Log levels can be changed while server is active with command '.set loglevel (a/l) name level' Explanation of use with Sample config: Appender.Console.Type=1 (1 = Console) Appender.Console.Level=2 (2 = Debug) Appender.Server.Type=2 (2 = File) Appender.Server.Level=3 (3 = Info) Appender.Server.File=Server.log Appender.SQL.Type=2 (2 = File) Appender.SQL.Level=1 (1 = Trace) Appender.SQL.File=sql.log Appenders=Console Server (NOTE: SQL has not been included here... that will make core ignore the config for "SQL" as it's not in this list) Logger.root.Type=0 (0 = Default - if it's not created by config, server will create it with LogLevel = DISABLED) Logger.root.Level=5 (5 = Error) Logger.root.Appenders=Console Logger.SQL.Type=26 (26 = SQL) Logger.SQL.Level=3 (2 = Debug) Logger.SQL.Appenders=Console Server SQL Logger.SomeRandomName.Type=24 (24 = Guild) Logger.SomeRandomName.Level=5 (5 = Error) Loggers=root SQL SomeRandomName * At loading Appender SQL will be ignored, as it's not present on "Appenders" * sLog->outDebug(LOG_FILTER_GUILD, "Some log msg related to Guilds") - Msg is sent to Logger of Type LOG_FILTER_GUILD (24). Logger with name SomeRandomName is found but it's LogLevel = 5 and Msg LogLevel=2... Msg is not logged * sLog->outError(LOG_FILTER_GUILD, "Some error log msg related to Guilds") - Msg is sent to Logger of Type LOG_FILTER_GUILD (24). Logger with name SomeRandomeName is found with proper LogLevel but Logger does not have any Appenders assigned to that logger... Msg is not logged * sLog->outDebug(LOG_FILTER_SQL, "Some msg related to SQLs") - Msg is sent to Logger SQL (matches type), as it matches LogLevel the msg is sent to Appenders Console, Server and SQL - Appender Console has lower Log Level: Msg is logged to Console - Appender Server has higher Log Level: Msg is not logged to file - Appender SQL has lower Log Level: Msg is logged to file sql.log * sLog->outDebug(LOG_FILTER_BATTLEGROUND, "Some msg related to Battelgrounds") - Msg is sent to Logger root (Type 0) as no Logger was found with Type LOG_FILTER_BATTLEGROUND (13). As Logger has higher LogLevel msg is not sent to any appender * sLog->outError(LOG_FILTER_BATTLEGROUND, "Some error msg related to Battelgrounds") - Msg is sent to Logger root (Type 0) as no Logger was found with Type LOG_FILTER_BATTLEGROUND (13). Msg has lower LogLevel and is sent to Appender Console - Appender Console has lower LogLevel: Msg is logged to Console
2012-03-27Core/DB Layer: - Fix "Thread #1 unlocked a not-locked lock at 0x6D56E90" ↵Machiavelli
helgrind error (thanks to Aokromes for logs). Cause was unlocking MySQL connection on shutdown, but concurrent access at this point is not required. - Remove redundant locking in PingOperation. Since these are delayed to async threads with their own MySQL connection, no concurrent access here either. - Codestyle cleanup - Documentation refining
2012-03-26Partial revert of "Core/DB Layer: Fix a memory leak.", mysql library related ↵Machiavelli
stuff. Original memory leak fix is still in place.
2012-03-26Core/DB Layer: Fix a memory leak.Machiavelli
2012-01-01Update headers for 2012. HAPPY NEW YEAR!!!kiper
2011-12-13Core/DBLayer: Terminate process if table/database structure is not ↵Machiavelli
compatible with the core. This will significantly reduce the amount of PEBCAK help and support threads on our forums. Also added a 10 second window to WPFatal for users who never heard of command line before to read the error prior to process termination.
2011-06-18Whitespace cleanups...click
2011-05-24Core/DBLayer: Fix transaction crash.Machiavelli
2011-05-23Fix crash added in 402198Machiavelli
2011-05-23Core/DBLayer: Proper core-side handling of MySQL errno 1213 to prevent a ↵Machiavelli
snowballeffect (until innodb_lock_wait_timeout)
2011-04-29Add spaces after commasleak
2011-04-07 Core/DBLayer: make use of return result of Connection::Open method and ↵Azazel
allow core to output all the errors in prepared statements instead of aborting on first error.
2011-02-20Core/Log: Implement log masks for debug log level, to allow selective debug ↵Machiavelli
output. Update your worldserver.conf.
2011-01-26Core/DBLayer: Replace prepared statement arrays with a map to avoid ↵leak
asynchronous indexes at query logging or error output - Add values to prepared statement query log messages - Killed a bit Engrish and trailing white whitespaces
2011-01-13Core/DBLayer:Machiavelli
- Implement DatabaseWorkerPool::DirectCommitTransaction for synchronous transaction execution (as opposed to asynchronous/enqueued). - Add MySQL errno 1213 "Deadlock found when trying to get lock; try restarting transaction" handler. If 1213 is called the core will retry to directly execute the transaction a maximum of 5 times.
2011-01-11Core: Fix some warningsSpp
2011-01-08Remove unintended change from previous rev's copypaste work.Machiavelli
2011-01-08Core/DBLayer: Define prepared statements in an array per database instead of ↵Machiavelli
explicit calls to MySQL::PrepareStatement. Now the core will show the raw query (without bound arguments) in related log entries instead of PreparedStatement id: X on database Y.
2011-01-06Core/DBLayer: Add MySQL errno 1054 to ignored error messages.Machiavelli
2011-01-01Update copyright note for 2011.Machiavelli
Happy new year.
2010-12-23Core: Removed more operator workarounds for ACE_Singleton (missed previously ↵Shauren
because of inconsistent naming) --HG-- branch : trunk
2010-12-19Core/DBLayer: Add MySQL errno´s 1058 and 1062 (related to ↵Machiavelli
query-correctness) to handled errno´s (=doesn´t require further actions from the core) --HG-- branch : trunk
2010-12-19Core:DBLayer: Fix warning on GCCclick
--HG-- branch : trunk