diff options
author | Shauren <shauren.trinity@gmail.com> | 2018-12-09 14:45:03 +0100 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2018-12-09 14:45:03 +0100 |
commit | f94deace764f0b8d99249760d2bc2e85c891c387 (patch) | |
tree | 4c7c56f34768fc7aef05268061a12845c5bf67ce /src/common/DataStores/DB2Meta.cpp | |
parent | 8725eec9c1c15f3e76bd9d524d4a5d8d0b3f0a44 (diff) | |
parent | a70030ff252b266d12023ffada2a309409c1ccdb (diff) |
Merge branch 'bfa'
Diffstat (limited to 'src/common/DataStores/DB2Meta.cpp')
-rw-r--r-- | src/common/DataStores/DB2Meta.cpp | 46 |
1 files changed, 34 insertions, 12 deletions
diff --git a/src/common/DataStores/DB2Meta.cpp b/src/common/DataStores/DB2Meta.cpp index d948786cd1a..b744639fae6 100644 --- a/src/common/DataStores/DB2Meta.cpp +++ b/src/common/DataStores/DB2Meta.cpp @@ -18,8 +18,12 @@ #include "DB2Meta.h" #include "Errors.h" -DB2Meta::DB2Meta(int32 indexField, uint32 fieldCount, uint32 layoutHash, char const* types, uint8 const* arraySizes, int32 parentIndexField) - : IndexField(indexField), ParentIndexField(parentIndexField), FieldCount(fieldCount), LayoutHash(layoutHash), Types(types), ArraySizes(arraySizes) +DB2MetaField::DB2MetaField(DBCFormer type, uint8 arraySize, bool isSigned) : Type(type), ArraySize(arraySize), IsSigned(isSigned) +{ +} + +DB2Meta::DB2Meta(int32 indexField, uint32 fieldCount, uint32 layoutHash, DB2MetaField const* fields, int32 parentIndexField) + : IndexField(indexField), ParentIndexField(parentIndexField), FieldCount(fieldCount), LayoutHash(layoutHash), Fields(fields) { } @@ -38,9 +42,9 @@ uint32 DB2Meta::GetRecordSize() const uint32 size = 0; for (uint32 i = 0; i < FieldCount; ++i) { - for (uint8 j = 0; j < ArraySizes[i]; ++j) + for (uint8 j = 0; j < Fields[i].ArraySize; ++j) { - switch (Types[i]) + switch (Fields[i].Type) { case FT_BYTE: size += 1; @@ -56,10 +60,11 @@ uint32 DB2Meta::GetRecordSize() const size += 8; break; case FT_STRING: + case FT_STRING_NOT_LOCALIZED: size += sizeof(char*); break; default: - ASSERT(false, "Unsupported column type specified %c", Types[i]); + ASSERT(false, "Unsupported column type specified %c", Fields[i].Type); break; } } @@ -82,9 +87,9 @@ int32 DB2Meta::GetParentIndexFieldOffset() const for (int32 i = 0; i < ParentIndexField; ++i) { - for (uint8 j = 0; j < ArraySizes[i]; ++j) + for (uint8 j = 0; j < Fields[i].ArraySize; ++j) { - switch (Types[i]) + switch (Fields[i].Type) { case FT_BYTE: offset += 1; @@ -100,10 +105,11 @@ int32 DB2Meta::GetParentIndexFieldOffset() const offset += 8; break; case FT_STRING: + case FT_STRING_NOT_LOCALIZED: offset += sizeof(char*); break; default: - ASSERT(false, "Unsupported column type specified %c", Types[i]); + ASSERT(false, "Unsupported column type specified %c", Fields[i].Type); break; } } @@ -119,7 +125,7 @@ uint32 DB2Meta::GetDbIndexField() const uint32 index = 0; for (uint32 i = 0; i < FieldCount && i < uint32(IndexField); ++i) - index += ArraySizes[i]; + index += Fields[i].ArraySize; return index; } @@ -128,7 +134,7 @@ uint32 DB2Meta::GetDbFieldCount() const { uint32 fields = 0; for (uint32 i = 0; i < FieldCount; ++i) - fields += ArraySizes[i]; + fields += Fields[i].ArraySize; if (!HasIndexFieldInData()) ++fields; @@ -136,7 +142,23 @@ uint32 DB2Meta::GetDbFieldCount() const return fields; } -DB2FieldMeta::DB2FieldMeta(bool isSigned, DBCFormer type, char const* name) - : IsSigned(isSigned), Type(type), Name(name) +bool DB2Meta::IsSignedField(uint32 field) const { + switch (Fields[field].Type) + { + case FT_STRING: + case FT_STRING_NOT_LOCALIZED: + case FT_FLOAT: + return false; + case FT_INT: + case FT_BYTE: + case FT_SHORT: + case FT_LONG: + default: + break; + } + if (field == uint32(IndexField)) + return false; + + return Fields[field].IsSigned; } |