diff --git a/src/include/processor/operator/persistent/reader/parquet/column_reader.h b/src/include/processor/operator/persistent/reader/parquet/column_reader.h index 9920b7ac7d..9a61863b65 100644 --- a/src/include/processor/operator/persistent/reader/parquet/column_reader.h +++ b/src/include/processor/operator/persistent/reader/parquet/column_reader.h @@ -72,6 +72,7 @@ class ColumnReader { result->setNull(i + resultOffset, true); continue; } + result->setNull(i + resultOffset, false); if (filter[i + resultOffset]) { VALUE_TYPE val = CONVERSION::plainRead(*plainData, *this); result->setValue(i + resultOffset, val); diff --git a/src/processor/operator/persistent/reader/parquet/list_column_reader.cpp b/src/processor/operator/persistent/reader/parquet/list_column_reader.cpp index 8011275f0c..50c8e70bb0 100644 --- a/src/processor/operator/persistent/reader/parquet/list_column_reader.cpp +++ b/src/processor/operator/persistent/reader/parquet/list_column_reader.cpp @@ -95,10 +95,12 @@ uint64_t ListColumnReader::read(uint64_t numValues, parquet_filter_t& /*filter*/ break; } if (childDefinesPtr[childIdx] >= maxDefine) { + resultOut->setNull(resultOffset, false); // value has been defined down the stack, hence its NOT NULL resultPtr[resultOffset].offset = childIdx + currentChunkOffset; resultPtr[resultOffset].size = 1; } else if (childDefinesPtr[childIdx] == maxDefine - 1) { + resultOut->setNull(resultOffset, false); resultPtr[resultOffset].offset = childIdx + currentChunkOffset; resultPtr[resultOffset].size = 0; } else { diff --git a/src/processor/operator/persistent/reader/parquet/struct_column_reader.cpp b/src/processor/operator/persistent/reader/parquet/struct_column_reader.cpp index 9b76d188fc..b1d70525ae 100644 --- a/src/processor/operator/persistent/reader/parquet/struct_column_reader.cpp +++ b/src/processor/operator/persistent/reader/parquet/struct_column_reader.cpp @@ -58,9 +58,7 @@ uint64_t StructColumnReader::read(uint64_t numValuesToRead, parquet_filter_t& fi } } for (auto i = 0u; i < numValuesRead; i++) { - if (define_out[i] < maxDefine) { - result->setNull(i, true); - } + result->setNull(i, define_out[i] < maxDefine); } return numValuesRead;