@Override public MeasureRawColumnChunk readRawMeasureChunk(FileReader fileReader, int columnIndex) throws IOException { int dataLength = 0; if (measureColumnChunkOffsets.size() - 1 == columnIndex) { DataChunk2 metadataChunk = null; synchronized (fileReader) { metadataChunk = CarbonUtil.readDataChunk(ByteBuffer.wrap(fileReader .readByteArray(filePath, measureColumnChunkOffsets.get(columnIndex), measureColumnChunkLength.get(columnIndex))), 0, measureColumnChunkLength.get(columnIndex)); } dataLength = measureColumnChunkLength.get(columnIndex) + metadataChunk.data_page_length; } else { long currentMeasureOffset = measureColumnChunkOffsets.get(columnIndex); dataLength = (int) (measureColumnChunkOffsets.get(columnIndex + 1) - currentMeasureOffset); } ByteBuffer buffer = null; synchronized (fileReader) { buffer = fileReader .readByteBuffer(filePath, measureColumnChunkOffsets.get(columnIndex), dataLength); } MeasureRawColumnChunk rawColumnChunk = new MeasureRawColumnChunk(columnIndex, buffer, 0, dataLength, this); rawColumnChunk.setFileReader(fileReader); rawColumnChunk.setPagesCount(1); rawColumnChunk.setRowCount(new int[] { numberOfRows }); return rawColumnChunk; }
public ColumnPage decodeColumnPage(MeasureRawColumnChunk measureRawColumnChunk, int pageNumber, ReusableDataBuffer reusableDataBuffer) throws IOException, MemoryException { int copyPoint = (int) measureRawColumnChunk.getOffSet(); int blockIndex = measureRawColumnChunk.getColumnIndex(); ByteBuffer rawData = measureRawColumnChunk.getRawData(); DataChunk2 measureColumnChunk = CarbonUtil.readDataChunk(rawData, copyPoint, measureColumnChunkLength.get(blockIndex)); copyPoint += measureColumnChunkLength.get(blockIndex); ColumnPage page = decodeMeasure(measureRawColumnChunk, measureColumnChunk, copyPoint, reusableDataBuffer); page.setNullBits(QueryUtil.getNullBitSet(measureColumnChunk.presence, this.compressor)); return page; }
if (dimensionChunksOffset.size() - 1 == blockIndex) { dimensionColumnChunk = CarbonUtil.readDataChunk(rawData, copySourcePoint, dimensionRawColumnChunk.getLength()); int totalDimensionDataLength = dimensionColumnChunk.data_page_length + dimensionColumnChunk.rle_page_length CarbonUtil.readDataChunk(rawData, copySourcePoint, dimensionChunksLength.get(blockIndex)); copySourcePoint += dimensionChunksLength.get(blockIndex);