aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorleak <leakzx@googlemail.com>2011-01-19 02:53:44 +0100
committerleak <leakzx@googlemail.com>2011-01-19 02:53:44 +0100
commitb8210f4396cd266137ad69ea0ae4efe715072926 (patch)
tree8f40efad87ad62d8e436ce5ceb805564fd920b3d /src
parent719ffeb414c97e09469bd2af2bf381ea6f7eecec (diff)
SQL: Characters db storage type cleanup #1 - Note:
- MySQL numeric types can NOT be altered in value range or or storage size at all, so things like INT(32) are entirely pointless. As TC currently doesn't use the display width of numeric types, use the default width to avoid confusion. (see MySQL numeric types docs) - Timestamps can be stored as INT(10) UNSIGNED. As the max value of this type is 4294967295 which translates into year 2106 using it as timestamp we are NOT affected by the year 2038 bug. If the timestamp needs to be negative in some cases, i.e. for displaying infinity using -1, use BIGINT(20) instead. - Do NOT set ROW_FORMAT for InnoDB tables unless you specifically want COMPRESSED tables (which we don't for performance reasons). MySQL will chose the appropriate ROW_FORMAT by itself depending on the innodb_file_format setting of the server. (FIXED is only available for MyISAM) - Even though VARCHAR does require less storage space than CHAR for values with variable length, the length still needs to be chosen wisely as this doesn't apply to memory consumption.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Achievements/AchievementMgr.cpp8
-rwxr-xr-xsrc/server/game/Battlegrounds/ArenaTeam.cpp4
-rwxr-xr-xsrc/server/game/Server/WorldSession.cpp4
3 files changed, 8 insertions, 8 deletions
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index fb8ed5b0fdc..3b740993458 100755
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -574,14 +574,14 @@ void AchievementMgr::LoadFromDB(PreparedQueryResult achievementResult, PreparedQ
do
{
Field* fields = achievementResult->Fetch();
- uint32 achievement_id = fields[0].GetUInt32();
+ uint32 achievement_id = fields[0].GetUInt16();
// don't must happen: cleanup at server startup in sAchievementMgr->LoadCompletedAchievements()
if (!sAchievementStore.LookupEntry(achievement_id))
continue;
CompletedAchievementData& ca = m_completedAchievements[achievement_id];
- ca.date = time_t(fields[1].GetUInt64());
+ ca.date = time_t(fields[1].GetUInt32());
ca.changed = false;
}
while (achievementResult->NextRow());
@@ -592,9 +592,9 @@ void AchievementMgr::LoadFromDB(PreparedQueryResult achievementResult, PreparedQ
do
{
Field* fields = criteriaResult->Fetch();
- uint32 id = fields[0].GetUInt32();
+ uint32 id = fields[0].GetUInt16();
uint32 counter = fields[1].GetUInt32();
- time_t date = time_t(fields[2].GetUInt64());
+ time_t date = time_t(fields[2].GetUInt32());
AchievementCriteriaEntry const* criteria = sAchievementCriteriaStore.LookupEntry(id);
if (!criteria)
diff --git a/src/server/game/Battlegrounds/ArenaTeam.cpp b/src/server/game/Battlegrounds/ArenaTeam.cpp
index b712e6cff08..7b559198cff 100755
--- a/src/server/game/Battlegrounds/ArenaTeam.cpp
+++ b/src/server/game/Battlegrounds/ArenaTeam.cpp
@@ -198,9 +198,9 @@ bool ArenaTeam::LoadArenaTeamFromDB(QueryResult arenaTeamDataResult)
m_CaptainGuid = MAKE_NEW_GUID(fields[2].GetUInt32(), 0, HIGHGUID_PLAYER);
m_Type = fields[3].GetUInt32();
m_BackgroundColor = fields[4].GetUInt32();
- m_EmblemStyle = fields[5].GetUInt32();
+ m_EmblemStyle = fields[5].GetUInt8();
m_EmblemColor = fields[6].GetUInt32();
- m_BorderStyle = fields[7].GetUInt32();
+ m_BorderStyle = fields[7].GetUInt8();
m_BorderColor = fields[8].GetUInt32();
//load team stats
m_stats.rating = fields[9].GetUInt32();
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
index 0670e206554..88b6120d28d 100755
--- a/src/server/game/Server/WorldSession.cpp
+++ b/src/server/game/Server/WorldSession.cpp
@@ -604,7 +604,7 @@ void WorldSession::LoadAccountData(PreparedQueryResult result, uint32 mask)
do
{
Field *fields = result->Fetch();
- uint32 type = fields[0].GetUInt32();
+ uint32 type = fields[0].GetUInt8();
if (type >= NUM_ACCOUNT_DATA_TYPES)
{
sLog->outError("Table `%s` have invalid account data type (%u), ignore.", mask == GLOBAL_CACHE_MASK ? "account_data" : "character_account_data", type);
@@ -617,7 +617,7 @@ void WorldSession::LoadAccountData(PreparedQueryResult result, uint32 mask)
continue;
}
- m_accountData[type].Time = fields[1].GetUInt32();
+ m_accountData[type].Time = time_t(fields[1].GetUInt32());
m_accountData[type].Data = fields[2].GetString();
}
while (result->NextRow());