diff options
-rw-r--r-- | sql/characters.sql | 29 | ||||
-rw-r--r-- | sql/updates/7905_characters_character_equipmentsets.sql | 1 | ||||
-rw-r--r-- | sql/updates/7905_characters_corpse.sql | 2 | ||||
-rw-r--r-- | sql/updates/7905_characters_group_member.sql | 1 | ||||
-rw-r--r-- | sql/updates/7905_characters_guild.sql | 7 | ||||
-rw-r--r-- | sql/updates/7905_characters_petition.sql | 2 | ||||
-rw-r--r-- | src/game/GlobalEvents.cpp | 2 | ||||
-rw-r--r-- | src/game/Player.cpp | 3 |
8 files changed, 36 insertions, 11 deletions
diff --git a/sql/characters.sql b/sql/characters.sql index 4242d535997..0d5158a1f09 100644 --- a/sql/characters.sql +++ b/sql/characters.sql @@ -635,7 +635,8 @@ CREATE TABLE `character_equipmentsets` ( `item17` int(11) NOT NULL default '0', `item18` int(11) NOT NULL default '0', PRIMARY KEY (`setguid`), - UNIQUE KEY `idx_set` (`guid`,`setguid`,`setindex`) + UNIQUE KEY `idx_set` (`guid`,`setguid`,`setindex`), + INDEX `Idx_setindex` (`setindex`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; @@ -1120,7 +1121,9 @@ CREATE TABLE `corpse` ( `instance` int(11) unsigned NOT NULL default '0', PRIMARY KEY (`guid`), KEY `idx_type` (`corpse_type`), - KEY `instance` (`instance`) + KEY `instance` (`instance`), + INDEX `Idx_player`(`player`), + INDEX `Idx_time`(`time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Death System'; /*!40101 SET character_set_client = @saved_cs_client */; @@ -1252,7 +1255,8 @@ CREATE TABLE `group_member` ( `memberGuid` int(11) unsigned NOT NULL, `memberFlags` tinyint(2) unsigned NOT NULL, `subgroup` smallint(6) unsigned NOT NULL, - PRIMARY KEY (`leaderGuid`,`memberGuid`) + PRIMARY KEY (`leaderGuid`,`memberGuid`), + INDEX `Idx_memberGuid`(`memberGuid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Groups'; /*!40101 SET character_set_client = @saved_cs_client */; @@ -1352,7 +1356,9 @@ CREATE TABLE `guild_bank_eventlog` ( `DestTabId` tinyint(1) unsigned NOT NULL default '0' COMMENT 'Destination Tab Id', `TimeStamp` bigint(20) unsigned NOT NULL default '0' COMMENT 'Event UNIX time', PRIMARY KEY (`guildid`,`LogGuid`,`TabId`), - KEY `guildid_key` (`guildid`) + KEY `guildid_key` (`guildid`), + INDEX `Idx_PlayerGuid`(`PlayerGuid`), + INDEX `Idx_LogGuid`(`LogGuid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; @@ -1379,7 +1385,8 @@ CREATE TABLE `guild_bank_item` ( `item_guid` int(11) unsigned NOT NULL default '0', `item_entry` int(11) unsigned NOT NULL default '0', PRIMARY KEY (`guildid`,`tabid`,`slotid`), - KEY `guildid_key` (`guildid`) + KEY `guildid_key` (`guildid`), + INDEX `Idx_item_guid`(`item_guid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; @@ -1461,7 +1468,10 @@ CREATE TABLE `guild_eventlog` ( `PlayerGuid2` int(11) NOT NULL COMMENT 'Player 2', `NewRank` tinyint(2) NOT NULL COMMENT 'New rank(in case promotion/demotion)', `TimeStamp` bigint(20) NOT NULL COMMENT 'Event UNIX time', - PRIMARY KEY (`guildid`, `LogGuid`) + PRIMARY KEY (`guildid`, `LogGuid`), + INDEX `Idx_PlayerGuid1`(`PlayerGuid1`), + INDEX `Idx_PlayerGuid2`(`PlayerGuid2`), + INDEX `Idx_LogGuid`(`LogGuid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT 'Guild Eventlog'; /*!40101 SET character_set_client = @saved_cs_client */; @@ -1529,7 +1539,8 @@ CREATE TABLE `guild_rank` ( `rname` varchar(255) NOT NULL default '', `rights` int(3) unsigned NOT NULL default '0', `BankMoneyPerDay` int(11) unsigned NOT NULL default '0', - PRIMARY KEY (`guildid`,`rid`) + PRIMARY KEY (`guildid`,`rid`), + INDEX `Idx_rid`(`rid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Guild System'; /*!40101 SET character_set_client = @saved_cs_client */; @@ -1830,7 +1841,9 @@ CREATE TABLE `petition_sign` ( `playerguid` int(11) unsigned NOT NULL default '0', `player_account` int(11) unsigned NOT NULL default '0', `type` int(10) unsigned NOT NULL default '0', - PRIMARY KEY (`petitionguid`,`playerguid`) + PRIMARY KEY (`petitionguid`,`playerguid`), + INDEX `Idx_playerguid`(`playerguid`), + INDEX `Idx_ownerguid`(`ownerguid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Guild System'; /*!40101 SET character_set_client = @saved_cs_client */; diff --git a/sql/updates/7905_characters_character_equipmentsets.sql b/sql/updates/7905_characters_character_equipmentsets.sql new file mode 100644 index 00000000000..1617c61f1ee --- /dev/null +++ b/sql/updates/7905_characters_character_equipmentsets.sql @@ -0,0 +1 @@ +ALTER TABLE `character_equipmentsets` ADD INDEX `Idx_setindex` (`setindex`); diff --git a/sql/updates/7905_characters_corpse.sql b/sql/updates/7905_characters_corpse.sql new file mode 100644 index 00000000000..061c90e9bfc --- /dev/null +++ b/sql/updates/7905_characters_corpse.sql @@ -0,0 +1,2 @@ +ALTER TABLE `corpse` ADD INDEX `Idx_player`(`player`); +ALTER TABLE `corpse` ADD INDEX `Idx_time`(`time`); diff --git a/sql/updates/7905_characters_group_member.sql b/sql/updates/7905_characters_group_member.sql new file mode 100644 index 00000000000..7c7c3eace14 --- /dev/null +++ b/sql/updates/7905_characters_group_member.sql @@ -0,0 +1 @@ +ALTER TABLE `group_member` ADD INDEX `Idx_memberGuid`(`memberGuid`); diff --git a/sql/updates/7905_characters_guild.sql b/sql/updates/7905_characters_guild.sql new file mode 100644 index 00000000000..451df6671db --- /dev/null +++ b/sql/updates/7905_characters_guild.sql @@ -0,0 +1,7 @@ +ALTER TABLE `guild_eventlog` ADD INDEX `Idx_PlayerGuid1`(`PlayerGuid1`); +ALTER TABLE `guild_eventlog` ADD INDEX `Idx_PlayerGuid2`(`PlayerGuid2`); +ALTER TABLE `guild_eventlog` ADD INDEX `Idx_LogGuid`(`LogGuid`); +ALTER TABLE `guild_bank_eventlog` ADD INDEX `Idx_PlayerGuid`(`PlayerGuid`); +ALTER TABLE `guild_bank_eventlog` ADD INDEX `Idx_LogGuid`(`LogGuid`); +ALTER TABLE `guild_bank_item` ADD INDEX `Idx_item_guid`(`item_guid`); +ALTER TABLE `guild_rank` ADD INDEX `Idx_rid`(`rid`); diff --git a/sql/updates/7905_characters_petition.sql b/sql/updates/7905_characters_petition.sql new file mode 100644 index 00000000000..07132963b56 --- /dev/null +++ b/sql/updates/7905_characters_petition.sql @@ -0,0 +1,2 @@ +ALTER TABLE `petition_sign` ADD INDEX `Idx_playerguid`(`playerguid`); +ALTER TABLE `petition_sign` ADD INDEX `Idx_ownerguid`(`ownerguid`);
\ No newline at end of file diff --git a/src/game/GlobalEvents.cpp b/src/game/GlobalEvents.cpp index 9f72e96936c..300527aad73 100644 --- a/src/game/GlobalEvents.cpp +++ b/src/game/GlobalEvents.cpp @@ -75,7 +75,7 @@ static void CorpsesErase(bool bones,uint32 delay) { ///- Get the list of eligible corpses/bones to be removed //No SQL injection (uint32 and enum) - CharacterDatabase.AsyncPQuery(&CorpsesEraseCallBack, bones, "SELECT guid,position_x,position_y,map,player FROM corpse WHERE UNIX_TIMESTAMP()-time > '%u' AND corpse_type %s '0'", delay, (bones ? "=" : "<>")); + CharacterDatabase.AsyncPQuery(&CorpsesEraseCallBack, bones, "SELECT guid,position_x,position_y,map,player FROM corpse WHERE time < (UNIX_TIMESTAMP()+'%u') AND corpse_type %s '0'", delay, (bones ? "=" : "<>")); } /// not thread guarded variant for call from other thread diff --git a/src/game/Player.cpp b/src/game/Player.cpp index a05356e25b1..0d70553c2c0 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -4346,8 +4346,7 @@ void Player::DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmC "AND achievement NOT IN(1463, 3117, 3259) ", guid); // Realm First Northen Vanguard + Raid Achievements CharacterDatabase.PExecute("DELETE FROM character_achievement_progress WHERE guid = '%u'",guid); CharacterDatabase.PExecute("DELETE FROM character_equipmentsets WHERE guid = '%u'",guid); - CharacterDatabase.PExecute("DELETE FROM guild_eventlog WHERE PlayerGuid1 = '%u'",guid); - CharacterDatabase.PExecute("DELETE FROM guild_eventlog WHERE PlayerGuid2 = '%u'",guid); + CharacterDatabase.PExecute("DELETE FROM guild_eventlog WHERE PlayerGuid1 = '%u' OR PlayerGuid2 = '%u'",guid, guid); CharacterDatabase.PExecute("DELETE FROM guild_bank_eventlog WHERE PlayerGuid = '%u'",guid); CharacterDatabase.PExecute("DELETE FROM character_battleground_data WHERE guid = '%u'",guid); CharacterDatabase.PExecute("DELETE FROM character_glyphs WHERE guid = '%u'",guid); |