Github user manishgupta88 commented on a diff in the pull request:
https://github.com/apache/carbondata/pull/2725#discussion_r218138883
--- Diff:
core/src/main/java/org/apache/carbondata/core/util/CarbonMetadataUtil.java ---
@@ -250,6 +275,42 @@ public static BlockletIndex
getBlockletIndex(EncodedBlocklet encodedBlocklet,
}
/**
+ * This method will combine the writeMinMax flag from all the pages. If
any page for a given
+ * dimension has writeMinMax flag set to false then min max for that
dimension will nto be
+ * written in any of the page and metadata
+ *
+ * @param blockletMinMaxIndex
+ * @param encodedBlocklet
+ */
+ private static List<Boolean> mergeWriteMinMaxFlagForAllPages(
+ BlockletMinMaxIndex blockletMinMaxIndex, EncodedBlocklet
encodedBlocklet) {
+ Boolean[] mergedWriteMinMaxFlag =
+ new Boolean[encodedBlocklet.getNumberOfDimension() +
encodedBlocklet.getNumberOfMeasure()];
+ // set writeMinMax flag to true for all the columns by default and
then update if stats object
+ // has the this flag set to false
+ Arrays.fill(mergedWriteMinMaxFlag, true);
+ for (int i = 0; i < encodedBlocklet.getNumberOfDimension(); i++) {
+ for (int pageIndex = 0; pageIndex <
encodedBlocklet.getNumberOfPages(); pageIndex++) {
+ EncodedColumnPage encodedColumnPage =
+
encodedBlocklet.getEncodedDimensionColumnPages().get(i).getEncodedColumnPageList()
+ .get(pageIndex);
+ SimpleStatsResult stats = encodedColumnPage.getStats();
+ if (!stats.writeMinMax()) {
+ mergedWriteMinMaxFlag[i] = stats.writeMinMax();
+ String columnName =
encodedColumnPage.getActualPage().getColumnSpec().getFieldName();
+ LOGGER.info("Min Max writing ignored for column " + columnName +
" from page 0 to "
--- End diff --
ok
---