From 67a1d17ae286f1aefb55ae3aa1060a31ab49c7cf Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 2 Mar 2025 13:45:26 +0100 Subject: Core/DataStores: Support non-uint32 ID fields (cherry picked from commit dac15a32a6361a5e47e17b621828369b1b7a4d84) --- src/common/DataStores/DB2FileLoader.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/common/DataStores/DB2FileLoader.cpp') diff --git a/src/common/DataStores/DB2FileLoader.cpp b/src/common/DataStores/DB2FileLoader.cpp index 12df8086a45..d3dfa65bf90 100644 --- a/src/common/DataStores/DB2FileLoader.cpp +++ b/src/common/DataStores/DB2FileLoader.cpp @@ -746,7 +746,20 @@ unsigned char const* DB2FileLoaderRegularImpl::GetRawRecordData(uint32 recordNum uint32 DB2FileLoaderRegularImpl::RecordGetId(uint8 const* record, uint32 recordIndex) const { if (_loadInfo->Meta->HasIndexFieldInData()) - return RecordGetVarInt(record, _loadInfo->Meta->GetIndexField(), 0); + { + uint32 indexField = _loadInfo->Meta->GetIndexField(); + switch (_loadInfo->Meta->Fields[indexField].Type) + { + case FT_INT: + return RecordGetVarInt(record, indexField, 0); + case FT_BYTE: + return RecordGetVarInt(record, indexField, 0); + case FT_SHORT: + return RecordGetVarInt(record, indexField, 0); + default: + ABORT_MSG("Unhandled ID type %u in %s", uint32(_loadInfo->Meta->Fields[indexField].Type), _fileName); + } + } return _idTable[recordIndex]; } -- cgit v1.2.3