Core/DataStores: Speedup loading hotfix database and change hotfix database character set to utf8mb4

This commit is contained in:
Shauren
2020-04-25 17:01:26 +02:00
parent 96ec1f16d4
commit af76dc6b88
5 changed files with 1803 additions and 293 deletions
@@ -67,10 +67,10 @@ char* DB2DatabaseLoader::Load(uint32& records, char**& indexTable, char*& string
stringHolders = nullptr;
// Resize index table
// database query *MUST* contain ORDER BY `index_field` DESC clause
uint32 indexTableSize = (*result)[indexField].GetUInt32() + 1;
if (indexTableSize < records)
indexTableSize = records;
uint32 indexTableSize = records;
if (PreparedQueryResult maxIdResult = HotfixDatabase.Query(HotfixDatabase.GetPreparedStatement(HotfixDatabaseStatements(_loadInfo->Statement + 1))))
if ((*maxIdResult)[0].GetUInt32() > records)
indexTableSize = (*maxIdResult)[0].GetUInt32();
if (indexTableSize > records)
{
@@ -202,7 +202,7 @@ char* DB2DatabaseLoader::Load(uint32& records, char**& indexTable, char*& string
void DB2DatabaseLoader::LoadStrings(uint32 locale, uint32 records, char** indexTable, std::vector<char*>& stringPool)
{
HotfixDatabasePreparedStatement* stmt = HotfixDatabase.GetPreparedStatement(HotfixDatabaseStatements(_loadInfo->Statement + 1));
HotfixDatabasePreparedStatement* stmt = HotfixDatabase.GetPreparedStatement(HotfixDatabaseStatements(_loadInfo->Statement + 2));
stmt->setString(0, localeNames[locale]);
PreparedQueryResult result = HotfixDatabase.Query(stmt);
if (!result)