aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Pools/PoolMgr.cpp40
-rw-r--r--src/server/shared/Database/Implementation/CharacterDatabase.cpp2
-rw-r--r--src/server/shared/Database/Implementation/CharacterDatabase.h2
-rw-r--r--src/server/shared/Database/Implementation/WorldDatabase.cpp1
-rw-r--r--src/server/shared/Database/Implementation/WorldDatabase.h1
5 files changed, 19 insertions, 27 deletions
diff --git a/src/server/game/Pools/PoolMgr.cpp b/src/server/game/Pools/PoolMgr.cpp
index 0d057a7ce4d..9eb21c63e56 100644
--- a/src/server/game/Pools/PoolMgr.cpp
+++ b/src/server/game/Pools/PoolMgr.cpp
@@ -818,7 +818,8 @@ void PoolMgr::LoadFromDB()
void PoolMgr::LoadQuestPools()
{
- QueryResult result = WorldDatabase.Query("SELECT entry, pool_entry FROM pool_quest");
+ PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_LOAD_QUEST_POOLS);
+ PreparedQueryResult result = WorldDatabase.Query(stmt);
mQuestSearchMap.clear();
mPoolQuestGroups.resize(max_pool_id + 1);
@@ -849,11 +850,10 @@ void PoolMgr::LoadQuestPools()
do
{
- Field* fields = result->Fetch();
bar.step();
- uint32 entry = fields[0].GetUInt32();
- uint32 pool_id = fields[1].GetUInt32();
+ uint32 entry = result->GetUInt32(0);
+ uint32 pool_id = result->GetUInt32(1);
Quest const* pQuest = sObjectMgr.GetQuestTemplate(entry);
if (!pQuest)
@@ -914,7 +914,7 @@ void PoolMgr::LoadQuestPools()
void PoolMgr::Initialize()
{
QueryResult result = WorldDatabase.Query("SELECT DISTINCT pool_template.entry, pool_pool.pool_id, pool_pool.mother_pool FROM pool_template LEFT JOIN game_event_pool ON pool_template.entry=game_event_pool.pool_entry LEFT JOIN pool_pool ON pool_template.entry=pool_pool.pool_id WHERE game_event_pool.pool_entry IS NULL");
- uint32 count=0;
+ uint32 count = 0;
if (result)
{
do
@@ -949,39 +949,25 @@ void PoolMgr::Initialize()
void PoolMgr::SaveQuestsToDB()
{
SQLTransaction trans = CharacterDatabase.BeginTransaction();
- std::ostringstream query;
- query << "DELETE FROM pool_quest_save WHERE pool_id IN (";
- bool first = true;
+
for (PoolGroupQuestMap::iterator itr = mPoolQuestGroups.begin(); itr != mPoolQuestGroups.end(); ++itr)
{
- if (!first)
- query << ",";
- first = false;
- query << itr->GetPoolId();
- }
- if (!first)
- {
- query << ")";
- trans->Append(query.str().c_str());
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_QUEST_POOL_SAVE);
+ stmt->setUInt32(0, itr->GetPoolId());
+ trans->Append(stmt);
}
- first = true;
- query.rdbuf()->str("");
- query << "INSERT INTO pool_quest_save (pool_id, quest_id) VALUES ";
for (SearchMap::iterator itr = mQuestSearchMap.begin(); itr != mQuestSearchMap.end(); ++itr)
{
if (IsSpawnedObject<Quest>(itr->first))
{
- if (!first)
- query << ",";
- first = false;
- query << "(" << itr->second << "," << itr->first << ")";
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_ADD_QUEST_POOL_SAVE);
+ stmt->setUInt32(0, itr->second);
+ stmt->setUInt32(1, itr->first);
+ trans->Append(stmt);
}
}
- if (!first)
- trans->Append(query.str().c_str());
-
CharacterDatabase.CommitTransaction(trans);
}
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
index e890be9a144..176ac45ae1a 100644
--- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
@@ -29,6 +29,8 @@ bool CharacterDatabaseConnection::Open(const std::string& infoString)
LOAD YOUR PREPARED STATEMENTS HERE
##################################
*/
+ PrepareStatement(CHAR_DEL_QUEST_POOL_SAVE, "DELETE FROM pool_quest_save WHERE pool_id = ?");
+ PrepareStatement(CHAR_ADD_QUEST_POOL_SAVE, "INSERT INTO pool_quest_save (pool_id, quest_id) VALUES (?, ?)");
return true;
}
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h
index 69378d34cad..cea2dfef416 100644
--- a/src/server/shared/Database/Implementation/CharacterDatabase.h
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.h
@@ -43,6 +43,8 @@ enum CharacterDatabaseStatements
name for a suiting suffix.
*/
+ CHAR_DEL_QUEST_POOL_SAVE,
+ CHAR_ADD_QUEST_POOL_SAVE,
MAX_CHARACTERDATABASE_STATEMENTS,
};
diff --git a/src/server/shared/Database/Implementation/WorldDatabase.cpp b/src/server/shared/Database/Implementation/WorldDatabase.cpp
index 12383490e91..9dbd8a400be 100644
--- a/src/server/shared/Database/Implementation/WorldDatabase.cpp
+++ b/src/server/shared/Database/Implementation/WorldDatabase.cpp
@@ -32,6 +32,7 @@ bool WorldDatabaseConnection::Open(const std::string& infoString)
*/
PrepareStatement(WORLD_DEL_CRESPAWNTIME, "DELETE FROM creature_respawn WHERE guid = ? AND instance = ?");
PrepareStatement(WORLD_ADD_CRESPAWNTIME, "INSERT INTO creature_respawn VALUES (?, ?, ?)");
+ PrepareStatement(WORLD_LOAD_QUEST_POOLS, "SELECT entry, pool_entry FROM pool_quest");
return true;
}
diff --git a/src/server/shared/Database/Implementation/WorldDatabase.h b/src/server/shared/Database/Implementation/WorldDatabase.h
index 470ea1c6195..7f909d0de23 100644
--- a/src/server/shared/Database/Implementation/WorldDatabase.h
+++ b/src/server/shared/Database/Implementation/WorldDatabase.h
@@ -45,6 +45,7 @@ enum WorldDatabaseStatements
WORLD_DEL_CRESPAWNTIME,
WORLD_ADD_CRESPAWNTIME,
+ WORLD_LOAD_QUEST_POOLS,
MAX_WORLDDATABASE_STATEMENTS,
};