aboutsummaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
Diffstat (limited to 'sql')
-rw-r--r--sql/base/characters_database.sql27
-rw-r--r--sql/updates/characters/2015_04_28_00_characters.sql33
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`);