private void updateDimensionMinMax(EncodedColumnPage[] dimensions) { for (int i = 0; i < dimensions.length; i++) { SimpleStatsResult stats = dimensions[i].getStats(); Object min = stats.getMin(); Object max = stats.getMax(); if (CarbonUtil.isEncodedWithMeta(dimensions[i].getPageMetadata().getEncoders())) { dimensionMaxValue[i] = DataTypeUtil .getMinMaxBytesBasedOnDataTypeForNoDictionaryColumn(max, stats.getDataType()); dimensionMinValue[i] = DataTypeUtil .getMinMaxBytesBasedOnDataTypeForNoDictionaryColumn(min, stats.getDataType()); } else { dimensionMaxValue[i] = CarbonUtil.getValueAsBytes(stats.getDataType(), max); dimensionMinValue[i] = CarbonUtil.getValueAsBytes(stats.getDataType(), min); } writeMinMaxForDimensions[i] = stats.writeMinMax(); } }
private BlockletMinMaxIndex buildMinMaxIndex(ColumnPage inputPage, List<Encoding> encoders) { BlockletMinMaxIndex index = new BlockletMinMaxIndex(); ByteBuffer max; ByteBuffer min; if (CarbonUtil.isEncodedWithMeta(encoders) && inputPage.getColumnSpec().getColumnType() == ColumnType.PLAIN_VALUE) { max = ByteBuffer.wrap(DataTypeUtil .getMinMaxBytesBasedOnDataTypeForNoDictionaryColumn(inputPage.getStatistics().getMax(), inputPage.getDataType())); min = ByteBuffer.wrap(DataTypeUtil .getMinMaxBytesBasedOnDataTypeForNoDictionaryColumn(inputPage.getStatistics().getMin(), inputPage.getDataType())); } else { byte[] bytes = CarbonUtil.getValueAsBytes(inputPage.getDataType(), inputPage.getStatistics().getMax()); max = ByteBuffer.wrap(bytes); min = ByteBuffer.wrap( CarbonUtil.getValueAsBytes(inputPage.getDataType(), inputPage.getStatistics().getMin())); } index.addToMax_values(max); index.addToMin_values(min); index.addToMin_max_presence(inputPage.getStatistics().writeMinMax()); return index; }