From f357ea57644fa9d4fc50289a74c29011a9425122 Mon Sep 17 00:00:00 2001 From: Norbert Podhorszki Date: Fri, 18 Sep 2020 07:08:27 -0400 Subject: [PATCH] Enable missing combo: compression + aggregation. Fixes #2461 --- .../adios2/toolkit/format/bp/BPSerializer.tcc | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/source/adios2/toolkit/format/bp/BPSerializer.tcc b/source/adios2/toolkit/format/bp/BPSerializer.tcc index 9a33cfbea9..9f5f7f6739 100644 --- a/source/adios2/toolkit/format/bp/BPSerializer.tcc +++ b/source/adios2/toolkit/format/bp/BPSerializer.tcc @@ -210,7 +210,30 @@ void BPSerializer::UpdateIndexOffsetsCharacteristics(size_t ¤tPosition, 3 * sizeof(uint64_t) * dimensionsSize + 2; // 2 is for length break; } - // TODO: implement operators + case (characteristic_transform_type): + { + const size_t typeLength = + static_cast(helper::ReadValue( + buffer, currentPosition, isLittleEndian)); + // skip over operator name (transform type) string + currentPosition += typeLength; + + // skip over pre-data type (1) and dimensionsSize (1) + currentPosition += 2; + + const uint16_t dimensionsLength = helper::ReadValue( + buffer, currentPosition, isLittleEndian); + // skip over dimensions + currentPosition += dimensionsLength; + + const size_t metadataLength = + static_cast(helper::ReadValue( + buffer, currentPosition, isLittleEndian)); + // skip over operator metadata + currentPosition += metadataLength; + + break; + } default: { throw std::invalid_argument(