Core/Guilds: Use blocking queries at guild loading to ensure invalid data is removed before processing, removed prepared statements in loading guilds
This commit is contained in:
@@ -97,8 +97,11 @@ void GuildMgr::LoadGuilds()
|
||||
{
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_LOAD_GUILDS);
|
||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
||||
// 0 1 2 3 4 5 6
|
||||
QueryResult result = CharacterDatabase.Query("SELECT g.guildid, g.name, g.leaderguid, g.EmblemStyle, g.EmblemColor, g.BorderStyle, g.BorderColor, "
|
||||
// 7 8 9 10 11 12
|
||||
"g.BackgroundColor, g.info, g.motd, g.createdate, g.BankMoney, COUNT(gbt.guildid) "
|
||||
"FROM guild g LEFT JOIN guild_bank_tab gbt ON g.guildid = gbt.guildid GROUP BY g.guildid ORDER BY g.guildid ASC");
|
||||
|
||||
if (!result)
|
||||
{
|
||||
@@ -136,11 +139,10 @@ void GuildMgr::LoadGuilds()
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
// Delete orphaned guild rank entries before loading the valid ones
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_NONEXISTENT_GUILD_RANKS);
|
||||
CharacterDatabase.Execute(stmt);
|
||||
CharacterDatabase.DirectExecute("DELETE gr FROM guild_rank gr LEFT JOIN guild g ON gr.guildId = g.guildId WHERE g.guildId IS NULL");
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_LOAD_GUILD_RANKS);
|
||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
||||
// 0 1 2 3 4
|
||||
QueryResult result = CharacterDatabase.Query("SELECT guildid, rid, rname, rights, BankMoneyPerDay FROM guild_rank ORDER BY guildid ASC, rid ASC");
|
||||
|
||||
if (!result)
|
||||
{
|
||||
@@ -173,11 +175,17 @@ void GuildMgr::LoadGuilds()
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
// Delete orphaned guild member entries before loading the valid ones
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_NONEXISTENT_GUILD_MEMBERS);
|
||||
CharacterDatabase.Execute(stmt);
|
||||
CharacterDatabase.DirectExecute("DELETE gm FROM guild_member gm LEFT JOIN guild g ON gm.guildId = g.guildId WHERE g.guildId IS NULL");
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_LOAD_GUILD_MEMBERS);
|
||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
||||
// 0 1 2 3 4 5 6
|
||||
QueryResult result = CharacterDatabase.Query("SELECT guildid, gm.guid, rank, pnote, offnote, BankResetTimeMoney, BankRemMoney, "
|
||||
// 7 8 9 10 11 12
|
||||
"BankResetTimeTab0, BankRemSlotsTab0, BankResetTimeTab1, BankRemSlotsTab1, BankResetTimeTab2, BankRemSlotsTab2, "
|
||||
// 13 14 15 16 17 18
|
||||
"BankResetTimeTab3, BankRemSlotsTab3, BankResetTimeTab4, BankRemSlotsTab4, BankResetTimeTab5, BankRemSlotsTab5, "
|
||||
// 19 20 21 22 23 24
|
||||
"c.name, c.level, c.class, c.zone, c.account, c.logout_time "
|
||||
"FROM guild_member gm LEFT JOIN characters c ON c.guid = gm.guid ORDER BY guildid ASC");
|
||||
|
||||
if (!result)
|
||||
{
|
||||
@@ -211,11 +219,11 @@ void GuildMgr::LoadGuilds()
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
// Delete orphaned guild bank right entries before loading the valid ones
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_NONEXISTENT_GUILD_BANK_RIGHTS);
|
||||
CharacterDatabase.Execute(stmt);
|
||||
CharacterDatabase.DirectExecute("DELETE gbr FROM guild_bank_right gbr LEFT JOIN guild g ON gbr.guildId = g.guildId WHERE g.guildId IS NULL");
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_LOAD_GUILD_BANK_RIGHTS);
|
||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
||||
|
||||
// 0 1 2 3 4
|
||||
QueryResult result = CharacterDatabase.Query("SELECT guildid, TabId, rid, gbright, SlotPerDay FROM guild_bank_right ORDER BY guildid ASC, TabId ASC");
|
||||
|
||||
if (!result)
|
||||
{
|
||||
@@ -247,12 +255,10 @@ void GuildMgr::LoadGuilds()
|
||||
{
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_OLD_GUILD_EVENT_LOGS);
|
||||
stmt->setUInt32(0, sWorld->getIntConfig(CONFIG_GUILD_EVENT_LOG_COUNT));
|
||||
CharacterDatabase.Execute(stmt);
|
||||
CharacterDatabase.DirectPExecute("DELETE FROM guild_eventlog WHERE LogGuid > %u", sWorld->getIntConfig(CONFIG_GUILD_EVENT_LOG_COUNT));
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_LOAD_GUILD_EVENTLOGS);
|
||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
||||
// 0 1 2 3 4 5 6
|
||||
QueryResult result = CharacterDatabase.Query("SELECT guildid, LogGuid, EventType, PlayerGuid1, PlayerGuid2, NewRank, TimeStamp FROM guild_eventlog ORDER BY TimeStamp DESC, LogGuid DESC");
|
||||
|
||||
if (!result)
|
||||
{
|
||||
@@ -285,12 +291,10 @@ void GuildMgr::LoadGuilds()
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
// Remove log entries that exceed the number of allowed entries per guild
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_OLD_GUILD_BANK_EVENT_LOGS);
|
||||
stmt->setUInt32(0, sWorld->getIntConfig(CONFIG_GUILD_BANK_EVENT_LOG_COUNT));
|
||||
CharacterDatabase.Execute(stmt);
|
||||
CharacterDatabase.DirectPExecute("DELETE FROM guild_bank_eventlog WHERE LogGuid > %u", sWorld->getIntConfig(CONFIG_GUILD_BANK_EVENT_LOG_COUNT));
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_LOAD_GUILD_BANK_EVENTLOGS);
|
||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
||||
// 0 1 2 3 4 5 6 7 8
|
||||
QueryResult result = CharacterDatabase.Query("SELECT guildid, TabId, LogGuid, EventType, PlayerGuid, ItemOrMoney, ItemStackCount, DestTabId, TimeStamp FROM guild_bank_eventlog ORDER BY TimeStamp DESC, LogGuid DESC");
|
||||
|
||||
if (!result)
|
||||
{
|
||||
@@ -323,11 +327,10 @@ void GuildMgr::LoadGuilds()
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
// Delete orphaned guild bank tab entries before loading the valid ones
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_NONEXISTENT_GUILD_BANK_TABS);
|
||||
CharacterDatabase.Execute(stmt);
|
||||
CharacterDatabase.DirectExecute("DELETE gbt FROM guild_bank_tab gbt LEFT JOIN guild g ON gbt.guildId = g.guildId WHERE g.guildId IS NULL");
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_LOAD_GUILD_BANK_TABS);
|
||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
||||
// 0 1 2 3 4
|
||||
QueryResult result = CharacterDatabase.Query("SELECT guildid, TabId, TabName, TabIcon, TabText FROM guild_bank_tab ORDER BY guildid ASC, TabId ASC");
|
||||
|
||||
if (!result)
|
||||
{
|
||||
@@ -360,11 +363,12 @@ void GuildMgr::LoadGuilds()
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
// Delete orphan guild bank items
|
||||
PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_NONEXISTENT_GUILD_BANK_ITEMS);
|
||||
CharacterDatabase.Execute(stmt);
|
||||
CharacterDatabase.DirectExecute("DELETE gbi FROM guild_bank_item gbi LEFT JOIN guild g ON gbi.guildId = g.guildId WHERE g.guildId IS NULL");
|
||||
|
||||
stmt = CharacterDatabase.GetPreparedStatement(CHAR_LOAD_GUILD_BANK_ITEMS);
|
||||
PreparedQueryResult result = CharacterDatabase.Query(stmt);
|
||||
// 0 1 2 3 4 5 6 7 8 9 10
|
||||
QueryResult result = CharacterDatabase.Query("SELECT creatorGuid, giftCreatorGuid, count, duration, charges, flags, enchantments, randomPropertyId, durability, playedTime, text, "
|
||||
// 11 12 13 14 15
|
||||
"guildid, TabId, SlotId, item_guid, itemEntry FROM guild_bank_item gbi INNER JOIN item_instance ii ON gbi.item_guid = ii.guid");
|
||||
|
||||
if (!result)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user