diff options
author | ariel- <ariel-@users.noreply.github.com> | 2017-01-29 14:00:19 -0300 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2019-07-21 21:06:54 +0200 |
commit | 26fe9496191225c8300ac57c07e9380193ec2c54 (patch) | |
tree | 398fd719267e5136f8b1cc6ef5a094a1b1c3cb13 /src | |
parent | 192f08824863d8ac5db9051fa848908a6eafdde4 (diff) |
Core/Server: fix duplicated inserts into tutorials table for newly created characters
(cherrypicked from 60dd803bbe01283b15e2b2c5b02d8f857b96745a)
Diffstat (limited to 'src')
3 files changed, 4 insertions, 2 deletions
diff --git a/src/server/database/Database/Implementation/CharacterDatabase.cpp b/src/server/database/Database/Implementation/CharacterDatabase.cpp index 2b32f9f0a60..b05af92a05e 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/database/Database/Implementation/CharacterDatabase.cpp @@ -318,7 +318,6 @@ void CharacterDatabaseConnection::DoPrepareStatements() // Tutorials PrepareStatement(CHAR_SEL_TUTORIALS, "SELECT tut0, tut1, tut2, tut3, tut4, tut5, tut6, tut7 FROM account_tutorial WHERE accountId = ?", CONNECTION_ASYNC); - PrepareStatement(CHAR_SEL_HAS_TUTORIALS, "SELECT 1 FROM account_tutorial WHERE accountId = ?", CONNECTION_SYNCH); PrepareStatement(CHAR_INS_TUTORIALS, "INSERT INTO account_tutorial(tut0, tut1, tut2, tut3, tut4, tut5, tut6, tut7, accountId) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC); PrepareStatement(CHAR_UPD_TUTORIALS, "UPDATE account_tutorial SET tut0 = ?, tut1 = ?, tut2 = ?, tut3 = ?, tut4 = ?, tut5 = ?, tut6 = ?, tut7 = ? WHERE accountId = ?", CONNECTION_ASYNC); PrepareStatement(CHAR_DEL_TUTORIALS, "DELETE FROM account_tutorial WHERE accountId = ?", CONNECTION_ASYNC); diff --git a/src/server/database/Database/Implementation/CharacterDatabase.h b/src/server/database/Database/Implementation/CharacterDatabase.h index 306f545540a..fa2f0071a23 100644 --- a/src/server/database/Database/Implementation/CharacterDatabase.h +++ b/src/server/database/Database/Implementation/CharacterDatabase.h @@ -252,7 +252,6 @@ enum CharacterDatabaseStatements : uint32 CHAR_DEL_PLAYER_ACCOUNT_DATA, CHAR_SEL_TUTORIALS, - CHAR_SEL_HAS_TUTORIALS, CHAR_INS_TUTORIALS, CHAR_UPD_TUTORIALS, CHAR_DEL_TUTORIALS, diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index f59c652b9a0..486cc889320 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -830,6 +830,10 @@ void WorldSession::SaveTutorialsData(SQLTransaction& trans) stmt->setUInt32(MAX_ACCOUNT_TUTORIAL_VALUES, GetAccountId()); trans->Append(stmt); + // now has, set flag so next save uses update query + if (!hasTutorialsInDB) + _tutorialsChanged |= TUTORIALS_FLAG_LOADED_FROM_DB; + _tutorialsChanged &= ~TUTORIALS_FLAG_CHANGED; } |