@Override public void encodeValueInto(Block block, int position, SliceOutput output) { output.writeLong(Long.reverseBytes(Double.doubleToLongBits(type.getDouble(block, position)))); }
@Override public BlockBuilder writeLong(long value) { checkCapacity(); sliceOutput.writeLong(value); currentEntrySize += SIZE_OF_LONG; return this; }
@Override public BlockBuilder writeLong(long value) { if (!initialized) { initializeCapacity(); } sliceOutput.writeLong(value); currentEntrySize += SIZE_OF_LONG; return this; }
@Override public void serialize(LongDecimalWithOverflowAndLongState state, BlockBuilder out) { if (state.getLongDecimal() == null) { out.appendNull(); } else { Slice slice = Slices.allocate(Long.BYTES + Long.BYTES + UnscaledDecimal128Arithmetic.UNSCALED_DECIMAL_128_SLICE_LENGTH); SliceOutput output = slice.getOutput(); output.writeLong(state.getLong()); output.writeLong(state.getOverflow()); output.writeBytes(state.getLongDecimal()); VARBINARY.writeSlice(out, slice); } }
@Override public void writeBlock(BlockEncodingSerde blockEncodingSerde, SliceOutput sliceOutput, Block block) { int positionCount = block.getPositionCount(); sliceOutput.appendInt(positionCount); encodeNullsAsBits(sliceOutput, block); for (int position = 0; position < positionCount; position++) { if (!block.isNull(position)) { sliceOutput.writeLong(block.getLong(position, 0)); } } }
@Override public void serialize(LongDecimalWithOverflowState state, BlockBuilder out) { if (state.getLongDecimal() == null) { out.appendNull(); } else { Slice slice = Slices.allocate(Long.BYTES + UnscaledDecimal128Arithmetic.UNSCALED_DECIMAL_128_SLICE_LENGTH); SliceOutput output = slice.getOutput(); output.writeLong(state.getOverflow()); output.writeBytes(state.getLongDecimal()); VARBINARY.writeSlice(out, slice); } }
private static void writeFileHeader(SliceOutput output) { // write header output.writeBytes(RCFILE_MAGIC); output.writeByte(CURRENT_VERSION); // write codec information output.writeBoolean(false); // write metadata (which contains just the column count) output.writeInt(Integer.reverseBytes(1)); output.writeByte(COLUMN_COUNT_METADATA_KEY.length()); output.writeBytes(COLUMN_COUNT_METADATA_KEY); output.writeByte(1); output.writeByte('1'); // write sync sequence output.writeLong(syncFirst); output.writeLong(syncSecond); }
@Override public BlockBuilder writeLong(long value) { checkCapacity(); sliceOutput.writeLong(value); currentEntrySize += SIZE_OF_LONG; return this; }
@Override public BlockBuilder writeLong(long value) { checkCapacity(); sliceOutput.writeLong(value); currentEntrySize += SIZE_OF_LONG; return this; }
@Override public BlockBuilder writeLong(long value) { if (!initialized) { initializeCapacity(); } sliceOutput.writeLong(value); currentEntrySize += SIZE_OF_LONG; return this; }
@Test public void testEncodingLong() throws Exception { assertEncoding(sliceOutput -> sliceOutput.writeLong(9214541725452766769L), new byte[] {49, -114, -96, -23, -32, -96, -32, 127}); assertEncoding(sliceOutput -> sliceOutput.writeLong(-1184314682315678611L), new byte[] {109, 92, 75, 58, 18, 120, -112, -17}); }
@Test public void testEncodingLong() throws Exception { assertEncoding(sliceOutput -> sliceOutput.writeLong(9214541725452766769L), new byte[] {49, -114, -96, -23, -32, -96, -32, 127}); assertEncoding(sliceOutput -> sliceOutput.writeLong(-1184314682315678611L), new byte[] {109, 92, 75, 58, 18, 120, -112, -17}); }
@Override public void writeBlock(BlockEncodingSerde blockEncodingSerde, SliceOutput sliceOutput, Block block) { int positionCount = block.getPositionCount(); sliceOutput.appendInt(positionCount); encodeNullsAsBits(sliceOutput, block); for (int position = 0; position < positionCount; position++) { if (!block.isNull(position)) { sliceOutput.writeLong(block.getLong(position, 0)); } } }
@Override public void writeBlock(BlockEncodingSerde blockEncodingSerde, SliceOutput sliceOutput, Block block) { int positionCount = block.getPositionCount(); sliceOutput.appendInt(positionCount); encodeNullsAsBits(sliceOutput, block); for (int position = 0; position < positionCount; position++) { if (!block.isNull(position)) { sliceOutput.writeLong(block.getLong(position, 0)); } } }