@Override public byte[] getComplexParentFlattenedBytePage() throws IOException { // output LV encoded byte array int offset = 0; byte[] data = new byte[totalLength]; for (int rowId = 0; rowId < rowOffset.getActualRowCount() - 1; rowId++) { int length = (rowOffset.getInt(rowId + 1) - rowOffset.getInt(rowId)); copyBytes(rowId, data, offset, length); offset += length; } return data; }
@Override public ColumnPage decode(byte[] input, int offset, int length) throws MemoryException, IOException { ColumnPage page = ColumnPage.decompress(meta, input, offset, length, false); return LazyColumnPage.newPage(page, converter); }
@Override public byte[] getDecimalPage() { // output LV encoded byte array int offset = 0; byte[] data = new byte[totalLength]; for (int rowId = 0; rowId < pageSize; rowId++) { int length = rowOffset.getInt(rowId + 1) - rowOffset.getInt(rowId); copyBytes(rowId, data, offset, length); offset += length; } return data; }
@Override public BigDecimal getDecimal(int rowId) { // rowOffset is initialed for query in `VarLengthColumnPageBase.getDecimalColumnPage` // if its size is 0, we are in loading process and the data in column page is raw if (rowOffset.getActualRowCount() == 0) { return getDecimalFromRawData(rowId); } else { return getDecimalFromDecompressData(rowId); } }
private LazyColumnPage(ColumnPage columnPage, ColumnPageValueConverter converter) { super(columnPage.getColumnPageEncoderMeta(), columnPage.getPageSize()); this.columnPage = columnPage; this.converter = converter; }
private static ColumnPage createDecimalPage(ColumnPageEncoderMeta columnPageEncoderMeta, int pageSize) { if (isUnsafeEnabled(columnPageEncoderMeta)) { try { return new UnsafeDecimalColumnPage(columnPageEncoderMeta, pageSize); } catch (MemoryException e) { throw new RuntimeException(e); } } else { return new SafeDecimalColumnPage(columnPageEncoderMeta, pageSize); } }
private static ColumnPage createFixLengthByteArrayPage( ColumnPageEncoderMeta columnPageEncoderMeta, int pageSize, int eachValueSize) { if (isUnsafeEnabled(columnPageEncoderMeta)) { try { return new UnsafeFixLengthColumnPage(columnPageEncoderMeta, pageSize, eachValueSize); } catch (MemoryException e) { throw new RuntimeException(e); } } else { return new SafeFixLengthColumnPage(columnPageEncoderMeta, pageSize); } }
private static ColumnPage createVarLengthPage(ColumnPageEncoderMeta columnPageEncoderMeta, int pageSize) { if (isUnsafeEnabled(columnPageEncoderMeta)) { try { return new UnsafeVarLengthColumnPage(columnPageEncoderMeta, pageSize); } catch (MemoryException e) { throw new RuntimeException(e); } } else { return new SafeVarLengthColumnPage(columnPageEncoderMeta, pageSize); } }
private static ColumnPage newShortPage(ColumnPageEncoderMeta meta, short[] shortData) { ColumnPage columnPage = createPage(meta, shortData.length); columnPage.setShortPage(shortData); return columnPage; }
/** * free memory as needed */ public void freeMemory() { if (null != rowOffset) { rowOffset.freeMemory(); rowOffset = null; } }
private static ColumnPage newFloatPage(ColumnPageEncoderMeta meta, float[] floatData) { ColumnPage columnPage = createPage(meta, floatData.length); columnPage.setFloatPage(floatData); return columnPage; }
private static ColumnPage newDoublePage(ColumnPageEncoderMeta meta, double[] doubleData) { ColumnPage columnPage = createPage(meta, doubleData.length); columnPage.setDoublePage(doubleData); return columnPage; }
private static ColumnPage newDecimalPage(ColumnPageEncoderMeta meta, byte[] lvEncodedByteArray) throws MemoryException { return VarLengthColumnPageBase .newDecimalColumnPage(meta, lvEncodedByteArray, lvEncodedByteArray.length); }
@Override public void freeMemory() { byteArrayData = null; super.freeMemory(); } }
public static EncodedTablePage newInstance(int pageSize, EncodedColumnPage[] dimensionPages, EncodedColumnPage[] measurePages, TablePageKey tablePageKey) throws IOException { return new EncodedTablePage(pageSize, dimensionPages, measurePages, tablePageKey); }
private EncodedTablePage(int pageSize, EncodedColumnPage[] dimensionPages, EncodedColumnPage[] measurePages, TablePageKey tablePageKey) throws IOException { this.dimensionPages = dimensionPages; this.measurePages = measurePages; this.pageSize = pageSize; this.pageKey = tablePageKey; this.encodedSize = calculatePageSize(dimensionPages, measurePages); }
@Override public byte[] getLVFlattenedBytePage() throws IOException { if (null != encodedDataColumnPage) { return encodedDataColumnPage.getLVFlattenedBytePage(); } else { return actualDataColumnPage.getLVFlattenedBytePage(); } }
@Override public byte[] getComplexChildrenLVFlattenedBytePage() throws IOException { if (null != encodedDataColumnPage) { return encodedDataColumnPage.getComplexChildrenLVFlattenedBytePage(); } else { return actualDataColumnPage.getComplexChildrenLVFlattenedBytePage(); } }
@Override public ColumnPage decode(byte[] input, int offset, int length, boolean isLVEncoded) throws MemoryException, IOException { return LazyColumnPage .newPage(ColumnPage.decompress(meta, input, offset, length, isLVEncoded), converter); } };
@Override public ColumnPage decode(byte[] input, int offset, int length) throws MemoryException, IOException { ColumnPage page = ColumnPage.decompress(meta, input, offset, length, false); return LazyColumnPage.newPage(page, converter); }