diff options
Diffstat (limited to 'sql')
-rw-r--r-- | sql/base/characters_database.sql | 27 | ||||
-rw-r--r-- | sql/updates/characters/2015_04_28_00_characters.sql | 33 |
2 files changed, 57 insertions, 3 deletions
diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql index 7c9f00df777..6bd6e3cd050 100644 --- a/sql/base/characters_database.sql +++ b/sql/base/characters_database.sql @@ -1533,7 +1533,6 @@ DROP TABLE IF EXISTS `corpse`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!40101 SET character_set_client = utf8 */; CREATE TABLE `corpse` ( - `corpseGuid` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT 'Global Unique Identifier', `guid` bigint(20) unsigned NOT NULL DEFAULT '0' COMMENT 'Character Global Unique Identifier', `posX` float NOT NULL DEFAULT '0', `posY` float NOT NULL DEFAULT '0', @@ -1550,10 +1549,9 @@ CREATE TABLE `corpse` ( `time` int(10) unsigned NOT NULL DEFAULT '0', `corpseType` tinyint(3) unsigned NOT NULL DEFAULT '0', `instanceId` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Instance Identifier', - PRIMARY KEY (`corpseGuid`), + PRIMARY KEY (`guid`), KEY `idx_type` (`corpseType`), KEY `idx_instance` (`instanceId`), - KEY `idx_player` (`guid`), KEY `idx_time` (`time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Death System'; /*!40101 SET character_set_client = @saved_cs_client */; @@ -1568,6 +1566,29 @@ LOCK TABLES `corpse` WRITE; UNLOCK TABLES; -- +-- Table structure for table `corpse_phases` +-- + +DROP TABLE IF EXISTS `corpse_phases`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `corpse_phases` ( + `OwnerGuid` bigint(20) unsigned NOT NULL DEFAULT '0', + `PhaseId` int(10) unsigned NOT NULL, + PRIMARY KEY (`OwnerGuid`,`PhaseId`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `corpse_phases` +-- + +LOCK TABLES `corpse_phases` WRITE; +/*!40000 ALTER TABLE `corpse_phases` DISABLE KEYS */; +/*!40000 ALTER TABLE `corpse_phases` ENABLE KEYS */; +UNLOCK TABLES; + +-- -- Table structure for table `creature_respawn` -- diff --git a/sql/updates/characters/2015_04_28_00_characters.sql b/sql/updates/characters/2015_04_28_00_characters.sql new file mode 100644 index 00000000000..9e02e401707 --- /dev/null +++ b/sql/updates/characters/2015_04_28_00_characters.sql @@ -0,0 +1,33 @@ +DELETE FROM `corpse` WHERE `corpseType`=0; + +DROP PROCEDURE IF EXISTS `CheckCorpseData`; + +DELIMITER $$ + +CREATE PROCEDURE CheckCorpseData() +BEGIN + DECLARE max_corpses_per_player int; + SELECT MAX(`counts`) FROM (SELECT COUNT(`corpseGuid`) AS `counts` FROM `corpse` GROUP BY `guid`) AS `counted` INTO max_corpses_per_player; + + IF max_corpses_per_player > 50000 THEN + TRUNCATE `corpse`; + END IF; + +END$$ +DELIMITER ; + +CALL CheckCorpseData(); +DROP PROCEDURE `CheckCorpseData`; + +ALTER TABLE `corpse` + DROP `corpseGuid`, + DROP INDEX `idx_player`, + ADD PRIMARY KEY (`guid`); + +ALTER TABLE `corpse_phases` + DROP PRIMARY KEY, + DROP `Guid`, + DROP `CorpseType`, + DROP `Time`, + CHANGE `OwnerGuid` `OwnerGuid` bigint(20) unsigned NOT NULL DEFAULT '0' FIRST, + ADD PRIMARY KEY (`OwnerGuid`,`PhaseId`); |