aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzazel <azazel.kon@gmail.com>2011-04-08 11:28:10 +0600
committerAzazel <azazel.kon@gmail.com>2011-04-08 11:28:10 +0600
commit37a6fe2ae737db97015acd38fad16c7306d68dd2 (patch)
tree006e8e4c2279b4f1776c721d84a1cccb3d6694fd
parent74b84a603d4592b653f670db544b75ffb7b495fb (diff)
Core/CharDB Cleanup: alter character_battleground_data table making column names lowerCamel and move all queries to prepared statements.
-rw-r--r--sql/base/characters_database.sql18
-rw-r--r--sql/updates/auth_char/2011_04_08_00_characters_battleground_data.sql10
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp28
-rwxr-xr-xsrc/server/shared/Database/Implementation/CharacterDatabase.cpp7
-rwxr-xr-xsrc/server/shared/Database/Implementation/CharacterDatabase.h5
-rwxr-xr-xsrc/server/worldserver/Master.cpp2
6 files changed, 51 insertions, 19 deletions
diff --git a/sql/base/characters_database.sql b/sql/base/characters_database.sql
index cac288e160a..48b3b3f3eee 100644
--- a/sql/base/characters_database.sql
+++ b/sql/base/characters_database.sql
@@ -462,16 +462,16 @@ DROP TABLE IF EXISTS `character_battleground_data`;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `character_battleground_data` (
`guid` int(10) unsigned NOT NULL DEFAULT '0' COMMENT 'Global Unique Identifier',
- `instance_id` int(10) unsigned NOT NULL,
+ `instanceId` int(10) unsigned NOT NULL COMMENT 'Instance Identifier',
`team` smallint(5) unsigned NOT NULL,
- `join_x` float NOT NULL DEFAULT '0',
- `join_y` float NOT NULL DEFAULT '0',
- `join_z` float NOT NULL DEFAULT '0',
- `join_o` float NOT NULL DEFAULT '0',
- `join_map` smallint(5) unsigned NOT NULL DEFAULT '0',
- `taxi_start` int(10) unsigned NOT NULL DEFAULT '0',
- `taxi_end` int(10) unsigned NOT NULL DEFAULT '0',
- `mount_spell` mediumint(8) unsigned NOT NULL DEFAULT '0',
+ `joinX` float NOT NULL DEFAULT '0',
+ `joinY` float NOT NULL DEFAULT '0',
+ `joinZ` float NOT NULL DEFAULT '0',
+ `joinO` float NOT NULL DEFAULT '0',
+ `joinMapId` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Map Identifier',
+ `taxiStart` int(10) unsigned NOT NULL DEFAULT '0',
+ `taxiEnd` int(10) unsigned NOT NULL DEFAULT '0',
+ `mountSpell` mediumint(8) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`guid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Player System';
/*!40101 SET character_set_client = @saved_cs_client */;
diff --git a/sql/updates/auth_char/2011_04_08_00_characters_battleground_data.sql b/sql/updates/auth_char/2011_04_08_00_characters_battleground_data.sql
new file mode 100644
index 00000000000..39a3de977ba
--- /dev/null
+++ b/sql/updates/auth_char/2011_04_08_00_characters_battleground_data.sql
@@ -0,0 +1,10 @@
+ALTER TABLE `character_battleground_data`
+ CHANGE `instance_id` `instanceId` int(10) unsigned NOT NULL COMMENT 'Instance Identifier',
+ CHANGE `join_map` `joinMapId` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT 'Map Identifier',
+ CHANGE `join_x` `joinX` float NOT NULL DEFAULT '0',
+ CHANGE `join_y` `joinY` float NOT NULL DEFAULT '0',
+ CHANGE `join_z` `joinZ` float NOT NULL DEFAULT '0',
+ CHANGE `join_o` `joinO` float NOT NULL DEFAULT '0',
+ CHANGE `taxi_start` `taxiStart` int(10) unsigned NOT NULL DEFAULT '0',
+ CHANGE `taxi_end` `taxiEnd` int(10) unsigned NOT NULL DEFAULT '0',
+ CHANGE `mount_spell` `mountSpell` mediumint(8) unsigned NOT NULL DEFAULT '0';
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 75ceee34f0b..d3b3b720ff1 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -4899,7 +4899,9 @@ void Player::DeleteFromDB(uint64 playerguid, uint32 accountId, bool updateRealmC
trans->PAppend("DELETE FROM character_equipmentsets WHERE guid = '%u'",guid);
trans->PAppend("DELETE FROM guild_eventlog WHERE PlayerGuid1 = '%u' OR PlayerGuid2 = '%u'",guid, guid);
trans->PAppend("DELETE FROM guild_bank_eventlog WHERE PlayerGuid = '%u'",guid);
- trans->PAppend("DELETE FROM character_battleground_data WHERE guid = '%u'",guid);
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PLAYER_BGDATA);
+ stmt->setUInt32(0, guid);
+ trans->Append(stmt);
trans->PAppend("DELETE FROM character_glyphs WHERE guid = '%u'",guid);
trans->PAppend("DELETE FROM character_queststatus_daily WHERE guid = '%u'",guid);
trans->PAppend("DELETE FROM character_talent WHERE guid = '%u'",guid);
@@ -16313,8 +16315,8 @@ void Player::_LoadBGData(PreparedQueryResult result)
Field* fields = result->Fetch();
// Expecting only one row
- // 0 1 2 3 4 5 6 7 8 9
- // SELECT instance_id, team, join_x, join_y, join_z, join_o, join_map, taxi_start, taxi_end, mount_spell FROM character_battleground_data WHERE guid = ?
+ // 0 1 2 3 4 5 6 7 8 9
+ // SELECT instanceId, team, joinX, joinY, joinZ, joinO, joinMapId, taxiStart, taxiEnd, mountSpell FROM character_battleground_data WHERE guid = ?
m_bgData.bgInstanceID = fields[0].GetUInt32();
m_bgData.bgTeam = fields[1].GetUInt16();
@@ -24011,13 +24013,25 @@ void Player::_SaveEquipmentSets(SQLTransaction& trans)
void Player::_SaveBGData(SQLTransaction& trans)
{
- trans->PAppend("DELETE FROM character_battleground_data WHERE guid='%u'", GetGUIDLow());
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_PLAYER_BGDATA);
+ stmt->setUInt32(0, GetGUIDLow());
+ trans->Append(stmt);
if (m_bgData.bgInstanceID)
{
/* guid, bgInstanceID, bgTeam, x, y, z, o, map, taxi[0], taxi[1], mountSpell */
- trans->PAppend("INSERT INTO character_battleground_data VALUES ('%u', '%u', '%u', '%f', '%f', '%f', '%f', '%u', '%u', '%u', '%u')",
- GetGUIDLow(), m_bgData.bgInstanceID, m_bgData.bgTeam, m_bgData.joinPos.GetPositionX(), m_bgData.joinPos.GetPositionY(), m_bgData.joinPos.GetPositionZ(),
- m_bgData.joinPos.GetOrientation(), m_bgData.joinPos.GetMapId(), m_bgData.taxiPath[0], m_bgData.taxiPath[1], m_bgData.mountSpell);
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_ADD_PLAYER_BGDATA);
+ stmt->setUInt32(0, GetGUIDLow());
+ stmt->setUInt32(1, m_bgData.bgInstanceID);
+ stmt->setUInt16(2, m_bgData.bgTeam);
+ stmt->setFloat (3, m_bgData.joinPos.GetPositionX());
+ stmt->setFloat (4, m_bgData.joinPos.GetPositionY());
+ stmt->setFloat (5, m_bgData.joinPos.GetPositionZ());
+ stmt->setFloat (6, m_bgData.joinPos.GetOrientation());
+ stmt->setUInt16(7, m_bgData.joinPos.GetMapId());
+ stmt->setUInt16(8, m_bgData.taxiPath[0]);
+ stmt->setUInt16(9, m_bgData.taxiPath[1]);
+ stmt->setUInt16(10,m_bgData.mountSpell);
+ trans->Append(stmt);
}
}
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
index 9c25c9dfe06..55032a9ebe1 100755
--- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
@@ -66,7 +66,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PREPARE_STATEMENT(CHAR_LOAD_PLAYER_CRITERIAPROGRESS, "SELECT criteria, counter, date FROM character_achievement_progress WHERE guid = ?", CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_LOAD_PLAYER_EQUIPMENTSETS, "SELECT setguid, setindex, name, iconname, item0, item1, item2, item3, item4, item5, item6, item7, item8, "
"item9, item10, item11, item12, item13, item14, item15, item16, item17, item18 FROM character_equipmentsets WHERE guid = ? ORDER BY setindex", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_LOAD_PLAYER_BGDATA, "SELECT instance_id, team, join_x, join_y, join_z, join_o, join_map, taxi_start, taxi_end, mount_spell FROM character_battleground_data WHERE guid = ?", CONNECTION_ASYNC)
+ PREPARE_STATEMENT(CHAR_LOAD_PLAYER_BGDATA, "SELECT instanceId, team, joinX, joinY, joinZ, joinO, joinMapId, taxiStart, taxiEnd, mountSpell FROM character_battleground_data WHERE guid = ?", CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_LOAD_PLAYER_GLYPHS, "SELECT spec, glyph1, glyph2, glyph3, glyph4, glyph5, glyph6 FROM character_glyphs WHERE guid = ?", CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_LOAD_PLAYER_TALENTS, "SELECT spell, spec FROM character_talent WHERE guid = ?", CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_LOAD_PLAYER_SKILLS, "SELECT skill, value, max FROM character_skills WHERE guid = ?", CONNECTION_ASYNC)
@@ -295,4 +295,9 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PREPARE_STATEMENT(CHAR_UPDATE_ARENA_TEAM_MEMBER, "UPDATE arena_team_member SET weekGames = ?, weekWins = ?, seasonGames = ?, seasonWins = ? WHERE arenaTeamId = ? AND guid = ?", CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_UPDATE_ARENA_TEAM_MEMBER_STATS, "REPLACE INTO character_arena_stats (guid, slot, personalRating, matchMakerRating) VALUES (?, ?, ?, ?)", CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_LOAD_PLAYER_ARENA_TEAMS, "SELECT arena_team_member.arenaTeamId FROM arena_team_member JOIN arena_team ON arena_team_member.arenaTeamId = arena_team.arenaTeamId WHERE guid = ?", CONNECTION_SYNCH);
+
+ // Character battleground data
+ PREPARE_STATEMENT(CHAR_ADD_PLAYER_BGDATA, "INSERT INTO character_battleground_data (guid, instanceId, team, joinX, joinY, joinZ, joinO, joinMapId, taxiStart, taxiEnd, mountSpell) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", CONNECTION_ASYNC)
+ PREPARE_STATEMENT(CHAR_DEL_PLAYER_BGDATA, "DELETE FROM character_battleground_data WHERE guid = ?", CONNECTION_ASYNC)
+ PREPARE_STATEMENT(CHAR_RESET_PLAYERS_BGDATA, "UPDATE character_battleground_data SET instanceId = 0", CONNECTION_SYNCH)
}
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h
index d0b90f4167c..da3e209af09 100755
--- a/src/server/shared/Database/Implementation/CharacterDatabase.h
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.h
@@ -248,10 +248,13 @@ enum CharacterDatabaseStatements
CHAR_UPDATE_ARENA_TEAM_MEMBER_STATS,
CHAR_LOAD_PLAYER_ARENA_TEAMS,
-
CHAR_LOAD_PETITION,
CHAR_LOAD_PETITION_SIGNATURE,
+ CHAR_ADD_PLAYER_BGDATA,
+ CHAR_DEL_PLAYER_BGDATA,
+ CHAR_RESET_PLAYERS_BGDATA,
+
MAX_CHARACTERDATABASE_STATEMENTS,
};
diff --git a/src/server/worldserver/Master.cpp b/src/server/worldserver/Master.cpp
index 1e3f9cd5e99..36ac9cabed7 100755
--- a/src/server/worldserver/Master.cpp
+++ b/src/server/worldserver/Master.cpp
@@ -486,5 +486,5 @@ void Master::clearOnlineAccounts()
CharacterDatabase.DirectExecute("UPDATE characters SET online = 0 WHERE online <> 0");
// Battleground instance ids reset at server restart
- CharacterDatabase.DirectExecute("UPDATE character_battleground_data SET instance_id = 0");
+ CharacterDatabase.DirectExecute(CharacterDatabase.GetPreparedStatement(CHAR_RESET_PLAYERS_BGDATA));
}