@Override public void serialize(Block block, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { SliceOutput output = new DynamicSliceOutput(64); writeBlock(blockEncodingSerde, output, block); String encoded = Base64.getEncoder().encodeToString(output.slice().getBytes()); jsonGenerator.writeString(encoded); } }
@Override public Block deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { byte[] decoded = Base64.getDecoder().decode(jsonParser.readValueAs(String.class)); return readBlock(blockEncodingSerde, Slices.wrappedBuffer(decoded)); } }
static void writeRawPage(Page page, SliceOutput output, BlockEncodingSerde serde) { output.writeInt(page.getChannelCount()); for (int channel = 0; channel < page.getChannelCount(); channel++) { writeBlock(serde, output, page.getBlock(channel)); } }
public static Block readBlock(BlockEncodingSerde blockEncodingSerde, Slice slice) { return readBlock(blockEncodingSerde, slice.getInput()); }
private Slice blockToSlice(Block block) { // This function is strictly for testing use only SliceOutput sliceOutput = new DynamicSliceOutput(1000); BlockSerdeUtil.writeBlock(blockEncodingSerde, sliceOutput, block); return sliceOutput.slice(); }
static Page readRawPage(int positionCount, SliceInput input, BlockEncodingSerde blockEncodingSerde) { int numberOfBlocks = input.readInt(); Block[] blocks = new Block[numberOfBlocks]; for (int i = 0; i < blocks.length; i++) { blocks[i] = readBlock(blockEncodingSerde, input); } return new Page(positionCount, blocks); }
private Slice blockToSlice(Block block) { // This function is strictly for testing use only SliceOutput sliceOutput = new DynamicSliceOutput(1000); BlockSerdeUtil.writeBlock(blockEncodingSerde, sliceOutput, block); return sliceOutput.slice(); }
@Override public Block deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { byte[] decoded = Base64.getDecoder().decode(jsonParser.readValueAs(String.class)); return readBlock(blockEncodingSerde, Slices.wrappedBuffer(decoded)); } }
BlockSerdeUtil.writeBlock(blockEncodingSerde, output, (Block) object); object = output.slice();
public static Block readBlock(BlockEncodingSerde blockEncodingSerde, Slice slice) { return readBlock(blockEncodingSerde, slice.getInput()); }
writeBlock(blockEncodingSerde, actualSliceOutput, (Block) type.getObject(block, position)); SliceOutput expectedSliceOutput = new DynamicSliceOutput(actualSliceOutput.size()); writeBlock(blockEncodingSerde, expectedSliceOutput, (Block) expectedStackValue); assertEquals(actualSliceOutput.slice(), expectedSliceOutput.slice()); try {
@Override protected Page computeNext() { if (!input.isReadable()) { return endOfData(); } int positions = input.readInt(); int numberOfBlocks = input.readInt(); Block[] blocks = new Block[numberOfBlocks]; for (int i = 0; i < blocks.length; i++) { blocks[i] = readBlock(serde, input); } @SuppressWarnings("UnnecessaryLocalVariable") Page page = new Page(positions, blocks); return page; } }
@Test public void testStackRepresentation() { Block actualBlock = arrayBlockOf(new ArrayType(BIGINT), arrayBlockOf(BIGINT, 1L, 2L), arrayBlockOf(BIGINT, 3L)); DynamicSliceOutput actualSliceOutput = new DynamicSliceOutput(100); writeBlock(functionAssertions.getMetadata().getBlockEncodingSerde(), actualSliceOutput, actualBlock); Block expectedBlock = new ArrayType(BIGINT) .createBlockBuilder(null, 3) .appendStructure(BIGINT.createBlockBuilder(null, 2).writeLong(1).closeEntry().writeLong(2).closeEntry().build()) .appendStructure(BIGINT.createBlockBuilder(null, 1).writeLong(3).closeEntry().build()) .build(); DynamicSliceOutput expectedSliceOutput = new DynamicSliceOutput(100); writeBlock(functionAssertions.getMetadata().getBlockEncodingSerde(), expectedSliceOutput, expectedBlock); assertEquals(actualSliceOutput.slice(), expectedSliceOutput.slice()); }
@Override public void serialize(Block block, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { SliceOutput output = new DynamicSliceOutput(64); writeBlock(blockEncodingSerde, output, block); String encoded = Base64.getEncoder().encodeToString(output.slice().getBytes()); jsonGenerator.writeString(encoded); } }
public PagesWriter append(Page page) { requireNonNull(page, "page is null"); Block[] blocks = page.getBlocks(); output.writeInt(page.getPositionCount()); output.writeInt(blocks.length); for (int i = 0; i < blocks.length; i++) { writeBlock(serde, output, blocks[i]); } return this; } }
private Slice blockToSlice(Block block) { // This function is strictly for testing use only SliceOutput sliceOutput = new DynamicSliceOutput(1000); BlockSerdeUtil.writeBlock(blockEncodingSerde, sliceOutput, block); return sliceOutput.slice(); }
private Slice blockToSlice(Block block) { // This function is strictly for testing use only SliceOutput sliceOutput = new DynamicSliceOutput(1000); BlockSerdeUtil.writeBlock(blockEncodingSerde, sliceOutput, block); return sliceOutput.slice(); }
private static Slice blockToSlice(Block block) { // This function is strictly for testing use only SliceOutput sliceOutput = new DynamicSliceOutput(1000); BlockSerdeUtil.writeBlock(sliceOutput, block.copyRegion(0, block.getPositionCount())); return sliceOutput.slice(); }
private static Slice blockToSlice(Block block) { // This function is strictly for testing use only SliceOutput sliceOutput = new DynamicSliceOutput(1000); BlockSerdeUtil.writeBlock(sliceOutput, block.copyRegion(0, block.getPositionCount())); return sliceOutput.slice(); }
BlockSerdeUtil.writeBlock(output, (Block) object); object = output.slice();