aboutsummaryrefslogtreecommitdiff
path: root/src/common/DataStores/DB2Meta.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2018-12-09 14:45:03 +0100
committerShauren <shauren.trinity@gmail.com>2018-12-09 14:45:03 +0100
commitf94deace764f0b8d99249760d2bc2e85c891c387 (patch)
tree4c7c56f34768fc7aef05268061a12845c5bf67ce /src/common/DataStores/DB2Meta.cpp
parent8725eec9c1c15f3e76bd9d524d4a5d8d0b3f0a44 (diff)
parenta70030ff252b266d12023ffada2a309409c1ccdb (diff)
Merge branch 'bfa'
Diffstat (limited to 'src/common/DataStores/DB2Meta.cpp')
-rw-r--r--src/common/DataStores/DB2Meta.cpp46
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;
}