[11047] Execute transactions in ObjectMgr::PackGroupIds() synchronously on server startup

Signed-off-by: Ambal <pogrebniak@gala.net>
This commit is contained in:
Ambal 2011-01-19 22:55:56 +02:00
parent f2a8606b93
commit 2890e0f45a
2 changed files with 7 additions and 1 deletions

View file

@ -5595,8 +5595,10 @@ void ObjectMgr::PackGroupIds()
if (id == 0)
{
CharacterDatabase.BeginTransaction();
CharacterDatabase.PExecute("DELETE FROM groups WHERE groupId = '%u'", id);
CharacterDatabase.PExecute("DELETE FROM group_member WHERE groupId = '%u'", id);
CharacterDatabase.CommitTransactionDirect();
continue;
}
@ -5616,8 +5618,10 @@ void ObjectMgr::PackGroupIds()
if (*i != groupId)
{
// remap group id
CharacterDatabase.BeginTransaction();
CharacterDatabase.PExecute("UPDATE groups SET groupId = '%u' WHERE groupId = '%u'", groupId, *i);
CharacterDatabase.PExecute("UPDATE group_member SET groupId = '%u' WHERE groupId = '%u'", groupId, *i);
CharacterDatabase.CommitTransactionDirect();
}
++groupId;
@ -5661,10 +5665,12 @@ void ObjectMgr::SetHighestGuids()
}
// Cleanup other tables from nonexistent guids (>=m_hiItemGuid)
CharacterDatabase.BeginTransaction();
CharacterDatabase.PExecute("DELETE FROM character_inventory WHERE item >= '%u'", m_ItemGuids.GetNextAfterMaxUsed());
CharacterDatabase.PExecute("DELETE FROM mail_items WHERE item_guid >= '%u'", m_ItemGuids.GetNextAfterMaxUsed());
CharacterDatabase.PExecute("DELETE FROM auction WHERE itemguid >= '%u'", m_ItemGuids.GetNextAfterMaxUsed());
CharacterDatabase.PExecute("DELETE FROM guild_bank_item WHERE item_guid >= '%u'", m_ItemGuids.GetNextAfterMaxUsed());
CharacterDatabase.CommitTransactionDirect();
result = WorldDatabase.Query("SELECT MAX(guid) FROM gameobject" );
if( result )