diff options
author | click <none@none> | 2010-11-19 15:53:14 +0100 |
---|---|---|
committer | click <none@none> | 2010-11-19 15:53:14 +0100 |
commit | 5cd39040592f526719d99b960a1a0d16499f86b4 (patch) | |
tree | ef668f219c2bfc0c56d69312f56ab8f08fe26cb5 | |
parent | 3e27be75014ec74efc94a8d7bcc03f2391dcc098 (diff) |
Core/DBLayer: Move tables reserved_name, gameobject_respawn and creature_respawn from WORLD database to CHARACTER database as it's content is realm-specific and should be preserved (thanks to leak for the cleanup)
*** TO PRESERVE (COPY) THE DATA CONTAINED IN THE OLD TABLES, YOU MUST FOLLOW THE FOLLOWING SQL-RECIPE (REPLACE DATABASENAMES WHERE NEEDED!) ***
-- Move creature_respawn from world to characters db
INSERT INTO `characters`.`creature_respawn` (`guid`, `respawntime`, `instance`)
SELECT `guid, `respawntime` `instance` * FROM `world`.`creature_respawn`;
-- Remove creature_respawn table from world db
DROP TABLE `world`.`creature_respawn`;
-- Move gameobject_respawn from world to characters db
INSERT INTO `characters`.`gameobject_respawn` (`guid`, `respawntime`, `instance`)
SELECT `guid`, `respawntime`, `instance` FROM `world`.`gameobject_respawn`;
-- Remove creature_respawn table from world db
DROP TABLE `world`.`gameobject_respawn`;
-- Move reserved names from world to characters db
INSERT INTO `characters`.`reserved_name` (`name`)
SELECT `name` FROM `world`.`reserved_name`;
-- Remove reserved_names table from world db
DROP TABLE `world`.`reserved_name`;
*** THE ABOVE MUST BE DONE, OR EXISTING INSTANCES WILL BE FULLY RESPAWNED - YOU HAVE BEEN WARNED ***
Closes issue 4842. Closes issue 4849.
--HG--
branch : trunk
-rw-r--r-- | sql/base/characters_database.sql | 146 | ||||
-rw-r--r-- | sql/base/world_database.sql | 72 | ||||
-rw-r--r-- | sql/updates/10475_characters_character_banned.sql | 1 | ||||
-rw-r--r-- | sql/updates/10475_characters_creature_respawn.sql | 9 | ||||
-rw-r--r-- | sql/updates/10475_characters_gameobject_respawn.sql | 9 | ||||
-rw-r--r-- | sql/updates/10475_characters_reserved_name.sql | 6 | ||||
-rwxr-xr-x | src/server/game/Battlegrounds/Battleground.cpp | 4 | ||||
-rwxr-xr-x | src/server/game/Globals/ObjectMgr.cpp | 26 | ||||
-rwxr-xr-x | src/server/game/Instances/InstanceSaveMgr.cpp | 37 | ||||
-rwxr-xr-x | src/server/shared/Database/Implementation/CharacterDatabase.cpp | 4 | ||||
-rwxr-xr-x | src/server/shared/Database/Implementation/CharacterDatabase.h | 4 | ||||
-rwxr-xr-x | src/server/shared/Database/Implementation/WorldDatabase.cpp | 3 | ||||
-rwxr-xr-x | src/server/shared/Database/Implementation/WorldDatabase.h | 3 |
13 files changed, 164 insertions, 160 deletions
diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql index 74ad13fe060..b9916340c19 100644 --- a/sql/base/characters_database.sql +++ b/sql/base/characters_database.sql @@ -51,7 +51,7 @@ CREATE TABLE `addons` ( `name` varchar(120) NOT NULL default '', `crc` int(32) unsigned NOT NULL default '0', PRIMARY KEY (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Addons'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Addons'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -218,7 +218,7 @@ CREATE TABLE `bugreport` ( `type` longtext NOT NULL default '', `content` longtext NOT NULL default '', PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Debug System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Debug System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -246,7 +246,7 @@ CREATE TABLE `channels` ( `m_password` text, `BannedList` longtext, PRIMARY KEY (`m_name`(10),`m_team`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Channel System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Channel System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -340,7 +340,7 @@ CREATE TABLE `characters` ( KEY `idx_account` (`account`), KEY `idx_online` (`online`), KEY `idx_name` (`name`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -440,7 +440,7 @@ CREATE TABLE `character_action` ( `action` int(11) unsigned NOT NULL default '0', `type` tinyint(3) unsigned NOT NULL default '0', PRIMARY KEY (`guid`,`spec`,`button`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; +) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -476,7 +476,7 @@ CREATE TABLE `character_aura` ( `remaintime` int(11) NOT NULL default '0', `remaincharges` tinyint(3) unsigned NOT NULL default '0', PRIMARY KEY (`guid`,`caster_guid`,`spell`,`effect_mask`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -503,7 +503,7 @@ CREATE TABLE `character_banned` ( `banreason` varchar(255) NOT NULL, `active` tinyint(4) NOT NULL default '1', PRIMARY KEY (`guid`,`bandate`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Ban List'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Ban List'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -535,7 +535,7 @@ CREATE TABLE `character_battleground_data` ( `taxi_end` int(11) NOT NULL default '0', `mount_spell` int(11) NOT NULL default '0', PRIMARY KEY (`guid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -584,7 +584,7 @@ CREATE TABLE `character_declinedname` ( `instrumental` varchar(15) NOT NULL default '', `prepositional` varchar(15) NOT NULL default '', PRIMARY KEY (`guid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; +) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -713,7 +713,7 @@ CREATE TABLE `character_homebind` ( `position_y` float NOT NULL default '0', `position_z` float NOT NULL default '0', PRIMARY KEY (`guid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -765,7 +765,7 @@ CREATE TABLE `character_inventory` ( `item_template` int(11) unsigned NOT NULL default '0' COMMENT 'Item Identifier', PRIMARY KEY (`item`), KEY `idx_guid` (`guid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -806,7 +806,7 @@ CREATE TABLE `character_pet` ( `abdata` longtext, PRIMARY KEY (`id`), KEY `owner` (`owner`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Pet System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Pet System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -835,7 +835,7 @@ CREATE TABLE `character_pet_declinedname` ( `prepositional` varchar(12) NOT NULL default '', PRIMARY KEY (`id`), KEY owner_key (`owner`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; +) ENGINE=InnoDB DEFAULT CHARSET=utf8; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -870,7 +870,7 @@ CREATE TABLE `character_queststatus` ( `itemcount3` smallint(3) unsigned NOT NULL DEFAULT '0', `itemcount4` smallint(3) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`guid`,`quest`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -895,7 +895,7 @@ CREATE TABLE `character_queststatus_daily` ( `time` bigint(20) unsigned NOT NULL default '0', PRIMARY KEY (`guid`,`quest`), KEY `idx_guid` (`guid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -917,7 +917,7 @@ CREATE TABLE `character_queststatus_weekly` ( `quest` int(11) unsigned NOT NULL default '0' COMMENT 'Quest Identifier', PRIMARY KEY (`guid`,`quest`), KEY `idx_guid` (`guid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System'; -- -- Dumping data for table `character_queststatus_weekly` @@ -941,7 +941,7 @@ CREATE TABLE `character_reputation` ( `standing` int(11) NOT NULL default '0', `flags` int(11) NOT NULL default '0', PRIMARY KEY (`guid`,`faction`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -966,7 +966,7 @@ CREATE TABLE `character_skills` ( `value` mediumint(9) unsigned NOT NULL, `max` mediumint(9) unsigned NOT NULL, PRIMARY KEY (`guid`,`skill`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -995,7 +995,7 @@ CREATE TABLE `character_social` ( KEY `friend` (`friend`), KEY `guid_flags` (`guid`,`flags`), KEY `friend_flags` (`friend`,`flags`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1020,7 +1020,7 @@ CREATE TABLE `character_spell` ( `active` tinyint(3) unsigned NOT NULL default '1', `disabled` tinyint(3) unsigned NOT NULL default '0', PRIMARY KEY (`guid`,`spell`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1150,7 +1150,7 @@ CREATE TABLE `character_tutorial` ( `tut7` int(11) unsigned NOT NULL default '0', PRIMARY KEY (`account`,`realmid`), KEY acc_key (`account`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1194,7 +1194,7 @@ CREATE TABLE `corpse` ( KEY `instance` (`instance`), INDEX `Idx_player`(`player`), INDEX `Idx_time`(`time`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Death System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Death System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1266,10 +1266,60 @@ CREATE TABLE `gm_subsurveys` ( `rank` int(11) UNSIGNED NOT NULL DEFAULT '0', `comment` longtext NOT NULL, PRIMARY KEY (`surveyid`,`subsurveyid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System'; /*!40101 SET character_set_client = @saved_cs_client */; -- +-- Table structure for table `creature_respawn` +-- + +DROP TABLE IF EXISTS `creature_respawn`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `creature_respawn` ( + `guid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Global Unique Identifier', + `respawntime` bigint(20) NOT NULL DEFAULT '0', + `instance` mediumint(8) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`guid`,`instance`), + KEY `instance` (`instance`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Grid Loading System'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `creature_respawn` +-- + +LOCK TABLES `creature_respawn` WRITE; +/*!40000 ALTER TABLE `creature_respawn` DISABLE KEYS */; +/*!40000 ALTER TABLE `creature_respawn` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `gameobject_respawn` +-- + +DROP TABLE IF EXISTS `gameobject_respawn`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `gameobject_respawn` ( + `guid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Global Unique Identifier', + `respawntime` bigint(20) NOT NULL DEFAULT '0', + `instance` mediumint(8) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`guid`,`instance`), + KEY `instance` (`instance`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Grid Loading System'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `gameobject_respawn` +-- + +LOCK TABLES `gameobject_respawn` WRITE; +/*!40000 ALTER TABLE `gameobject_respawn` DISABLE KEYS */; +/*!40000 ALTER TABLE `gameobject_respawn` ENABLE KEYS */; +UNLOCK TABLES; + +-- -- Dumping data for table `gm_subsurveys` -- @@ -1291,7 +1341,7 @@ CREATE TABLE `gm_surveys` ( `overall_comment` longtext NOT NULL, `timestamp` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`surveyid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1328,7 +1378,7 @@ CREATE TABLE `gm_tickets` ( `escalated` int(11) NOT NULL DEFAULT '0', `viewed` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`guid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1450,7 +1500,7 @@ CREATE TABLE `guild` ( `createdate` bigint(20) NOT NULL default '0', `BankMoney` bigint(20) NOT NULL default '0', PRIMARY KEY (`guildid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Guild System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Guild System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1665,7 +1715,7 @@ CREATE TABLE `guild_rank` ( `BankMoneyPerDay` int(11) unsigned NOT NULL default '0', PRIMARY KEY (`guildid`,`rid`), INDEX `Idx_rid`(`rid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Guild System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Guild System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1754,7 +1804,7 @@ CREATE TABLE `item_instance` ( `text` longtext, PRIMARY KEY (`guid`), KEY `idx_owner_guid` (`owner_guid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Item System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Item System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1779,7 +1829,7 @@ CREATE TABLE `item_refund_instance` ( `paidMoney` int(11) unsigned NOT NULL DEFAULT '0', `paidExtendedCost` int(11) unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`item_guid`,`player_guid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Item Refund System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Item Refund System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1802,7 +1852,7 @@ CREATE TABLE `item_soulbound_trade_data` ( `itemGuid` int(11) unsigned NOT NULL COMMENT 'Item GUID', `allowedPlayers` text NOT NULL COMMENT 'Space separated GUID list of players who can receive this item in trade', PRIMARY KEY (`itemGuid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Item Refund System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Item Refund System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1830,7 +1880,7 @@ CREATE TABLE `lag_reports` ( `posY` float NOT NULL default '0', `posZ` float NOT NULL default '0', PRIMARY KEY (`report_id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1866,7 +1916,7 @@ CREATE TABLE `mail` ( `checked` tinyint(3) unsigned NOT NULL default '0', PRIMARY KEY (`id`), KEY `idx_receiver` (`receiver`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Mail System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Mail System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1928,7 +1978,7 @@ CREATE TABLE `pet_aura` ( `remaintime` int(11) NOT NULL default '0', `remaincharges` tinyint(3) unsigned NOT NULL default '0', PRIMARY KEY (`guid`,`spell`,`effect_mask`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Pet System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Pet System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1952,7 +2002,7 @@ CREATE TABLE `pet_spell` ( `spell` int(11) unsigned NOT NULL default '0' COMMENT 'Spell Identifier', `active` int(11) unsigned NOT NULL default '0', PRIMARY KEY (`guid`,`spell`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Pet System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Pet System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2002,7 +2052,7 @@ CREATE TABLE `petition` ( `type` int(10) unsigned NOT NULL default '0', PRIMARY KEY (`ownerguid`,`type`), UNIQUE KEY `index_ownerguid_petitionguid` (`ownerguid`,`petitionguid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Guild System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Guild System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2030,7 +2080,7 @@ CREATE TABLE `petition_sign` ( PRIMARY KEY (`petitionguid`,`playerguid`), INDEX `Idx_playerguid`(`playerguid`), INDEX `Idx_ownerguid`(`ownerguid`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Guild System'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Guild System'; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -2066,6 +2116,28 @@ LOCK TABLES `pool_quest_save` WRITE; UNLOCK TABLES; -- +-- Table structure for table `reserved_name` +-- + +DROP TABLE IF EXISTS `reserved_name`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8 */; +CREATE TABLE `reserved_name` ( + `name` varchar(12) NOT NULL DEFAULT '', + PRIMARY KEY (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player Reserved Names'; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `reserved_name` +-- + +LOCK TABLES `reserved_name` WRITE; +/*!40000 ALTER TABLE `reserved_name` DISABLE KEYS */; +/*!40000 ALTER TABLE `reserved_name` ENABLE KEYS */; +UNLOCK TABLES; + +-- -- Table structure for table `worldstates` -- @@ -2077,7 +2149,7 @@ CREATE TABLE `worldstates` ( `value` bigint(40) UNSIGNED NOT NULL DEFAULT '0', `comment` text, PRIMARY KEY (`entry`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Variable Saves'; +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Variable Saves'; /*!40101 SET character_set_client = @saved_cs_client */; -- diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql index 8a1f9bf5596..7e0a4e0cc45 100644 --- a/sql/base/world_database.sql +++ b/sql/base/world_database.sql @@ -1575,31 +1575,6 @@ LOCK TABLES `creature_questrelation` WRITE; UNLOCK TABLES; -- --- Table structure for table `creature_respawn` --- - -DROP TABLE IF EXISTS `creature_respawn`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `creature_respawn` ( - `guid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Global Unique Identifier', - `respawntime` bigint(20) NOT NULL DEFAULT '0', - `instance` mediumint(8) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`guid`,`instance`), - KEY `instance` (`instance`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Grid Loading System'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `creature_respawn` --- - -LOCK TABLES `creature_respawn` WRITE; -/*!40000 ALTER TABLE `creature_respawn` DISABLE KEYS */; -/*!40000 ALTER TABLE `creature_respawn` ENABLE KEYS */; -UNLOCK TABLES; - --- -- Table structure for table `creature_template` -- @@ -2636,31 +2611,6 @@ LOCK TABLES `gameobject_questrelation` WRITE; UNLOCK TABLES; -- --- Table structure for table `gameobject_respawn` --- - -DROP TABLE IF EXISTS `gameobject_respawn`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `gameobject_respawn` ( - `guid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Global Unique Identifier', - `respawntime` bigint(20) NOT NULL DEFAULT '0', - `instance` mediumint(8) unsigned NOT NULL DEFAULT '0', - PRIMARY KEY (`guid`,`instance`), - KEY `instance` (`instance`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Grid Loading System'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `gameobject_respawn` --- - -LOCK TABLES `gameobject_respawn` WRITE; -/*!40000 ALTER TABLE `gameobject_respawn` DISABLE KEYS */; -/*!40000 ALTER TABLE `gameobject_respawn` ENABLE KEYS */; -UNLOCK TABLES; - --- -- Table structure for table `gameobject_scripts` -- @@ -16593,28 +16543,6 @@ LOCK TABLES `reputation_spillover_template` WRITE; UNLOCK TABLES; -- --- Table structure for table `reserved_name` --- - -DROP TABLE IF EXISTS `reserved_name`; -/*!40101 SET @saved_cs_client = @@character_set_client */; -/*!40101 SET character_set_client = utf8 */; -CREATE TABLE `reserved_name` ( - `name` varchar(12) NOT NULL DEFAULT '', - PRIMARY KEY (`name`) -) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='Player Reserved Names'; -/*!40101 SET character_set_client = @saved_cs_client */; - --- --- Dumping data for table `reserved_name` --- - -LOCK TABLES `reserved_name` WRITE; -/*!40000 ALTER TABLE `reserved_name` DISABLE KEYS */; -/*!40000 ALTER TABLE `reserved_name` ENABLE KEYS */; -UNLOCK TABLES; - --- -- Table structure for table `script_texts` -- diff --git a/sql/updates/10475_characters_character_banned.sql b/sql/updates/10475_characters_character_banned.sql new file mode 100644 index 00000000000..1d4789a4f33 --- /dev/null +++ b/sql/updates/10475_characters_character_banned.sql @@ -0,0 +1 @@ +ALTER TABLE character_banned ENGINE = InnoDB; diff --git a/sql/updates/10475_characters_creature_respawn.sql b/sql/updates/10475_characters_creature_respawn.sql new file mode 100644 index 00000000000..e6964910597 --- /dev/null +++ b/sql/updates/10475_characters_creature_respawn.sql @@ -0,0 +1,9 @@ +DROP TABLE IF EXISTS `creature_respawn`; +CREATE TABLE `creature_respawn` ( + `guid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Global Unique Identifier', + `respawntime` int(10) unsigned NOT NULL DEFAULT '0', + `instance` mediumint(8) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`guid`,`instance`), + KEY `instance` (`instance`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Grid Loading System'; + diff --git a/sql/updates/10475_characters_gameobject_respawn.sql b/sql/updates/10475_characters_gameobject_respawn.sql new file mode 100644 index 00000000000..2a5f0c03de7 --- /dev/null +++ b/sql/updates/10475_characters_gameobject_respawn.sql @@ -0,0 +1,9 @@ +DROP TABLE IF EXISTS `gameobject_respawn`; +CREATE TABLE `gameobject_respawn` ( + `guid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Global Unique Identifier', + `respawntime` int(10) unsigned NOT NULL DEFAULT '0', + `instance` mediumint(8) unsigned NOT NULL DEFAULT '0', + PRIMARY KEY (`guid`,`instance`), + KEY `instance` (`instance`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Grid Loading System'; + diff --git a/sql/updates/10475_characters_reserved_name.sql b/sql/updates/10475_characters_reserved_name.sql new file mode 100644 index 00000000000..dedab8b5911 --- /dev/null +++ b/sql/updates/10475_characters_reserved_name.sql @@ -0,0 +1,6 @@ +DROP TABLE IF EXISTS `reserved_name`; +CREATE TABLE `reserved_name` ( + `name` varchar(12) NOT NULL DEFAULT '', + PRIMARY KEY (`name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player Reserved Names'; + diff --git a/src/server/game/Battlegrounds/Battleground.cpp b/src/server/game/Battlegrounds/Battleground.cpp index 1bfb42ff9e4..be341350964 100755 --- a/src/server/game/Battlegrounds/Battleground.cpp +++ b/src/server/game/Battlegrounds/Battleground.cpp @@ -217,8 +217,8 @@ Battleground::~Battleground() if (GetInstanceID()) // not spam by useless queries in case BG templates { // delete creature and go respawn times - WorldDatabase.PExecute("DELETE FROM creature_respawn WHERE instance = '%u'",GetInstanceID()); - WorldDatabase.PExecute("DELETE FROM gameobject_respawn WHERE instance = '%u'",GetInstanceID()); + CharacterDatabase.PExecute("DELETE FROM creature_respawn WHERE instance = '%u'",GetInstanceID()); + CharacterDatabase.PExecute("DELETE FROM gameobject_respawn WHERE instance = '%u'",GetInstanceID()); // delete instance from db CharacterDatabase.PExecute("DELETE FROM instance WHERE id = '%u'",GetInstanceID()); // remove from battlegrounds diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index 5faa13ac575..47b27d34d1b 100755 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -1814,7 +1814,7 @@ void ObjectMgr::LoadCreatureRespawnTimes() { uint32 count = 0; - QueryResult result = WorldDatabase.Query("SELECT guid,respawntime,instance FROM creature_respawn"); + QueryResult result = CharacterDatabase.Query("SELECT guid,respawntime,instance FROM creature_respawn"); if (!result) { @@ -1850,12 +1850,12 @@ void ObjectMgr::LoadCreatureRespawnTimes() void ObjectMgr::LoadGameobjectRespawnTimes() { // remove outdated data - PreparedStatement *stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_GAMEOBJECT_RESPAWN_TIMES); - WorldDatabase.Execute(stmt); + PreparedStatement *stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_GAMEOBJECT_RESPAWN_TIMES); + CharacterDatabase.Execute(stmt); uint32 count = 0; - QueryResult result = WorldDatabase.Query("SELECT guid,respawntime,instance FROM gameobject_respawn"); + QueryResult result = CharacterDatabase.Query("SELECT guid,respawntime,instance FROM gameobject_respawn"); if (!result) { @@ -7518,18 +7518,18 @@ void ObjectMgr::SaveCreatureRespawnTime(uint32 loguid, uint32 instance, time_t t m_CreatureRespawnTimesMtx.release(); } - PreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_DEL_CRESPAWNTIME); + PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_CRESPAWNTIME); stmt->setUInt32(0, loguid); stmt->setUInt32(1, instance); - WorldDatabase.Execute(stmt); + CharacterDatabase.Execute(stmt); if (t) { - stmt = WorldDatabase.GetPreparedStatement(WORLD_ADD_CRESPAWNTIME); + stmt = CharacterDatabase.GetPreparedStatement(CHAR_ADD_CRESPAWNTIME); stmt->setUInt32(0, loguid); stmt->setUInt64(1, uint64(t)); stmt->setUInt32(2, instance); - WorldDatabase.Execute(stmt); + CharacterDatabase.Execute(stmt); } } @@ -7552,9 +7552,9 @@ void ObjectMgr::SaveGORespawnTime(uint32 loguid, uint32 instance, time_t t) m_GORespawnTimesMtx.release(); } - WorldDatabase.PExecute("DELETE FROM gameobject_respawn WHERE guid = '%u' AND instance = '%u'", loguid, instance); + CharacterDatabase.PExecute("DELETE FROM gameobject_respawn WHERE guid = '%u' AND instance = '%u'", loguid, instance); if (t) - WorldDatabase.PExecute("INSERT INTO gameobject_respawn VALUES ('%u', '" UI64FMTD "', '%u')", loguid, uint64(t), instance); + CharacterDatabase.PExecute("INSERT INTO gameobject_respawn VALUES ('%u', '" UI64FMTD "', '%u')", loguid, uint64(t), instance); } void ObjectMgr::DeleteRespawnTimeForInstance(uint32 instance) @@ -7586,8 +7586,8 @@ void ObjectMgr::DeleteRespawnTimeForInstance(uint32 instance) } m_CreatureRespawnTimesMtx.release(); } - WorldDatabase.PExecute("DELETE FROM creature_respawn WHERE instance = '%u'", instance); - WorldDatabase.PExecute("DELETE FROM gameobject_respawn WHERE instance = '%u'", instance); + CharacterDatabase.PExecute("DELETE FROM creature_respawn WHERE instance = '%u'", instance); + CharacterDatabase.PExecute("DELETE FROM gameobject_respawn WHERE instance = '%u'", instance); } void ObjectMgr::DeleteGOData(uint32 guid) @@ -7725,7 +7725,7 @@ void ObjectMgr::LoadReservedPlayersNames() { m_ReservedNames.clear(); // need for reload case - QueryResult result = WorldDatabase.Query("SELECT name FROM reserved_name"); + QueryResult result = CharacterDatabase.Query("SELECT name FROM reserved_name"); uint32 count = 0; diff --git a/src/server/game/Instances/InstanceSaveMgr.cpp b/src/server/game/Instances/InstanceSaveMgr.cpp index aee36dce029..882a8653b35 100755 --- a/src/server/game/Instances/InstanceSaveMgr.cpp +++ b/src/server/game/Instances/InstanceSaveMgr.cpp @@ -265,7 +265,10 @@ void InstanceSaveManager::CleanupInstances() _DelHelper("character_instance.guid, instance", "character_instance", "LEFT JOIN instance ON character_instance.instance = instance.id WHERE instance.id IS NULL"); _DelHelper("guid, instance", "group_instance", "LEFT JOIN instance ON group_instance.instance = instance.id WHERE instance.id IS NULL"); - // creature_respawn and gameobject_respawn are in another database + // Clean respawn data from non existing instances + CharacterDatabase.PExecute("DELETE FROM creature_respawn WHERE instance <> 0 AND instance NOT IN (SELECT id FROM instance)"); + CharacterDatabase.PExecute("DELETE FROM gameobject_respawn WHERE instance <> 0 AND instance NOT IN (SELECT id FROM instance)"); + // first, obtain total instance set std::set<uint32> InstanceSet; QueryResult result = CharacterDatabase.Query("SELECT id FROM instance"); @@ -279,32 +282,6 @@ void InstanceSaveManager::CleanupInstances() while (result->NextRow()); } - // creature_respawn - result = WorldDatabase.Query("SELECT DISTINCT(instance) FROM creature_respawn WHERE instance <> 0"); - if (result) - { - do - { - Field *fields = result->Fetch(); - if (InstanceSet.find(fields[0].GetUInt32()) == InstanceSet.end()) - WorldDatabase.PExecute("DELETE FROM creature_respawn WHERE instance = '%u'", fields[0].GetUInt32()); - } - while (result->NextRow()); - } - - // gameobject_respawn - result = WorldDatabase.Query("SELECT DISTINCT(instance) FROM gameobject_respawn WHERE instance <> 0"); - if (result) - { - do - { - Field *fields = result->Fetch(); - if (InstanceSet.find(fields[0].GetUInt32()) == InstanceSet.end()) - WorldDatabase.PExecute("DELETE FROM gameobject_respawn WHERE instance = '%u'", fields[0].GetUInt32()); - } - while (result->NextRow()); - } - // characters result = CharacterDatabase.Query("SELECT DISTINCT(instance_id) FROM characters WHERE instance_id <> 0"); if (result) @@ -368,8 +345,8 @@ void InstanceSaveManager::PackInstances() if (*i != InstanceNumber) { // remap instance id - WorldDatabase.PExecute("UPDATE creature_respawn SET instance = '%u' WHERE instance = '%u'", InstanceNumber, *i); - WorldDatabase.PExecute("UPDATE gameobject_respawn SET instance = '%u' WHERE instance = '%u'", InstanceNumber, *i); + CharacterDatabase.PExecute("UPDATE creature_respawn SET instance = '%u' WHERE instance = '%u'", InstanceNumber, *i); + CharacterDatabase.PExecute("UPDATE gameobject_respawn SET instance = '%u' WHERE instance = '%u'", InstanceNumber, *i); CharacterDatabase.PExecute("UPDATE characters SET instance_id = '%u' WHERE instance_id = '%u'", InstanceNumber, *i); CharacterDatabase.PExecute("UPDATE corpse SET instance = '%u' WHERE instance = '%u'", InstanceNumber, *i); CharacterDatabase.PExecute("UPDATE character_instance SET instance = '%u' WHERE instance = '%u'", InstanceNumber, *i); @@ -420,7 +397,7 @@ void InstanceSaveManager::LoadResetTimes() while (result->NextRow()); // update reset time for normal instances with the max creature respawn time + X hours - result = WorldDatabase.Query("SELECT MAX(respawntime), instance FROM creature_respawn WHERE instance > 0 GROUP BY instance"); + result = CharacterDatabase.Query("SELECT MAX(respawntime), instance FROM creature_respawn WHERE instance > 0 GROUP BY instance"); if (result) { do diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp index 4963a0b89f3..92257ba9ace 100755 --- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp +++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp @@ -211,5 +211,9 @@ bool CharacterDatabaseConnection::Open() PrepareStatement(CHAR_CLEAN_GUILD_BANK_TABS, "DELETE FROM guild_bank_tab WHERE guildId NOT IN (SELECT guildid FROM guild)"); PrepareStatement(CHAR_CLEAN_GUILD_BANK_RIGHTS, "DELETE FROM guild_bank_right WHERE guildId NOT IN (SELECT guildid FROM guild)"); PrepareStatement(CHAR_CLEAN_GUILD_BANK_ITEMS, "DELETE FROM guild_bank_item WHERE guildId NOT IN (SELECT guildid FROM guild)"); + PrepareStatement(CHAR_DEL_GAMEOBJECT_RESPAWN_TIMES, "DELETE FROM gameobject_respawn WHERE respawntime <= UNIX_TIMESTAMP(NOW())"); + PrepareStatement(CHAR_DEL_CRESPAWNTIME, "DELETE FROM creature_respawn WHERE guid = ? AND instance = ?"); + PrepareStatement(CHAR_ADD_CRESPAWNTIME, "INSERT INTO creature_respawn VALUES (?, ?, ?)"); + return true; } diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h index 041afca2a23..e8fc1b64418 100755 --- a/src/server/shared/Database/Implementation/CharacterDatabase.h +++ b/src/server/shared/Database/Implementation/CharacterDatabase.h @@ -177,6 +177,10 @@ enum CharacterDatabaseStatements CHAR_CLEAN_GUILD_BANK_RIGHTS, CHAR_CLEAN_GUILD_BANK_ITEMS, + CHAR_DEL_GAMEOBJECT_RESPAWN_TIMES, + CHAR_DEL_CRESPAWNTIME, + CHAR_ADD_CRESPAWNTIME, + MAX_CHARACTERDATABASE_STATEMENTS, }; diff --git a/src/server/shared/Database/Implementation/WorldDatabase.cpp b/src/server/shared/Database/Implementation/WorldDatabase.cpp index 71cf9c82d45..57c6312f1b8 100755 --- a/src/server/shared/Database/Implementation/WorldDatabase.cpp +++ b/src/server/shared/Database/Implementation/WorldDatabase.cpp @@ -29,12 +29,9 @@ bool WorldDatabaseConnection::Open() LOAD YOUR PREPARED STATEMENTS HERE ################################## */ - PrepareStatement(WORLD_DEL_CRESPAWNTIME, "DELETE FROM creature_respawn WHERE guid = ? AND instance = ?"); - PrepareStatement(WORLD_ADD_CRESPAWNTIME, "INSERT INTO creature_respawn VALUES (?, ?, ?)"); PrepareStatement(WORLD_LOAD_QUEST_POOLS, "SELECT entry, pool_entry FROM pool_quest"); PrepareStatement(WORLD_DEL_CRELINKED_RESPAWN, "DELETE FROM creature_linked_respawn WHERE guid = ?"); PrepareStatement(WORLD_REP_CRELINKED_RESPAWN, "REPLACE INTO creature_linked_respawn (guid,linkedGuid) VALUES (?, ?)"); - PrepareStatement(WORLD_DEL_GAMEOBJECT_RESPAWN_TIMES, "DELETE FROM gameobject_respawn WHERE respawntime <= UNIX_TIMESTAMP(NOW())"); PrepareStatement(WORLD_LOAD_CRETEXT, "SELECT entry, groupid, id, text, type, language, probability, emote, duration, sound FROM creature_text"); PrepareStatement(WORLD_LOAD_SMART_SCRIPTS, "SELECT entryorguid, source_type, id, link, event_type, event_phase_mask, event_chance, event_flags, event_param1, event_param2, event_param3, event_param4, action_type, action_param1, action_param2, action_param3, action_param4, action_param5, action_param6, target_type, target_param1, target_param2, target_param3, target_x, target_y, target_z, target_o FROM smart_scripts ORDER BY entryorguid, source_type, id, link"); PrepareStatement(WORLD_LOAD_SMARTAI_WP, "SELECT entry, pointid, position_x, position_y, position_z FROM waypoints ORDER BY entry, pointid"); diff --git a/src/server/shared/Database/Implementation/WorldDatabase.h b/src/server/shared/Database/Implementation/WorldDatabase.h index 1995b8e6301..c502ff019f9 100755 --- a/src/server/shared/Database/Implementation/WorldDatabase.h +++ b/src/server/shared/Database/Implementation/WorldDatabase.h @@ -42,12 +42,9 @@ enum WorldDatabaseStatements name for a suiting suffix. */ - WORLD_DEL_CRESPAWNTIME, - WORLD_ADD_CRESPAWNTIME, WORLD_LOAD_QUEST_POOLS, WORLD_DEL_CRELINKED_RESPAWN, WORLD_REP_CRELINKED_RESPAWN, - WORLD_DEL_GAMEOBJECT_RESPAWN_TIMES, WORLD_LOAD_CRETEXT, WORLD_LOAD_SMART_SCRIPTS, WORLD_LOAD_SMARTAI_WP, |