diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/shared/DataStores/DB2DatabaseLoader.cpp | 18 | ||||
| -rw-r--r-- | src/server/shared/DataStores/DB2DatabaseLoader.h | 2 | ||||
| -rw-r--r-- | src/server/shared/DataStores/DB2Store.cpp | 12 | 
3 files changed, 4 insertions, 28 deletions
diff --git a/src/server/shared/DataStores/DB2DatabaseLoader.cpp b/src/server/shared/DataStores/DB2DatabaseLoader.cpp index 33053d4b928..cd081dafaae 100644 --- a/src/server/shared/DataStores/DB2DatabaseLoader.cpp +++ b/src/server/shared/DataStores/DB2DatabaseLoader.cpp @@ -30,7 +30,7 @@ DB2LoadInfo::DB2LoadInfo(DB2FieldMeta const* fields, std::size_t fieldCount, DB2  static char const* nullStr = ""; -char* DB2DatabaseLoader::Load(bool custom, uint32& records, char**& indexTable, char*& stringHolders, std::vector<char*>& stringPool) +char* DB2DatabaseLoader::Load(bool custom, uint32& records, char**& indexTable, std::vector<char*>& stringPool)  {      // Even though this query is executed only once, prepared statement is used to send data from mysql server in binary format      HotfixDatabasePreparedStatement* stmt = HotfixDatabase.GetPreparedStatement(_loadInfo->Statement); @@ -48,22 +48,6 @@ char* DB2DatabaseLoader::Load(bool custom, uint32& records, char**& indexTable,      // we store flat holders pool as single memory block      std::size_t stringFields = _loadInfo->GetStringFieldCount(false); -    std::size_t localizedStringFields = _loadInfo->GetStringFieldCount(true); - -    // each string field at load have array of string for each locale -    std::size_t stringHoldersRecordPoolSize = localizedStringFields * sizeof(LocalizedString) + (stringFields - localizedStringFields) * sizeof(char*); - -    if (stringFields) -    { -        std::size_t stringHoldersPoolSize = stringHoldersRecordPoolSize * result->GetRowCount(); -        stringHolders = new char[stringHoldersPoolSize]; - -        // DB2 strings expected to have at least empty string -        for (std::size_t i = 0; i < stringHoldersPoolSize / sizeof(char*); ++i) -            ((char const**)stringHolders)[i] = nullStr; -    } -    else -        stringHolders = nullptr;      // Resize index table      uint32 indexTableSize = records; diff --git a/src/server/shared/DataStores/DB2DatabaseLoader.h b/src/server/shared/DataStores/DB2DatabaseLoader.h index a8389e7cde7..4aefc503af0 100644 --- a/src/server/shared/DataStores/DB2DatabaseLoader.h +++ b/src/server/shared/DataStores/DB2DatabaseLoader.h @@ -36,7 +36,7 @@ class TC_SHARED_API DB2DatabaseLoader  public:      DB2DatabaseLoader(std::string const& storageName, DB2LoadInfo const* loadInfo) : _storageName(storageName), _loadInfo(loadInfo) { } -    char* Load(bool custom, uint32& records, char**& indexTable, char*& stringHolders, std::vector<char*>& stringPool); +    char* Load(bool custom, uint32& records, char**& indexTable, std::vector<char*>& stringPool);      void LoadStrings(bool custom, LocaleConstant locale, uint32 records, char** indexTable, std::vector<char*>& stringPool);      static char* AddString(char const** holder, std::string const& value); diff --git a/src/server/shared/DataStores/DB2Store.cpp b/src/server/shared/DataStores/DB2Store.cpp index bfa333ec448..afec92455c1 100644 --- a/src/server/shared/DataStores/DB2Store.cpp +++ b/src/server/shared/DataStores/DB2Store.cpp @@ -127,16 +127,8 @@ void DB2StorageBase::LoadFromDB(char**& indexTable)  {      DB2DatabaseLoader loader(_fileName, _loadInfo); -    auto loadTable = [&](bool custom) -    { -        char* extraStringHolders = nullptr; -        _dataTableEx[custom ? 1 : 0] = loader.Load(custom, _indexTableSize, indexTable, extraStringHolders, _stringPool); -        if (extraStringHolders) -            _stringPool.push_back(extraStringHolders); -    }; - -    loadTable(false); -    loadTable(true); +    _dataTableEx[0] = loader.Load(false, _indexTableSize, indexTable, _stringPool); +    _dataTableEx[1] = loader.Load(true, _indexTableSize, indexTable, _stringPool);      _stringPool.shrink_to_fit();  }  | 
