in parquet-column/src/main/java/org/apache/parquet/internal/column/columnindex/ColumnIndexBuilder.java [672:725]
private void fill(
List<Boolean> nullPages,
List<Long> nullCounts,
List<ByteBuffer> minValues,
List<ByteBuffer> maxValues,
List<Long> repLevelHistogram,
List<Long> defLevelHistogram) {
clear();
int pageCount = nullPages.size();
if ((nullCounts != null && nullCounts.size() != pageCount)
|| minValues.size() != pageCount
|| maxValues.size() != pageCount) {
throw new IllegalArgumentException(String.format(
"Not all sizes are equal (nullPages:%d, nullCounts:%s, minValues:%d, maxValues:%d",
nullPages.size(),
nullCounts == null ? "null" : nullCounts.size(),
minValues.size(),
maxValues.size()));
}
if (repLevelHistogram != null && repLevelHistogram.size() % pageCount != 0) {
/// FIXME: it is unfortunate that we don't know the max repetition level here.
throw new IllegalArgumentException(String.format(
"Size of repLevelHistogram:%d is not a multiply of pageCount:%d, ",
repLevelHistogram.size(), pageCount));
}
if (defLevelHistogram != null && defLevelHistogram.size() % pageCount != 0) {
/// FIXME: it is unfortunate that we don't know the max definition level here.
throw new IllegalArgumentException(String.format(
"Size of defLevelHistogram:%d is not a multiply of pageCount:%d, ",
defLevelHistogram.size(), pageCount));
}
this.nullPages.addAll(nullPages);
// Nullcounts is optional in the format
if (nullCounts != null) {
this.nullCounts.addAll(nullCounts);
}
for (int i = 0; i < pageCount; ++i) {
if (!nullPages.get(i)) {
ByteBuffer min = minValues.get(i);
ByteBuffer max = maxValues.get(i);
addMinMaxFromBytes(min, max);
pageIndexes.add(i);
}
}
// Repetition and definition level histograms are optional in the format
if (repLevelHistogram != null) {
this.repLevelHistogram.addAll(repLevelHistogram);
}
if (defLevelHistogram != null) {
this.defLevelHistogram.addAll(defLevelHistogram);
}
}