@Override public byte[] getSerializedData() { // Serialization format is (<key:int><min:double><max:double>)* SliceOutput output = Slices.allocate((SizeOf.SIZE_OF_INT + 2 * SizeOf.SIZE_OF_DOUBLE) * mins.size()).getOutput(); for (int key : mins.keySet()) { output.appendInt(key); output.appendDouble(mins.get(key)); output.appendDouble(maxs.get(key)); } return output.slice().getBytes(); }
@Override public void serialize(DigestAndPercentileArrayState state, BlockBuilder out) { if (state.getDigest() == null) { out.appendNull(); } else { Slice digest = state.getDigest().serialize(); SliceOutput output = Slices.allocate( SIZE_OF_INT + // number of percentiles state.getPercentiles().size() * SIZE_OF_DOUBLE + // percentiles SIZE_OF_INT + // digest length digest.length()) // digest .getOutput(); // write percentiles List<Double> percentiles = state.getPercentiles(); output.appendInt(percentiles.size()); for (double percentile : percentiles) { output.appendDouble(percentile); } output.appendInt(digest.length()); output.appendBytes(digest); VARBINARY.writeSlice(out, output.slice()); } }
@Override public void serialize(DigestAndPercentileState state, BlockBuilder out) { if (state.getDigest() == null) { out.appendNull(); } else { Slice serialized = state.getDigest().serialize(); SliceOutput output = Slices.allocate(SIZE_OF_DOUBLE + SIZE_OF_INT + serialized.length()).getOutput(); output.appendDouble(state.getPercentile()); output.appendInt(serialized.length()); output.appendBytes(serialized); VARBINARY.writeSlice(out, output.slice()); } }
@Override public void loadValue(SliceOutput output, int valueIndex) { output.appendDouble(valueIndex + 0.12); }
@Override public void loadValue(SliceOutput output, int valueIndex) { output.appendDouble(valueIndex + 0.12); }
@Override public byte[] getSerializedData() { // Serialization format is (<key:int><min:double><max:double>)* SliceOutput output = Slices.allocate((SizeOf.SIZE_OF_INT + 2 * SizeOf.SIZE_OF_DOUBLE) * mins.size()).getOutput(); for (int key : mins.keySet()) { output.appendInt(key); output.appendDouble(mins.get(key)); output.appendDouble(maxs.get(key)); } return output.slice().getBytes(); }
private static void appendTo(Type type, SliceOutput output, Block block, int position) { if (type.getJavaType() == long.class) { output.appendLong(type.getLong(block, position)); } else if (type.getJavaType() == double.class) { output.appendDouble(type.getDouble(block, position)); } else if (type.getJavaType() == Slice.class) { Slice s = type.getSlice(block, position); output.appendInt(s.length()); output.appendBytes(s); } else if (type.getJavaType() == boolean.class) { output.appendByte(type.getBoolean(block, position) ? 1 : 0); } else { throw new IllegalArgumentException("Unsupported type: " + type.getJavaType().getSimpleName()); } }
@Override public void serialize(DigestAndPercentileArrayState state, BlockBuilder out) { if (state.getDigest() == null) { out.appendNull(); } else { Slice digest = state.getDigest().serialize(); SliceOutput output = Slices.allocate( SIZE_OF_INT + // number of percentiles state.getPercentiles().size() * SIZE_OF_DOUBLE + // percentiles SIZE_OF_INT + // digest length digest.length()) // digest .getOutput(); // write percentiles List<Double> percentiles = state.getPercentiles(); output.appendInt(percentiles.size()); for (double percentile : percentiles) { output.appendDouble(percentile); } output.appendInt(digest.length()); output.appendBytes(digest); VARBINARY.writeSlice(out, output.slice()); } }
@Override public void serialize(DigestAndPercentileArrayState state, BlockBuilder out) { if (state.getDigest() == null) { out.appendNull(); } else { Slice digest = state.getDigest().serialize(); SliceOutput output = Slices.allocate( SIZE_OF_INT + // number of percentiles state.getPercentiles().size() * SIZE_OF_DOUBLE + // percentiles SIZE_OF_INT + // digest length digest.length()) // digest .getOutput(); // write percentiles List<Double> percentiles = state.getPercentiles(); output.appendInt(percentiles.size()); for (double percentile : percentiles) { output.appendDouble(percentile); } output.appendInt(digest.length()); output.appendBytes(digest); VARBINARY.writeSlice(out, output.slice()); } }
@Override public void serialize(DigestAndPercentileState state, BlockBuilder out) { if (state.getDigest() == null) { out.appendNull(); } else { Slice serialized = state.getDigest().serialize(); SliceOutput output = Slices.allocate(SIZE_OF_DOUBLE + SIZE_OF_INT + serialized.length()).getOutput(); output.appendDouble(state.getPercentile()); output.appendInt(serialized.length()); output.appendBytes(serialized); VARBINARY.writeSlice(out, output.slice()); } }
@Override public void serialize(DigestAndPercentileState state, BlockBuilder out) { if (state.getDigest() == null) { out.appendNull(); } else { Slice serialized = state.getDigest().serialize(); SliceOutput output = Slices.allocate(SIZE_OF_DOUBLE + SIZE_OF_INT + serialized.length()).getOutput(); output.appendDouble(state.getPercentile()); output.appendInt(serialized.length()); output.appendBytes(serialized); VARBINARY.writeSlice(out, output.slice()); } }