diff options
| author | Shauren <shauren.trinity@gmail.com> | 2019-11-28 00:23:09 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2019-11-28 00:23:09 +0100 |
| commit | 235ec18143a23602c8e96573b2f3e2dcec4801c9 (patch) | |
| tree | 2c813c504e2eabb6d1e4f45dc6557ca9f6282849 /src/common/DataStores/DB2Meta.cpp | |
| parent | cf0e2336895eb410857755a62550b148f7df58da (diff) | |
Core/DataStores: Work around buggy client db2 metadata
Diffstat (limited to 'src/common/DataStores/DB2Meta.cpp')
| -rw-r--r-- | src/common/DataStores/DB2Meta.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/common/DataStores/DB2Meta.cpp b/src/common/DataStores/DB2Meta.cpp index 551442c92a8..c8b6ae3490f 100644 --- a/src/common/DataStores/DB2Meta.cpp +++ b/src/common/DataStores/DB2Meta.cpp @@ -22,8 +22,8 @@ DB2MetaField::DB2MetaField(DBCFormer type, uint8 arraySize, bool isSigned) : Typ { } -DB2Meta::DB2Meta(uint32 fileDataId, int32 indexField, uint32 fieldCount, uint32 layoutHash, DB2MetaField const* fields, int32 parentIndexField) - : FileDataId(fileDataId),IndexField(indexField), ParentIndexField(parentIndexField), FieldCount(fieldCount), LayoutHash(layoutHash), Fields(fields) +DB2Meta::DB2Meta(uint32 fileDataId, int32 indexField, uint32 fieldCount, uint32 fileFieldCount, uint32 layoutHash, DB2MetaField const* fields, int32 parentIndexField) + : FileDataId(fileDataId),IndexField(indexField), ParentIndexField(parentIndexField), FieldCount(fieldCount), FileFieldCount(fileFieldCount), LayoutHash(layoutHash), Fields(fields) { } @@ -44,6 +44,12 @@ uint32 DB2Meta::GetRecordSize() const { for (uint8 j = 0; j < Fields[i].ArraySize; ++j) { + if (i >= FileFieldCount && i == ParentIndexField) + { + size += 4; + continue; + } + switch (Fields[i].Type) { case FT_BYTE: @@ -87,6 +93,12 @@ uint32 DB2Meta::GetIndexFieldOffset() const { for (uint8 j = 0; j < Fields[i].ArraySize; ++j) { + if (i >= int32(FileFieldCount) && i == ParentIndexField) + { + offset += 4; + continue; + } + switch (Fields[i].Type) { case FT_BYTE: @@ -197,7 +209,7 @@ bool DB2Meta::IsSignedField(uint32 field) const default: break; } - if (field == uint32(IndexField)) + if (field == uint32(IndexField) || field == uint32(ParentIndexField)) return false; return Fields[field].IsSigned; |
