From 9dda79f47c6fcdbd0c2c6493f9571b33fc4d8786 Mon Sep 17 00:00:00 2001 From: Alon Catz Date: Mon, 11 Jan 2021 17:08:12 +0200 Subject: [PATCH] Fix reading of plain dictionary with zero length --- src/Parquet/File/DataColumnReader.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Parquet/File/DataColumnReader.cs b/src/Parquet/File/DataColumnReader.cs index 86374db1..6385e217 100644 --- a/src/Parquet/File/DataColumnReader.cs +++ b/src/Parquet/File/DataColumnReader.cs @@ -265,8 +265,10 @@ private static int ReadPlainDictionary(BinaryReader reader, int maxReadCount, in int start = offset; int bitWidth = reader.ReadByte(); + int length = GetRemainingLength(reader); + //when bit width is zero reader must stop and just repeat zero maxValue number of times - if (bitWidth == 0) + if (bitWidth == 0 || length == 0) { for (int i = 0; i < maxReadCount; i++) { @@ -275,7 +277,6 @@ private static int ReadPlainDictionary(BinaryReader reader, int maxReadCount, in } else { - int length = GetRemainingLength(reader); offset += RunLengthBitPackingHybridValuesReader.ReadRleBitpackedHybrid(reader, bitWidth, length, dest, offset, maxReadCount); }