diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchHolderObjectStrategy.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchHolderObjectStrategy.java index 60b1cc874618..e26568dd54a1 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchHolderObjectStrategy.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchHolderObjectStrategy.java @@ -79,6 +79,12 @@ public HllSketchHolder fromByteBufferSafe(ByteBuffer buffer, int numBytes) ); } + @Override + public ByteOrder getByteOrder() + { + return ByteOrder.LITTLE_ENDIAN; + } + /** * Checks if a sketch is empty and can be converted to null. Returns true if it is and false if it is not, or if is * not possible to say for sure. diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/kll/KllDoublesSketchObjectStrategy.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/kll/KllDoublesSketchObjectStrategy.java index 17cb94e2fcf8..2328920b208f 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/kll/KllDoublesSketchObjectStrategy.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/kll/KllDoublesSketchObjectStrategy.java @@ -73,4 +73,10 @@ public KllDoublesSketch fromByteBufferSafe(ByteBuffer buffer, int numBytes) SafeWritableMemory.wrap(buffer, ByteOrder.LITTLE_ENDIAN).region(buffer.position(), numBytes) ); } + + @Override + public ByteOrder getByteOrder() + { + return ByteOrder.LITTLE_ENDIAN; + } } diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/kll/KllFloatsSketchObjectStrategy.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/kll/KllFloatsSketchObjectStrategy.java index 93ff0a7dba52..1096fb1d07c3 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/kll/KllFloatsSketchObjectStrategy.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/kll/KllFloatsSketchObjectStrategy.java @@ -73,4 +73,10 @@ public KllFloatsSketch fromByteBufferSafe(ByteBuffer buffer, int numBytes) SafeWritableMemory.wrap(buffer, ByteOrder.LITTLE_ENDIAN).region(buffer.position(), numBytes) ); } + + @Override + public ByteOrder getByteOrder() + { + return ByteOrder.LITTLE_ENDIAN; + } } diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchObjectStrategy.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchObjectStrategy.java index 569b60bf03f7..cd8eb635800c 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchObjectStrategy.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchObjectStrategy.java @@ -73,4 +73,10 @@ public DoublesSketch fromByteBufferSafe(ByteBuffer buffer, int numBytes) SafeWritableMemory.wrap(buffer, ByteOrder.LITTLE_ENDIAN).region(buffer.position(), numBytes) ); } + + @Override + public ByteOrder getByteOrder() + { + return ByteOrder.LITTLE_ENDIAN; + } } diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchHolderObjectStrategy.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchHolderObjectStrategy.java index 96fafe826211..80fce65d7337 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchHolderObjectStrategy.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchHolderObjectStrategy.java @@ -80,4 +80,10 @@ public SketchHolder fromByteBufferSafe(ByteBuffer buffer, int numBytes) SafeWritableMemory.wrap(buffer, ByteOrder.LITTLE_ENDIAN).region(buffer.position(), numBytes) ); } + + @Override + public ByteOrder getByteOrder() + { + return ByteOrder.LITTLE_ENDIAN; + } } diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchObjectStrategy.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchObjectStrategy.java index f893c83b5707..b8ec9ebeb6bc 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchObjectStrategy.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchObjectStrategy.java @@ -72,4 +72,10 @@ public ArrayOfDoublesSketch fromByteBufferSafe(ByteBuffer buffer, int numBytes) SafeWritableMemory.wrap(buffer, ByteOrder.LITTLE_ENDIAN).region(buffer.position(), numBytes) ); } + + @Override + public ByteOrder getByteOrder() + { + return ByteOrder.LITTLE_ENDIAN; + } } diff --git a/processing/src/main/java/org/apache/druid/segment/data/CompressedBlockReader.java b/processing/src/main/java/org/apache/druid/segment/data/CompressedBlockReader.java index 4ab7f1ddb45f..35de4894d208 100644 --- a/processing/src/main/java/org/apache/druid/segment/data/CompressedBlockReader.java +++ b/processing/src/main/java/org/apache/druid/segment/data/CompressedBlockReader.java @@ -59,6 +59,7 @@ public final class CompressedBlockReader implements Closeable public static Supplier fromByteBuffer( ByteBuffer buffer, ByteOrder byteOrder, + ByteOrder valueOrder, boolean copyValuesOnRead ) { @@ -94,7 +95,8 @@ public static Supplier fromByteBuffer( copyValuesOnRead, offsetView.asReadOnlyBuffer(), compressedDataView.asReadOnlyBuffer().order(byteOrder), - byteOrder + byteOrder, + valueOrder ); } throw new IAE("Unknown version[%s]", versionFromBuffer); @@ -123,7 +125,8 @@ public CompressedBlockReader( boolean copyValuesOnRead, IntBuffer endOffsetsBuffer, ByteBuffer compressedDataBuffer, - ByteOrder byteOrder + ByteOrder compressionOrder, + ByteOrder valueOrder ) { this.decompressor = compressionStrategy.getDecompressor(); @@ -134,11 +137,11 @@ public CompressedBlockReader( this.endOffsetsBuffer = endOffsetsBuffer; this.compressedDataBuffer = compressedDataBuffer; this.closer = Closer.create(); - this.decompressedDataBufferHolder = CompressedPools.getByteBuf(byteOrder); + this.decompressedDataBufferHolder = CompressedPools.getByteBuf(compressionOrder); closer.register(decompressedDataBufferHolder); this.decompressedDataBuffer = decompressedDataBufferHolder.get(); this.decompressedDataBuffer.clear(); - this.byteOrder = byteOrder; + this.byteOrder = valueOrder; } /** diff --git a/processing/src/main/java/org/apache/druid/segment/data/CompressedLongsReader.java b/processing/src/main/java/org/apache/druid/segment/data/CompressedLongsReader.java index 12d97dbfcc34..69319d6f91ba 100644 --- a/processing/src/main/java/org/apache/druid/segment/data/CompressedLongsReader.java +++ b/processing/src/main/java/org/apache/druid/segment/data/CompressedLongsReader.java @@ -29,7 +29,7 @@ public final class CompressedLongsReader implements ColumnarLongs { public static Supplier fromByteBuffer(ByteBuffer buffer, ByteOrder order) { - final Supplier baseReader = CompressedBlockReader.fromByteBuffer(buffer, order, false); + final Supplier baseReader = CompressedBlockReader.fromByteBuffer(buffer, order, order, false); return () -> new CompressedLongsReader(baseReader.get()); } diff --git a/processing/src/main/java/org/apache/druid/segment/data/CompressedVariableSizedBlobColumnSupplier.java b/processing/src/main/java/org/apache/druid/segment/data/CompressedVariableSizedBlobColumnSupplier.java index bf88dbfc8c42..3f60078407b8 100644 --- a/processing/src/main/java/org/apache/druid/segment/data/CompressedVariableSizedBlobColumnSupplier.java +++ b/processing/src/main/java/org/apache/druid/segment/data/CompressedVariableSizedBlobColumnSupplier.java @@ -34,17 +34,29 @@ public class CompressedVariableSizedBlobColumnSupplier implements Supplier