From f9b4f686c83bcc97fad84f1d8775963c4a108541 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 7 Nov 2016 10:55:29 +0100 Subject: Core/Scenarios: Removed a bad usage of blocking db queries when saving scenario to db --- src/server/game/Scenarios/InstanceScenario.cpp | 33 +++++++++----------------- 1 file changed, 11 insertions(+), 22 deletions(-) (limited to 'src/server/game/Scenarios/InstanceScenario.cpp') diff --git a/src/server/game/Scenarios/InstanceScenario.cpp b/src/server/game/Scenarios/InstanceScenario.cpp index 60f3a364af5..f8c9959d3fd 100644 --- a/src/server/game/Scenarios/InstanceScenario.cpp +++ b/src/server/game/Scenarios/InstanceScenario.cpp @@ -20,7 +20,7 @@ #include "InstanceSaveMgr.h" #include "ObjectMgr.h" -InstanceScenario::InstanceScenario(Map* map, ScenarioData const* scenarioData) : Scenario(scenarioData), _map(map) +InstanceScenario::InstanceScenario(Map const* map, ScenarioData const* scenarioData) : Scenario(scenarioData), _map(map) { ASSERT(_map); LoadInstanceData(_map->GetInstanceId()); @@ -65,28 +65,17 @@ void InstanceScenario::SaveToDB() if (iter->second.Counter) { - PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_SCENARIO_INSTANCE_CRITERIA); + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_SCENARIO_INSTANCE_CRITERIA); stmt->setUInt32(0, id); stmt->setUInt32(1, iter->first); - PreparedQueryResult result = CharacterDatabase.Query(stmt); - if (result) - { - stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPD_SCENARIO_INSTANCE_CRITERIA); - stmt->setUInt64(0, iter->second.Counter); - stmt->setUInt32(1, uint32(iter->second.Date)); - stmt->setUInt32(2, id); - stmt->setUInt32(3, iter->first); - trans->Append(stmt); - } - else - { - stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_SCENARIO_INSTANCE_CRITERIA); - stmt->setUInt32(0, id); - stmt->setUInt32(1, iter->first); - stmt->setUInt64(2, iter->second.Counter); - stmt->setUInt32(3, uint32(iter->second.Date)); - trans->Append(stmt); - } + trans->Append(stmt); + + stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_SCENARIO_INSTANCE_CRITERIA); + stmt->setUInt32(0, id); + stmt->setUInt32(1, iter->first); + stmt->setUInt64(2, iter->second.Counter); + stmt->setUInt32(3, uint32(iter->second.Date)); + trans->Append(stmt); } iter->second.Changed = false; @@ -120,7 +109,7 @@ void InstanceScenario::LoadInstanceData(uint32 instanceId) // Removing non-existing criteria data for all instances TC_LOG_ERROR("criteria.instancescenarios", "Removing scenario criteria %u data from the table `instance_scenario_progress`.", id); - stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_INVALID_SCENARIO_INSTANCE_CRITERIA); + stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_SCENARIO_INSTANCE_CRITERIA); stmt->setUInt32(0, instanceId); stmt->setUInt32(1, uint32(id)); trans->Append(stmt); -- cgit v1.2.3