diff options
author | Shauren <shauren.trinity@gmail.com> | 2011-03-18 18:07:03 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2011-03-18 18:07:03 +0100 |
commit | 2364c22ee49be734cb95288f31d06c0ad594ea23 (patch) | |
tree | 38711ac5ac7fa0e24f21377a47f7eeab4edb4411 | |
parent | d3425921f808001c5854ff92aa16585cd639b854 (diff) |
Core/Storage: Readded missing record size calculations for SQL storage
-rwxr-xr-x | src/server/shared/Database/SQLStorageImpl.h | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/src/server/shared/Database/SQLStorageImpl.h b/src/server/shared/Database/SQLStorageImpl.h index 1d6d46a5d79..94f6f03560f 100755 --- a/src/server/shared/Database/SQLStorageImpl.h +++ b/src/server/shared/Database/SQLStorageImpl.h @@ -174,10 +174,42 @@ void SQLStorageLoaderBase<T>::Load(SQLStorage& store) exit(1); // Stop server at loading broken or non-compatible table. } + for (uint32 x = 0; x < store.iNumFields; ++x) + { + switch (store.dst_format[x]) + { + case FT_LOGIC: + recordsize += sizeof(bool); + break; + case FT_BYTE: + recordsize += sizeof(char); + break; + case FT_INT: + recordsize += sizeof(uint32); + break; + case FT_FLOAT: + recordsize += sizeof(float); + break; + case FT_STRING: + recordsize += sizeof(char*); + break; + case FT_NA: + case FT_NA_BYTE: + break; + case FT_IND: + case FT_SORT: + assert(false && "SQL storage does not have sort field types!"); + break; + default: + assert(false && "Unknown field format character in SQLStorage.cpp"); + break; + } + } + char** newIndex = new char*[maxi]; memset(newIndex, 0, maxi * sizeof(char*)); - char * _data = new char[store.RecordCount *recordsize]; + char * _data = new char[store.RecordCount * recordsize]; uint32 count = 0; do { @@ -209,7 +241,7 @@ void SQLStorageLoaderBase<T>::Load(SQLStorage& store) break; case FT_IND: case FT_SORT: - assert(false && "SQL storage has a field type that does not match what is in the core. Check SQLStorage.cpp or your database."); + assert(false && "SQL storage has a field type that is not allowed. Check your SQLStorage.cpp!"); break; default: assert(false && "Unknown field format character in SQLStorage.cpp"); |