public boolean isEncodedWithAdaptiveMeta(DataChunk2 pageMetadata) { List<Encoding> encodings = pageMetadata.getEncoders(); if (encodings != null && !encodings.isEmpty()) { Encoding encoding = encodings.get(0); switch (encoding) { case ADAPTIVE_INTEGRAL: case ADAPTIVE_DELTA_INTEGRAL: case ADAPTIVE_FLOATING: case ADAPTIVE_DELTA_FLOATING: return true; } } return false; }
private ColumnPage decodeDimensionByMeta(DataChunk2 pageMetadata, ByteBuffer pageData, int offset, boolean isLocalDictEncodedPage, ColumnVectorInfo vectorInfo, BitSet nullBitSet, ReusableDataBuffer reusableDataBuffer) throws IOException, MemoryException { List<Encoding> encodings = pageMetadata.getEncoders(); List<ByteBuffer> encoderMetas = pageMetadata.getEncoder_meta(); String compressorName = CarbonMetadataUtil.getCompressorNameFromChunkMeta( pageMetadata.getChunk_meta()); ColumnPageDecoder decoder = encodingFactory.createDecoder(encodings, encoderMetas, compressorName, vectorInfo != null); if (vectorInfo != null) { decoder .decodeAndFillVector(pageData.array(), offset, pageMetadata.data_page_length, vectorInfo, nullBitSet, isLocalDictEncodedPage, pageMetadata.numberOfRowsInpage, reusableDataBuffer); return null; } else { return decoder .decode(pageData.array(), offset, pageMetadata.data_page_length, isLocalDictEncodedPage); } }
/** * Decode measure column page with page header and raw data starting from offset */ protected ColumnPage decodeMeasure(DataChunk2 pageMetadata, ByteBuffer pageData, int offset, ColumnVectorInfo vectorInfo, BitSet nullBitSet, ReusableDataBuffer reusableDataBuffer) throws MemoryException, IOException { List<Encoding> encodings = pageMetadata.getEncoders(); org.apache.carbondata.core.metadata.encoder.Encoding.validateEncodingTypes(encodings); List<ByteBuffer> encoderMetas = pageMetadata.getEncoder_meta(); String compressorName = CarbonMetadataUtil.getCompressorNameFromChunkMeta(pageMetadata.getChunk_meta()); ColumnPageDecoder codec = encodingFactory.createDecoder(encodings, encoderMetas, compressorName, vectorInfo != null); if (vectorInfo != null) { codec.decodeAndFillVector(pageData.array(), offset, pageMetadata.data_page_length, vectorInfo, nullBitSet, false, pageMetadata.numberOfRowsInpage, reusableDataBuffer); return null; } else { return codec .decode(pageData.array(), offset, pageMetadata.data_page_length); } } }
public Object getFieldValue(_Fields field) { switch (field) { case CHUNK_META: return getChunk_meta(); case ROW_MAJOR: return isRowMajor(); case DATA_PAGE_LENGTH: return getData_page_length(); case ROWID_PAGE_LENGTH: return getRowid_page_length(); case RLE_PAGE_LENGTH: return getRle_page_length(); case PRESENCE: return getPresence(); case SORT_STATE: return getSort_state(); case ENCODERS: return getEncoders(); case ENCODER_META: return getEncoder_meta(); case MIN_MAX: return getMin_max(); case NUMBER_OF_ROWS_INPAGE: return getNumberOfRowsInpage(); } throw new IllegalStateException(); }
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(); } }
ReusableDataBuffer reusableDataBuffer) throws IOException, MemoryException { List<Encoding> encodings = pageMetadata.getEncoders(); org.apache.carbondata.core.metadata.encoder.Encoding.validateEncodingTypes(encodings); if (CarbonUtil.isEncodedWithMeta(encodings)) {