From 122aa217f32bd121916f6fd696760167b12d33d3 Mon Sep 17 00:00:00 2001 From: Gian Merlino Date: Fri, 16 Apr 2021 12:01:51 -0700 Subject: [PATCH 1/5] Remove OffheapIncrementalIndex and clarify aggregator thread-safety needs. This patch does the following: - Removes OffheapIncrementalIndex. - Clarifies that Aggregators are required to be thread safe. - Clarifies that BufferAggregators and VectorAggregators are not required to be thread safe. - Removes thread safety code from some DataSketches aggregators that had it. (Not all of them did, and that's OK, because it wasn't necessary anyway.) - Makes enabling "useOffheap" with groupBy v1 an error. Rationale for removing the offheap incremental index: - It is only used in one rare scenario: groupBy v1 (which is non-default) in "useOffheap" mode (also non-default). So you have to go pretty deep into the wilderness to get this code to activate in production. It is never used during ingestion. - Its existence complicates developer efforts to reason about how aggregators get used, because the way it uses buffer aggregators is so different from how every other query engine uses them. - It doesn't have meaningful testing. By the way, I do believe that the given way the offheap incremental index works, it actually didn't require buffer aggregators to be thread-safe. It synchronizes on "aggregate" and doesn't call "get" until it has stopped calling "aggregate". Nevertheless, this is a bother to think about, and for the above reasons I think it makes sense to remove the code anyway. --- docs/configuration/index.md | 6 +- docs/querying/groupbyquery.md | 6 +- .../hll/HllSketchBuildBufferAggregator.java | 68 +-- .../hll/HllSketchMergeBufferAggregator.java | 42 +- ...yOfDoublesSketchBuildBufferAggregator.java | 62 +-- ...yOfDoublesSketchMergeBufferAggregator.java | 36 +- .../druid/query/GroupByMergedQueryRunner.java | 3 +- .../druid/query/aggregation/Aggregator.java | 4 + .../query/aggregation/BufferAggregator.java | 3 + .../query/aggregation/VectorAggregator.java | 3 + .../query/groupby/GroupByQueryHelper.java | 16 +- .../groupby/strategy/GroupByStrategyV1.java | 3 - .../incremental/OffheapIncrementalIndex.java | 391 ------------------ .../incremental/IncrementalIndexCreator.java | 5 - .../OffheapIncrementalIndexTestSpec.java | 107 ----- 15 files changed, 46 insertions(+), 709 deletions(-) delete mode 100644 processing/src/main/java/org/apache/druid/segment/incremental/OffheapIncrementalIndex.java delete mode 100644 processing/src/test/java/org/apache/druid/segment/incremental/OffheapIncrementalIndexTestSpec.java diff --git a/docs/configuration/index.md b/docs/configuration/index.md index cd26a9e7afef..328b150b266b 100644 --- a/docs/configuration/index.md +++ b/docs/configuration/index.md @@ -1991,9 +1991,9 @@ Supported query contexts: |Key|Description|Default| |---|-----------|-------| -|`maxIntermediateRows`|Can be used to lower the value of `druid.query.groupBy.maxIntermediateRows` for this query.|None| -|`maxResults`|Can be used to lower the value of `druid.query.groupBy.maxResults` for this query.|None| -|`useOffheap`|Set to true to store aggregations off-heap when merging results.|false| +|`maxIntermediateRows`|Ignored by groupBy v2. Can be used to lower the value of `druid.query.groupBy.maxIntermediateRows` for a groupBy v1 query.|None| +|`maxResults`|Ignored by groupBy v2. Can be used to lower the value of `druid.query.groupBy.maxResults` for a groupBy v1 query.|None| +|`useOffheap`|Ignored by groupBy v2, and no longer supported for groupBy v1. Enabling this option with groupBy v1 will result in an error. For off-heap aggregation, switch to groupBy v2, which always operates off-heap.|false| ### Router diff --git a/docs/querying/groupbyquery.md b/docs/querying/groupbyquery.md index 0b66a5f161b9..6128b2bcbc78 100644 --- a/docs/querying/groupbyquery.md +++ b/docs/querying/groupbyquery.md @@ -451,9 +451,9 @@ Supported query contexts: |Key|Description|Default| |---|-----------|-------| -|`maxIntermediateRows`|Can be used to lower the value of `druid.query.groupBy.maxIntermediateRows` for this query.|None| -|`maxResults`|Can be used to lower the value of `druid.query.groupBy.maxResults` for this query.|None| -|`useOffheap`|Set to true to store aggregations off-heap when merging results.|false| +|`maxIntermediateRows`|Ignored by groupBy v2. Can be used to lower the value of `druid.query.groupBy.maxIntermediateRows` for a groupBy v1 query.|None| +|`maxResults`|Ignored by groupBy v2. Can be used to lower the value of `druid.query.groupBy.maxResults` for a groupBy v1 query.|None| +|`useOffheap`|Ignored by groupBy v2, and no longer supported for groupBy v1. Enabling this option with groupBy v1 will result in an error. For off-heap aggregation, switch to groupBy v2, which always operates off-heap.|false| #### Array based result rows diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchBuildBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchBuildBufferAggregator.java index 4c39259a6a97..34c234978f4e 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchBuildBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchBuildBufferAggregator.java @@ -19,7 +19,6 @@ package org.apache.druid.query.aggregation.datasketches.hll; -import com.google.common.util.concurrent.Striped; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; import org.apache.datasketches.hll.HllSketch; @@ -33,8 +32,6 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.IdentityHashMap; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReadWriteLock; /** * This aggregator builds sketches from raw data. @@ -42,19 +39,11 @@ */ public class HllSketchBuildBufferAggregator implements BufferAggregator { - - /** - * for locking per buffer position (power of 2 to make index computation faster) - */ - private static final int NUM_STRIPES = 64; - private final ColumnValueSelector selector; private final int lgK; - private final TgtHllType tgtHllType; private final int size; private final IdentityHashMap memCache = new IdentityHashMap<>(); private final IdentityHashMap> sketchCache = new IdentityHashMap<>(); - private final Striped stripedLock = Striped.readWriteLock(NUM_STRIPES); /** * Used by {@link #init(ByteBuffer, int)}. We initialize by copying a prebuilt empty HllSketch image. @@ -72,7 +61,6 @@ public HllSketchBuildBufferAggregator( { this.selector = selector; this.lgK = lgK; - this.tgtHllType = tgtHllType; this.size = size; this.emptySketch = new byte[size]; @@ -99,11 +87,6 @@ public void init(final ByteBuffer buf, final int position) putSketchIntoCache(buf, position, HllSketch.writableWrap(mem)); } - /** - * This method uses locks because it can be used during indexing, - * and Druid can call aggregate() and get() concurrently - * See https://github.com/druid-io/druid/pull/3956 - */ @Override public void aggregate(final ByteBuffer buf, final int position) { @@ -111,33 +94,15 @@ public void aggregate(final ByteBuffer buf, final int position) if (value == null) { return; } - final Lock lock = stripedLock.getAt(lockIndex(position)).writeLock(); - lock.lock(); - try { - final HllSketch sketch = sketchCache.get(buf).get(position); - HllSketchBuildAggregator.updateSketch(sketch, value); - } - finally { - lock.unlock(); - } + + final HllSketch sketch = sketchCache.get(buf).get(position); + HllSketchBuildAggregator.updateSketch(sketch, value); } - /** - * This method uses locks because it can be used during indexing, - * and Druid can call aggregate() and get() concurrently - * See https://github.com/druid-io/druid/pull/3956 - */ @Override public Object get(final ByteBuffer buf, final int position) { - final Lock lock = stripedLock.getAt(lockIndex(position)).readLock(); - lock.lock(); - try { - return sketchCache.get(buf).get(position).copy(); - } - finally { - lock.unlock(); - } + return sketchCache.get(buf).get(position).copy(); } @Override @@ -186,31 +151,6 @@ private void putSketchIntoCache(final ByteBuffer buf, final int position, final map.put(position, sketch); } - /** - * compute lock index to avoid boxing in Striped.get() call - * - * @param position - * - * @return index - */ - static int lockIndex(final int position) - { - return smear(position) % NUM_STRIPES; - } - - /** - * see https://github.com/google/guava/blob/master/guava/src/com/google/common/util/concurrent/Striped.java#L536-L548 - * - * @param hashCode - * - * @return smeared hashCode - */ - private static int smear(int hashCode) - { - hashCode ^= (hashCode >>> 20) ^ (hashCode >>> 12); - return hashCode ^ (hashCode >>> 7) ^ (hashCode >>> 4); - } - @Override public void inspectRuntimeShape(RuntimeShapeInspector inspector) { diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchMergeBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchMergeBufferAggregator.java index 7161c25fb6bc..f5bffa479d24 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchMergeBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchMergeBufferAggregator.java @@ -19,7 +19,6 @@ package org.apache.druid.query.aggregation.datasketches.hll; -import com.google.common.util.concurrent.Striped; import org.apache.datasketches.hll.HllSketch; import org.apache.datasketches.hll.TgtHllType; import org.apache.datasketches.hll.Union; @@ -30,8 +29,6 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReadWriteLock; /** * This aggregator merges existing sketches. @@ -39,17 +36,10 @@ */ public class HllSketchMergeBufferAggregator implements BufferAggregator { - - /** - * for locking per buffer position (power of 2 to make index computation faster) - */ - private static final int NUM_STRIPES = 64; - private final ColumnValueSelector selector; private final int lgK; private final TgtHllType tgtHllType; private final int size; - private final Striped stripedLock = Striped.readWriteLock(NUM_STRIPES); /** * Used by {@link #init(ByteBuffer, int)}. We initialize by copying a prebuilt empty Union image. @@ -94,11 +84,6 @@ public void init(final ByteBuffer buf, final int position) } } - /** - * This method uses locks because it can be used during indexing, - * and Druid can call aggregate() and get() concurrently - * See https://github.com/druid-io/druid/pull/3956 - */ @Override public void aggregate(final ByteBuffer buf, final int position) { @@ -107,35 +92,16 @@ public void aggregate(final ByteBuffer buf, final int position) return; } final WritableMemory mem = WritableMemory.wrap(buf, ByteOrder.LITTLE_ENDIAN).writableRegion(position, size); - final Lock lock = stripedLock.getAt(HllSketchBuildBufferAggregator.lockIndex(position)).writeLock(); - lock.lock(); - try { - final Union union = Union.writableWrap(mem); - union.update(sketch); - } - finally { - lock.unlock(); - } + final Union union = Union.writableWrap(mem); + union.update(sketch); } - /** - * This method uses locks because it can be used during indexing, - * and Druid can call aggregate() and get() concurrently - * See https://github.com/druid-io/druid/pull/3956 - */ @Override public Object get(final ByteBuffer buf, final int position) { final WritableMemory mem = WritableMemory.wrap(buf, ByteOrder.LITTLE_ENDIAN).writableRegion(position, size); - final Lock lock = stripedLock.getAt(HllSketchBuildBufferAggregator.lockIndex(position)).readLock(); - lock.lock(); - try { - final Union union = Union.writableWrap(mem); - return union.getResult(tgtHllType); - } - finally { - lock.unlock(); - } + final Union union = Union.writableWrap(mem); + return union.getResult(tgtHllType); } @Override diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchBuildBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchBuildBufferAggregator.java index de067b79b0b2..264c258c3aee 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchBuildBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchBuildBufferAggregator.java @@ -19,7 +19,6 @@ package org.apache.druid.query.aggregation.datasketches.tuple; -import com.google.common.util.concurrent.Striped; import org.apache.datasketches.memory.WritableMemory; import org.apache.datasketches.tuple.arrayofdoubles.ArrayOfDoublesSketches; import org.apache.datasketches.tuple.arrayofdoubles.ArrayOfDoublesUpdatableSketch; @@ -31,12 +30,9 @@ import org.apache.druid.segment.data.IndexedInts; import javax.annotation.Nullable; - import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.util.List; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReadWriteLock; /** * This aggregator builds sketches from raw data. @@ -45,16 +41,12 @@ */ public class ArrayOfDoublesSketchBuildBufferAggregator implements BufferAggregator { - - private static final int NUM_STRIPES = 64; // for locking per buffer position (power of 2 to make index computation faster) - private final DimensionSelector keySelector; private final BaseDoubleColumnValueSelector[] valueSelectors; private final int nominalEntries; private final int maxIntermediateSize; @Nullable private double[] values; // not part of the state, but to reuse in aggregate() method - private final Striped stripedLock = Striped.readWriteLock(NUM_STRIPES); public ArrayOfDoublesSketchBuildBufferAggregator( final DimensionSelector keySelector, @@ -76,15 +68,10 @@ public void init(final ByteBuffer buf, final int position) final WritableMemory mem = WritableMemory.wrap(buf, ByteOrder.LITTLE_ENDIAN); final WritableMemory region = mem.writableRegion(position, maxIntermediateSize); new ArrayOfDoublesUpdatableSketchBuilder().setNominalEntries(nominalEntries) - .setNumberOfValues(valueSelectors.length) - .setNumberOfValues(valueSelectors.length).build(region); + .setNumberOfValues(valueSelectors.length) + .setNumberOfValues(valueSelectors.length).build(region); } - /** - * This method uses locks because it can be used during indexing, - * and Druid can call aggregate() and get() concurrently - * https://github.com/apache/druid/pull/3956 - */ @Override public void aggregate(final ByteBuffer buf, final int position) { @@ -101,24 +88,14 @@ public void aggregate(final ByteBuffer buf, final int position) // might might be considered, but it would increase complexity including relocate() support. final WritableMemory mem = WritableMemory.wrap(buf, ByteOrder.LITTLE_ENDIAN); final WritableMemory region = mem.writableRegion(position, maxIntermediateSize); - final Lock lock = stripedLock.getAt(lockIndex(position)).writeLock(); - lock.lock(); - try { - final ArrayOfDoublesUpdatableSketch sketch = ArrayOfDoublesSketches.wrapUpdatableSketch(region); - for (int i = 0, keysSize = keys.size(); i < keysSize; i++) { - final String key = keySelector.lookupName(keys.get(i)); - sketch.update(key, values); - } - } - finally { - lock.unlock(); + final ArrayOfDoublesUpdatableSketch sketch = ArrayOfDoublesSketches.wrapUpdatableSketch(region); + for (int i = 0, keysSize = keys.size(); i < keysSize; i++) { + final String key = keySelector.lookupName(keys.get(i)); + sketch.update(key, values); } } /** - * This method uses locks because it can be used during indexing, - * and Druid can call aggregate() and get() concurrently - * https://github.com/apache/druid/pull/3956 * The returned sketch is a separate instance of ArrayOfDoublesCompactSketch * representing the current state of the aggregation, and is not affected by consequent * aggregate() calls @@ -128,16 +105,9 @@ public Object get(final ByteBuffer buf, final int position) { final WritableMemory mem = WritableMemory.wrap(buf, ByteOrder.LITTLE_ENDIAN); final WritableMemory region = mem.writableRegion(position, maxIntermediateSize); - final Lock lock = stripedLock.getAt(lockIndex(position)).readLock(); - lock.lock(); - try { - final ArrayOfDoublesUpdatableSketch sketch = (ArrayOfDoublesUpdatableSketch) ArrayOfDoublesSketches - .wrapSketch(region); - return sketch.compact(); - } - finally { - lock.unlock(); - } + final ArrayOfDoublesUpdatableSketch sketch = (ArrayOfDoublesUpdatableSketch) ArrayOfDoublesSketches + .wrapSketch(region); + return sketch.compact(); } @Override @@ -164,18 +134,4 @@ public void inspectRuntimeShape(final RuntimeShapeInspector inspector) inspector.visit("keySelector", keySelector); inspector.visit("valueSelectors", valueSelectors); } - - // compute lock index to avoid boxing in Striped.get() call - static int lockIndex(final int position) - { - return smear(position) % NUM_STRIPES; - } - - // from https://github.com/google/guava/blob/master/guava/src/com/google/common/util/concurrent/Striped.java#L536-L548 - private static int smear(int hashCode) - { - hashCode ^= (hashCode >>> 20) ^ (hashCode >>> 12); - return hashCode ^ (hashCode >>> 7) ^ (hashCode >>> 4); - } - } diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchMergeBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchMergeBufferAggregator.java index bb0edb7110dd..6e2810318cf7 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchMergeBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchMergeBufferAggregator.java @@ -19,7 +19,6 @@ package org.apache.druid.query.aggregation.datasketches.tuple; -import com.google.common.util.concurrent.Striped; import org.apache.datasketches.memory.WritableMemory; import org.apache.datasketches.tuple.arrayofdoubles.ArrayOfDoublesSetOperationBuilder; import org.apache.datasketches.tuple.arrayofdoubles.ArrayOfDoublesSketch; @@ -31,8 +30,6 @@ import java.nio.ByteBuffer; import java.nio.ByteOrder; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReadWriteLock; /** * This aggregator merges existing sketches. @@ -41,14 +38,10 @@ */ public class ArrayOfDoublesSketchMergeBufferAggregator implements BufferAggregator { - - private static final int NUM_STRIPES = 64; // for locking per buffer position - private final BaseObjectColumnValueSelector selector; private final int nominalEntries; private final int numberOfValues; private final int maxIntermediateSize; - private final Striped stripedLock = Striped.readWriteLock(NUM_STRIPES); public ArrayOfDoublesSketchMergeBufferAggregator( final BaseObjectColumnValueSelector selector, @@ -69,14 +62,9 @@ public void init(final ByteBuffer buf, final int position) final WritableMemory mem = WritableMemory.wrap(buf, ByteOrder.LITTLE_ENDIAN); final WritableMemory region = mem.writableRegion(position, maxIntermediateSize); new ArrayOfDoublesSetOperationBuilder().setNominalEntries(nominalEntries) - .setNumberOfValues(numberOfValues).buildUnion(region); + .setNumberOfValues(numberOfValues).buildUnion(region); } - /** - * This method uses locks because it can be used during indexing, - * and Druid can call aggregate() and get() concurrently - * https://github.com/apache/druid/pull/3956 - */ @Override public void aggregate(final ByteBuffer buf, final int position) { @@ -89,15 +77,8 @@ public void aggregate(final ByteBuffer buf, final int position) // might might be considered, but it would increase complexity including relocate() support. final WritableMemory mem = WritableMemory.wrap(buf, ByteOrder.LITTLE_ENDIAN); final WritableMemory region = mem.writableRegion(position, maxIntermediateSize); - final Lock lock = stripedLock.getAt(ArrayOfDoublesSketchBuildBufferAggregator.lockIndex(position)).writeLock(); - lock.lock(); - try { - final ArrayOfDoublesUnion union = ArrayOfDoublesSketches.wrapUnion(region); - union.update(update); - } - finally { - lock.unlock(); - } + final ArrayOfDoublesUnion union = ArrayOfDoublesSketches.wrapUnion(region); + union.update(update); } /** @@ -113,15 +94,8 @@ public Object get(final ByteBuffer buf, final int position) { final WritableMemory mem = WritableMemory.wrap(buf, ByteOrder.LITTLE_ENDIAN); final WritableMemory region = mem.writableRegion(position, maxIntermediateSize); - final Lock lock = stripedLock.getAt(ArrayOfDoublesSketchBuildBufferAggregator.lockIndex(position)).readLock(); - lock.lock(); - try { - final ArrayOfDoublesUnion union = ArrayOfDoublesSketches.wrapUnion(region); - return union.getResult(); - } - finally { - lock.unlock(); - } + final ArrayOfDoublesUnion union = ArrayOfDoublesSketches.wrapUnion(region); + return union.getResult(); } @Override diff --git a/processing/src/main/java/org/apache/druid/query/GroupByMergedQueryRunner.java b/processing/src/main/java/org/apache/druid/query/GroupByMergedQueryRunner.java index 85a96014ef70..9948560402d2 100644 --- a/processing/src/main/java/org/apache/druid/query/GroupByMergedQueryRunner.java +++ b/processing/src/main/java/org/apache/druid/query/GroupByMergedQueryRunner.java @@ -89,8 +89,7 @@ public Sequence run(final QueryPlus queryPlus, final ResponseContext respo final Pair> indexAccumulatorPair = GroupByQueryHelper.createIndexAccumulatorPair( query, null, - querySpecificConfig, - bufferPool + querySpecificConfig ); final Pair> bySegmentAccumulatorPair = GroupByQueryHelper.createBySegmentAccumulatorPair(); final boolean bySegment = QueryContexts.isBySegment(query); diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/Aggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/Aggregator.java index a41263e77924..fe05e4759dca 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/Aggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/Aggregator.java @@ -32,6 +32,10 @@ * Thus, an Aggregator can be thought of as a closure over some other thing that is stateful and changes between calls * to aggregate(). This is currently (as of this documentation) implemented through the use of {@link * org.apache.druid.segment.ColumnValueSelector} objects. + * + * During ingestion, {@link org.apache.druid.segment.incremental.OnheapIncrementalIndex} uses instances of this class + * from multiple threads. In particular, ingestion threads call {@link #aggregate()} simultaneously with query threads + * calling the various "get" methods. Instances of this class must be thread-safe. */ @ExtensionPoint public interface Aggregator extends Closeable diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java index b047f0ee03c5..6f1e53bac420 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java @@ -35,6 +35,9 @@ * Thus, an Aggregator can be thought of as a closure over some other thing that is stateful and changes between calls * to aggregate(...). * + * Unlike {@link Aggregator}, BufferAggregators are never used by multiple threads at once. Implementations are not + * required to be thread safe. + * * @see VectorAggregator, the vectorized version */ @ExtensionPoint diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/VectorAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/VectorAggregator.java index 8d0983eeba63..befff12ba6e0 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/VectorAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/VectorAggregator.java @@ -31,6 +31,9 @@ * {@link org.apache.druid.query.monomorphicprocessing.CalledFromHotLoop} because vectorized query engines do not use * monomorphic-processing-style specialization. * + * Unlike {@link Aggregator}, VectorAggregators are never used by multiple threads at once. Implementations are not + * required to be thread safe. + * * @see BufferAggregator, the vectorized version. */ public interface VectorAggregator diff --git a/processing/src/main/java/org/apache/druid/query/groupby/GroupByQueryHelper.java b/processing/src/main/java/org/apache/druid/query/groupby/GroupByQueryHelper.java index 332e020f095c..8a7b05096c35 100644 --- a/processing/src/main/java/org/apache/druid/query/groupby/GroupByQueryHelper.java +++ b/processing/src/main/java/org/apache/druid/query/groupby/GroupByQueryHelper.java @@ -21,7 +21,6 @@ import com.google.common.base.Function; import com.google.common.collect.Lists; -import org.apache.druid.collections.NonBlockingPool; import org.apache.druid.data.input.MapBasedInputRow; import org.apache.druid.data.input.MapBasedRow; import org.apache.druid.data.input.Row; @@ -43,11 +42,9 @@ import org.apache.druid.segment.incremental.IncrementalIndex; import org.apache.druid.segment.incremental.IncrementalIndexSchema; import org.apache.druid.segment.incremental.IndexSizeExceededException; -import org.apache.druid.segment.incremental.OffheapIncrementalIndex; import org.apache.druid.segment.incremental.OnheapIncrementalIndex; import javax.annotation.Nullable; -import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; import java.util.Queue; @@ -60,8 +57,7 @@ public class GroupByQueryHelper public static Pair> createIndexAccumulatorPair( final GroupByQuery query, @Nullable final GroupByQuery subquery, - final GroupByQueryConfig config, - NonBlockingPool bufferPool + final GroupByQueryConfig config ) { final GroupByQueryConfig querySpecificConfig = config.withOverrides(query); @@ -123,8 +119,11 @@ public String apply(DimensionSpec input) final AppendableIndexBuilder indexBuilder; if (query.getContextValue("useOffheap", false)) { - indexBuilder = new OffheapIncrementalIndex.Builder() - .setBufferPool(bufferPool); + throw new UnsupportedOperationException( + "The 'useOffheap' option is no longer available for groupBy v1. Please move to the newer groupBy engine, " + + "which always operates off-heap, by removing any custom 'druid.query.groupBy.defaultStrategy' runtime " + + "properties and 'groupByStrategy' query context parameters that you have set." + ); } else { indexBuilder = new OnheapIncrementalIndex.Builder(); } @@ -196,12 +195,11 @@ public static IncrementalIndex makeIncrementalIndex( GroupByQuery query, @Nullable GroupByQuery subquery, GroupByQueryConfig config, - NonBlockingPool bufferPool, Sequence rows ) { final Pair> indexAccumulatorPair = - GroupByQueryHelper.createIndexAccumulatorPair(query, subquery, config, bufferPool); + GroupByQueryHelper.createIndexAccumulatorPair(query, subquery, config); return rows.accumulate(indexAccumulatorPair.lhs, indexAccumulatorPair.rhs); } diff --git a/processing/src/main/java/org/apache/druid/query/groupby/strategy/GroupByStrategyV1.java b/processing/src/main/java/org/apache/druid/query/groupby/strategy/GroupByStrategyV1.java index 18eaab21579c..8dda67d75f96 100644 --- a/processing/src/main/java/org/apache/druid/query/groupby/strategy/GroupByStrategyV1.java +++ b/processing/src/main/java/org/apache/druid/query/groupby/strategy/GroupByStrategyV1.java @@ -108,7 +108,6 @@ public Sequence mergeResults( query, null, configSupplier.get(), - bufferPool, baseRunner.run( QueryPlus.wrap( new GroupByQuery.Builder(query) @@ -217,7 +216,6 @@ public boolean apply(AggregatorFactory agg) ), subquery, configSupplier.get(), - bufferPool, subqueryResult ); @@ -229,7 +227,6 @@ public boolean apply(AggregatorFactory agg) outerQuery, null, configSupplier.get(), - bufferPool, Sequences.concat( Sequences.map( Sequences.simple(outerQuery.getIntervals()), diff --git a/processing/src/main/java/org/apache/druid/segment/incremental/OffheapIncrementalIndex.java b/processing/src/main/java/org/apache/druid/segment/incremental/OffheapIncrementalIndex.java deleted file mode 100644 index a74f94fdb827..000000000000 --- a/processing/src/main/java/org/apache/druid/segment/incremental/OffheapIncrementalIndex.java +++ /dev/null @@ -1,391 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.druid.segment.incremental; - -import com.google.common.base.Supplier; -import org.apache.druid.collections.NonBlockingPool; -import org.apache.druid.collections.ResourceHolder; -import org.apache.druid.data.input.InputRow; -import org.apache.druid.java.util.common.IAE; -import org.apache.druid.java.util.common.ISE; -import org.apache.druid.java.util.common.StringUtils; -import org.apache.druid.java.util.common.io.Closer; -import org.apache.druid.java.util.common.logger.Logger; -import org.apache.druid.java.util.common.parsers.ParseException; -import org.apache.druid.query.aggregation.AggregatorFactory; -import org.apache.druid.query.aggregation.BufferAggregator; -import org.apache.druid.segment.ColumnSelectorFactory; - -import javax.annotation.Nullable; -import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.concurrent.atomic.AtomicInteger; - -/** - * - */ -public class OffheapIncrementalIndex extends IncrementalIndex -{ - private static final Logger log = new Logger(OffheapIncrementalIndex.class); - - private final NonBlockingPool bufferPool; - - private final List> aggBuffers = new ArrayList<>(); - private final List indexAndOffsets = new ArrayList<>(); - - private final FactsHolder facts; - - private final AtomicInteger indexIncrement = new AtomicInteger(0); - - protected final int maxRowCount; - - @Nullable - private volatile Map selectors; - - //given a ByteBuffer and an offset where all aggregates for a row are stored - //offset + aggOffsetInBuffer[i] would give position in ByteBuffer where ith aggregate - //is stored - @Nullable - private volatile int[] aggOffsetInBuffer; - private volatile int aggsTotalSize; - - @Nullable - private String outOfRowsReason = null; - - OffheapIncrementalIndex( - IncrementalIndexSchema incrementalIndexSchema, - boolean deserializeComplexMetrics, - boolean concurrentEventAdd, - boolean sortFacts, - int maxRowCount, - NonBlockingPool bufferPool - ) - { - super(incrementalIndexSchema, deserializeComplexMetrics, concurrentEventAdd); - this.maxRowCount = maxRowCount; - this.bufferPool = bufferPool; - - this.facts = incrementalIndexSchema.isRollup() ? new RollupFactsHolder(sortFacts, dimsComparator(), getDimensions()) - : new PlainFactsHolder(sortFacts, dimsComparator()); - - //check that stupid pool gives buffers that can hold at least one row's aggregators - ResourceHolder bb = bufferPool.take(); - if (bb.get().capacity() < aggsTotalSize) { - bb.close(); - throw new IAE("bufferPool buffers capacity must be >= [%s]", aggsTotalSize); - } - aggBuffers.add(bb); - } - - @Override - public FactsHolder getFacts() - { - return facts; - } - - @Override - protected BufferAggregator[] initAggs( - final AggregatorFactory[] metrics, - final Supplier rowSupplier, - final boolean deserializeComplexMetrics, - final boolean concurrentEventAdd - ) - { - selectors = new HashMap<>(); - aggOffsetInBuffer = new int[metrics.length]; - - int aggsCurOffsetInBuffer = 0; - - for (int i = 0; i < metrics.length; i++) { - AggregatorFactory agg = metrics[i]; - - ColumnSelectorFactory columnSelectorFactory = makeColumnSelectorFactory( - agg, - rowSupplier, - deserializeComplexMetrics - ); - - selectors.put( - agg.getName(), - new OnheapIncrementalIndex.CachingColumnSelectorFactory(columnSelectorFactory, concurrentEventAdd) - ); - - aggOffsetInBuffer[i] = aggsCurOffsetInBuffer; - aggsCurOffsetInBuffer += agg.getMaxIntermediateSizeWithNulls(); - } - - aggsTotalSize = aggsCurOffsetInBuffer; - - return new BufferAggregator[metrics.length]; - } - - @Override - protected AddToFactsResult addToFacts( - InputRow row, - IncrementalIndexRow key, - ThreadLocal rowContainer, - Supplier rowSupplier, - boolean skipMaxRowsInMemoryCheck // ignored, we always want to check this for offheap - ) throws IndexSizeExceededException - { - synchronized (this) { - final AggregatorFactory[] metrics = getMetrics(); - final int priorIndex = facts.getPriorIndex(key); - if (IncrementalIndexRow.EMPTY_ROW_INDEX != priorIndex) { - final int[] indexAndOffset = indexAndOffsets.get(priorIndex); - ByteBuffer aggBuffer = aggBuffers.get(indexAndOffset[0]).get(); - return aggregate(row, rowContainer, aggBuffer, indexAndOffset[1]); - } else { - if (metrics.length > 0 && getAggs()[0] == null) { - // note: creation of Aggregators is done lazily when at least one row from input is available - // so that FilteredAggregators could be initialized correctly. - rowContainer.set(row); - for (int i = 0; i < metrics.length; i++) { - final AggregatorFactory agg = metrics[i]; - getAggs()[i] = agg.factorizeBuffered(selectors.get(agg.getName())); - } - rowContainer.set(null); - } - - int bufferIndex = aggBuffers.size() - 1; - ByteBuffer lastBuffer = aggBuffers.isEmpty() ? null : aggBuffers.get(aggBuffers.size() - 1).get(); - int[] lastAggregatorsIndexAndOffset = indexAndOffsets.isEmpty() - ? null - : indexAndOffsets.get(indexAndOffsets.size() - 1); - - if (lastAggregatorsIndexAndOffset != null && lastAggregatorsIndexAndOffset[0] != bufferIndex) { - throw new ISE("last row's aggregate's buffer and last buffer index must be same"); - } - - int bufferOffset = aggsTotalSize + (lastAggregatorsIndexAndOffset != null ? lastAggregatorsIndexAndOffset[1] : 0); - ByteBuffer aggBuffer; - if (lastBuffer != null && - lastBuffer.capacity() - bufferOffset >= aggsTotalSize) { - aggBuffer = lastBuffer; - } else { - ResourceHolder bb = bufferPool.take(); - aggBuffers.add(bb); - bufferIndex = aggBuffers.size() - 1; - bufferOffset = 0; - aggBuffer = bb.get(); - } - - for (int i = 0; i < metrics.length; i++) { - getAggs()[i].init(aggBuffer, bufferOffset + aggOffsetInBuffer[i]); - } - - // Last ditch sanity checks - if (getNumEntries().get() >= maxRowCount && facts.getPriorIndex(key) == IncrementalIndexRow.EMPTY_ROW_INDEX) { - throw new IndexSizeExceededException("Maximum number of rows [%d] reached", maxRowCount); - } - - final int rowIndex = indexIncrement.getAndIncrement(); - - // note that we must update indexAndOffsets and the aggregator's buffers before facts, because as soon as we - // update facts concurrent readers get hold of it and might ask for newly added row - AddToFactsResult res = aggregate(row, rowContainer, aggBuffer, bufferOffset); - indexAndOffsets.add(new int[]{bufferIndex, bufferOffset}); - final int prev = facts.putIfAbsent(key, rowIndex); - if (IncrementalIndexRow.EMPTY_ROW_INDEX == prev) { - getNumEntries().incrementAndGet(); - } else { - throw new ISE("Unexpected state: Concurrent fact addition."); - } - - return res; - } - } - } - - public AddToFactsResult aggregate( - InputRow row, - ThreadLocal rowContainer, - ByteBuffer aggBuffer, - int bufferOffset - ) - { - final List parseExceptionMessages = new ArrayList<>(); - - rowContainer.set(row); - for (int i = 0; i < getMetrics().length; i++) { - final BufferAggregator agg = getAggs()[i]; - - synchronized (agg) { - try { - agg.aggregate(aggBuffer, bufferOffset + aggOffsetInBuffer[i]); - } - catch (ParseException e) { - // "aggregate" can throw ParseExceptions if a selector expects something but gets something else. - log.debug(e, "Encountered parse error, skipping aggregator[%s].", getMetricAggs()[i].getName()); - parseExceptionMessages.add(e.getMessage()); - } - } - } - rowContainer.set(null); - - return new AddToFactsResult(getNumEntries().get(), 0, parseExceptionMessages); - } - - - @Override - public int getLastRowIndex() - { - return indexIncrement.get() - 1; - } - - @Override - public boolean canAppendRow() - { - final boolean canAdd = size() < maxRowCount; - if (!canAdd) { - outOfRowsReason = StringUtils.format("Maximum number of rows [%d] reached", maxRowCount); - } - return canAdd; - } - - @Override - public String getOutOfRowsReason() - { - return outOfRowsReason; - } - - @Override - protected BufferAggregator[] getAggsForRow(int rowOffset) - { - return getAggs(); - } - - @Override - protected Object getAggVal(BufferAggregator agg, int rowOffset, int aggPosition) - { - int[] indexAndOffset = indexAndOffsets.get(rowOffset); - ByteBuffer bb = aggBuffers.get(indexAndOffset[0]).get(); - return agg.get(bb, indexAndOffset[1] + aggOffsetInBuffer[aggPosition]); - } - - @Override - public float getMetricFloatValue(int rowOffset, int aggOffset) - { - BufferAggregator agg = getAggs()[aggOffset]; - int[] indexAndOffset = indexAndOffsets.get(rowOffset); - ByteBuffer bb = aggBuffers.get(indexAndOffset[0]).get(); - return agg.getFloat(bb, indexAndOffset[1] + aggOffsetInBuffer[aggOffset]); - } - - @Override - public long getMetricLongValue(int rowOffset, int aggOffset) - { - BufferAggregator agg = getAggs()[aggOffset]; - int[] indexAndOffset = indexAndOffsets.get(rowOffset); - ByteBuffer bb = aggBuffers.get(indexAndOffset[0]).get(); - return agg.getLong(bb, indexAndOffset[1] + aggOffsetInBuffer[aggOffset]); - } - - @Override - public Object getMetricObjectValue(int rowOffset, int aggOffset) - { - BufferAggregator agg = getAggs()[aggOffset]; - int[] indexAndOffset = indexAndOffsets.get(rowOffset); - ByteBuffer bb = aggBuffers.get(indexAndOffset[0]).get(); - return agg.get(bb, indexAndOffset[1] + aggOffsetInBuffer[aggOffset]); - } - - @Override - public double getMetricDoubleValue(int rowOffset, int aggOffset) - { - BufferAggregator agg = getAggs()[aggOffset]; - int[] indexAndOffset = indexAndOffsets.get(rowOffset); - ByteBuffer bb = aggBuffers.get(indexAndOffset[0]).get(); - return agg.getDouble(bb, indexAndOffset[1] + aggOffsetInBuffer[aggOffset]); - } - - @Override - public boolean isNull(int rowOffset, int aggOffset) - { - BufferAggregator agg = getAggs()[aggOffset]; - int[] indexAndOffset = indexAndOffsets.get(rowOffset); - ByteBuffer bb = aggBuffers.get(indexAndOffset[0]).get(); - return agg.isNull(bb, indexAndOffset[1] + aggOffsetInBuffer[aggOffset]); - } - - /** - * NOTE: This is NOT thread-safe with add... so make sure all the adding is DONE before closing - */ - @Override - public void close() - { - super.close(); - facts.clear(); - indexAndOffsets.clear(); - - if (selectors != null) { - selectors.clear(); - } - - Closer c = Closer.create(); - aggBuffers.forEach(c::register); - try { - c.close(); - } - catch (IOException e) { - throw new RuntimeException(e); - } - aggBuffers.clear(); - } - - public static class Builder extends AppendableIndexBuilder - { - @Nullable - NonBlockingPool bufferPool = null; - - public Builder setBufferPool(final NonBlockingPool bufferPool) - { - this.bufferPool = bufferPool; - return this; - } - - @Override - public void validate() - { - super.validate(); - if (bufferPool == null) { - throw new IllegalArgumentException("bufferPool cannot be null"); - } - } - - @Override - protected OffheapIncrementalIndex buildInner() - { - return new OffheapIncrementalIndex( - Objects.requireNonNull(incrementalIndexSchema, "incrementalIndexSchema is null"), - deserializeComplexMetrics, - concurrentEventAdd, - sortFacts, - maxRowCount, - Objects.requireNonNull(bufferPool, "bufferPool is null") - ); - } - } -} diff --git a/processing/src/test/java/org/apache/druid/segment/incremental/IncrementalIndexCreator.java b/processing/src/test/java/org/apache/druid/segment/incremental/IncrementalIndexCreator.java index 3f112cc155fd..d59794854aa1 100644 --- a/processing/src/test/java/org/apache/druid/segment/incremental/IncrementalIndexCreator.java +++ b/processing/src/test/java/org/apache/druid/segment/incremental/IncrementalIndexCreator.java @@ -69,11 +69,6 @@ public static void addIndexSpec(Class c, String name) JSON_MAPPER.registerSubtypes(new NamedType(c, name)); } - static { - // The off-heap incremental-index is not registered for production, but we want to include it in the tests. - IncrementalIndexCreator.addIndexSpec(OffheapIncrementalIndexTestSpec.class, OffheapIncrementalIndexTestSpec.TYPE); - } - /** * Fetch all the available incremental-index implementations. * It can be used to parametrize the test. If more parameters are needed, use indexTypeCartesianProduct(). diff --git a/processing/src/test/java/org/apache/druid/segment/incremental/OffheapIncrementalIndexTestSpec.java b/processing/src/test/java/org/apache/druid/segment/incremental/OffheapIncrementalIndexTestSpec.java deleted file mode 100644 index 925973199113..000000000000 --- a/processing/src/test/java/org/apache/druid/segment/incremental/OffheapIncrementalIndexTestSpec.java +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -package org.apache.druid.segment.incremental; - -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.google.common.base.Supplier; -import org.apache.druid.collections.CloseableStupidPool; -import org.apache.druid.utils.JvmUtils; - -import javax.annotation.Nullable; -import java.io.Closeable; -import java.nio.ByteBuffer; - -/** - * OffheapIncrementalIndexTestSpec describes the off-heap indexing method for data ingestion. - * It also acts as a ByteBuffer supplier for the created off-heap incremental index. - * - * Note: since the off-heap incremental index is not yet supported in production ingestion, we define its spec here - * only for testing purposes. - */ -public class OffheapIncrementalIndexTestSpec implements AppendableIndexSpec, Supplier, Closeable -{ - public static final String TYPE = "offheap"; - static final int DEFAULT_BUFFER_SIZE = 1 << 23; - static final int DEFAULT_CACHE_SIZE = 1 << 30; - - final int bufferSize; - final int cacheSize; - - final CloseableStupidPool bufferPool; - - @JsonCreator - public OffheapIncrementalIndexTestSpec( - final @JsonProperty("bufferSize") @Nullable Integer bufferSize, - final @JsonProperty("cacheSize") @Nullable Integer cacheSize - ) - { - this.bufferSize = bufferSize != null && bufferSize > 0 ? bufferSize : DEFAULT_BUFFER_SIZE; - this.cacheSize = cacheSize != null && cacheSize > this.bufferSize ? cacheSize : DEFAULT_CACHE_SIZE; - this.bufferPool = new CloseableStupidPool<>( - "Off-heap incremental-index buffer pool", - this, - 0, - this.cacheSize / this.bufferSize - ); - } - - @JsonProperty - public int getBufferSize() - { - return bufferSize; - } - - @JsonProperty - public int getCacheSize() - { - return cacheSize; - } - - @Override - public AppendableIndexBuilder builder() - { - return new OffheapIncrementalIndex.Builder().setBufferPool(bufferPool); - } - - @Override - public long getDefaultMaxBytesInMemory() - { - // In the realtime node, the entire JVM's direct memory is utilized for ingestion and persist operations. - // But maxBytesInMemory only refers to the active index size and not to the index being flushed to disk and the - // persist buffer. - // To account for that, we set default to 1/2 of the max JVM's direct memory. - return JvmUtils.getRuntimeInfo().getDirectMemorySizeBytes() / 2; - } - - // Supplier and Closeable interface implementation - - @Override - public ByteBuffer get() - { - return ByteBuffer.allocateDirect(bufferSize); - } - - @Override - public void close() - { - bufferPool.close(); - } -} From 82064d8be8b23ab03137d9c33691ec17aaab14ab Mon Sep 17 00:00:00 2001 From: Gian Merlino Date: Fri, 16 Apr 2021 17:39:35 -0700 Subject: [PATCH 2/5] Remove things that are now unused. --- .../ExpressionAggregationBenchmark.java | 18 ----- .../GroupByTypeInterfaceBenchmark.java | 3 +- .../CachingClusteredClientBenchmark.java | 3 +- .../benchmark/query/GroupByBenchmark.java | 3 +- .../DistinctCountBufferAggregator.java | 18 ----- .../NoopDistinctCountBufferAggregator.java | 18 ----- .../MomentSketchBuildBufferAggregator.java | 12 --- .../MomentSketchMergeBufferAggregator.java | 18 ----- .../TDigestSketchBufferAggregator.java | 12 --- .../TimestampBufferAggregator.java | 18 ----- .../TimestampMinMaxAggregatorTest.java | 2 +- .../hll/HllSketchBuildBufferAggregator.java | 12 --- .../hll/HllSketchMergeBufferAggregator.java | 12 --- .../DoublesSketchBuildBufferAggregator.java | 12 --- .../DoublesSketchMergeBufferAggregator.java | 12 --- .../NoopDoublesSketchBufferAggregator.java | 12 --- .../theta/SketchBufferAggregator.java | 18 ----- ...yOfDoublesSketchBuildBufferAggregator.java | 12 --- ...yOfDoublesSketchMergeBufferAggregator.java | 12 --- ...pArrayOfDoublesSketchBufferAggregator.java | 12 --- .../bloom/BaseBloomFilterAggregator.java | 18 ----- .../ApproximateHistogramBufferAggregator.java | 19 ----- ...imateHistogramFoldingBufferAggregator.java | 18 ----- ...FixedBucketsHistogramBufferAggregator.java | 18 ----- .../variance/VarianceBufferAggregator.java | 18 ----- .../druid/query/GroupByMergedQueryRunner.java | 5 -- .../query/aggregation/BufferAggregator.java | 77 ------------------- .../aggregation/CountBufferAggregator.java | 19 ----- .../DelegatingBufferAggregator.java | 24 ------ .../aggregation/FilteredBufferAggregator.java | 24 ------ .../HistogramBufferAggregator.java | 18 ----- .../JavaScriptBufferAggregator.java | 19 ----- .../aggregation/NoopBufferAggregator.java | 18 ----- .../NullableNumericBufferAggregator.java | 33 -------- .../SimpleDoubleBufferAggregator.java | 18 ----- .../SimpleFloatBufferAggregator.java | 18 ----- .../SimpleLongBufferAggregator.java | 18 ----- .../SuppressedAggregatorFactory.java | 24 ------ .../any/DoubleAnyBufferAggregator.java | 18 ----- .../any/FloatAnyBufferAggregator.java | 19 ----- .../any/LongAnyBufferAggregator.java | 18 ----- .../any/StringAnyBufferAggregator.java | 18 ----- .../CardinalityBufferAggregator.java | 19 ----- .../LongConstantBufferAggregator.java | 12 --- .../first/DoubleFirstBufferAggregator.java | 18 ----- .../first/FloatFirstBufferAggregator.java | 18 ----- .../first/LongFirstBufferAggregator.java | 18 ----- .../first/StringFirstBufferAggregator.java | 18 ----- .../HyperUniquesBufferAggregator.java | 19 ----- .../last/DoubleLastBufferAggregator.java | 18 ----- .../last/FloatLastBufferAggregator.java | 18 ----- .../last/LongLastBufferAggregator.java | 18 ----- .../last/StringLastBufferAggregator.java | 18 ----- .../mean/DoubleMeanBufferAggregator.java | 18 ----- .../groupby/strategy/GroupByStrategyV1.java | 10 +-- .../segment/incremental/IncrementalIndex.java | 5 +- .../incremental/OnheapIncrementalIndex.java | 2 +- .../aggregation/DoubleMaxAggregationTest.java | 2 - .../aggregation/DoubleMinAggregationTest.java | 2 - .../GroupingAggregatorFactoryTest.java | 2 +- .../aggregation/LongMaxAggregationTest.java | 3 +- .../aggregation/LongMinAggregationTest.java | 3 +- .../any/DoubleAnyAggregationTest.java | 6 +- .../any/FloatAnyAggregationTest.java | 6 +- .../any/LongAnyAggregationTest.java | 8 +- .../LongConstantBufferAggregatorTest.java | 10 +-- .../first/DoubleFirstAggregationTest.java | 4 - .../first/FloatFirstAggregationTest.java | 4 - .../first/LongFirstAggregationTest.java | 4 - .../last/DoubleLastAggregationTest.java | 4 - .../last/FloatLastAggregationTest.java | 4 - .../last/LongLastAggregationTest.java | 4 - ...ByLimitPushDownInsufficientBufferTest.java | 6 +- ...roupByLimitPushDownMultiNodeMergeTest.java | 6 +- .../groupby/GroupByMultiSegmentTest.java | 3 +- .../groupby/GroupByQueryMergeBufferTest.java | 3 +- .../GroupByQueryRunnerFailureTest.java | 3 +- .../query/groupby/GroupByQueryRunnerTest.java | 5 +- .../groupby/NestedQueryPushDownTest.java | 6 +- 79 files changed, 34 insertions(+), 1011 deletions(-) diff --git a/benchmarks/src/test/java/org/apache/druid/benchmark/ExpressionAggregationBenchmark.java b/benchmarks/src/test/java/org/apache/druid/benchmark/ExpressionAggregationBenchmark.java index 8afcea4a4c32..1a6f25d853f6 100644 --- a/benchmarks/src/test/java/org/apache/druid/benchmark/ExpressionAggregationBenchmark.java +++ b/benchmarks/src/test/java/org/apache/druid/benchmark/ExpressionAggregationBenchmark.java @@ -227,24 +227,6 @@ public Object get(final ByteBuffer buf, final int position) return buf.getDouble(position); } - @Override - public float getFloat(final ByteBuffer buf, final int position) - { - throw new UnsupportedOperationException(); - } - - @Override - public long getLong(final ByteBuffer buf, final int position) - { - throw new UnsupportedOperationException(); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException(); - } - @Override public void close() { diff --git a/benchmarks/src/test/java/org/apache/druid/benchmark/GroupByTypeInterfaceBenchmark.java b/benchmarks/src/test/java/org/apache/druid/benchmark/GroupByTypeInterfaceBenchmark.java index 19fe385a2926..445068927534 100644 --- a/benchmarks/src/test/java/org/apache/druid/benchmark/GroupByTypeInterfaceBenchmark.java +++ b/benchmarks/src/test/java/org/apache/druid/benchmark/GroupByTypeInterfaceBenchmark.java @@ -393,8 +393,7 @@ public String getFormatString() new GroupByStrategyV1( configSupplier, new GroupByQueryEngine(configSupplier, bufferPool), - QueryBenchmarkUtil.NOOP_QUERYWATCHER, - bufferPool + QueryBenchmarkUtil.NOOP_QUERYWATCHER ), new GroupByStrategyV2( druidProcessingConfig, diff --git a/benchmarks/src/test/java/org/apache/druid/benchmark/query/CachingClusteredClientBenchmark.java b/benchmarks/src/test/java/org/apache/druid/benchmark/query/CachingClusteredClientBenchmark.java index ffdded1397f4..53ce33bfbbbd 100644 --- a/benchmarks/src/test/java/org/apache/druid/benchmark/query/CachingClusteredClientBenchmark.java +++ b/benchmarks/src/test/java/org/apache/druid/benchmark/query/CachingClusteredClientBenchmark.java @@ -369,8 +369,7 @@ private static GroupByQueryRunnerFactory makeGroupByQueryRunnerFactory( new GroupByStrategyV1( configSupplier, new GroupByQueryEngine(configSupplier, bufferPool), - QueryRunnerTestHelper.NOOP_QUERYWATCHER, - bufferPool + QueryRunnerTestHelper.NOOP_QUERYWATCHER ), new GroupByStrategyV2( processingConfig, diff --git a/benchmarks/src/test/java/org/apache/druid/benchmark/query/GroupByBenchmark.java b/benchmarks/src/test/java/org/apache/druid/benchmark/query/GroupByBenchmark.java index b9808c9cad69..b90db9b9bc48 100644 --- a/benchmarks/src/test/java/org/apache/druid/benchmark/query/GroupByBenchmark.java +++ b/benchmarks/src/test/java/org/apache/druid/benchmark/query/GroupByBenchmark.java @@ -508,8 +508,7 @@ public String getFormatString() new GroupByStrategyV1( configSupplier, new GroupByQueryEngine(configSupplier, bufferPool), - QueryBenchmarkUtil.NOOP_QUERYWATCHER, - bufferPool + QueryBenchmarkUtil.NOOP_QUERYWATCHER ), new GroupByStrategyV2( druidProcessingConfig, diff --git a/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/DistinctCountBufferAggregator.java b/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/DistinctCountBufferAggregator.java index 0b1ebf556d60..ef775eade102 100644 --- a/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/DistinctCountBufferAggregator.java +++ b/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/DistinctCountBufferAggregator.java @@ -76,24 +76,6 @@ public Object get(ByteBuffer buf, int position) return buf.getLong(position); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - return (float) buf.getLong(position); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - return buf.getLong(position); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return (double) buf.getLong(position); - } - @Override public void close() { diff --git a/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/NoopDistinctCountBufferAggregator.java b/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/NoopDistinctCountBufferAggregator.java index 1ac10183a99d..d48e97f3c3bd 100644 --- a/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/NoopDistinctCountBufferAggregator.java +++ b/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/NoopDistinctCountBufferAggregator.java @@ -57,24 +57,6 @@ public Object get(ByteBuffer buf, int position) return 0L; } - @Override - public float getFloat(ByteBuffer buf, int position) - { - return (float) 0; - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - return (long) 0; - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return 0; - } - @Override public void close() { diff --git a/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchBuildBufferAggregator.java b/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchBuildBufferAggregator.java index 79e88cc67ae8..9cdd564f1c5b 100644 --- a/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchBuildBufferAggregator.java +++ b/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchBuildBufferAggregator.java @@ -78,18 +78,6 @@ public synchronized Object get(final ByteBuffer buffer, final int position) return MomentSketchWrapper.fromBytes(mutationBuffer); } - @Override - public float getFloat(final ByteBuffer buffer, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - - @Override - public long getLong(final ByteBuffer buffer, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - @Override public void close() { diff --git a/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchMergeBufferAggregator.java b/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchMergeBufferAggregator.java index 505d1ebed97d..97839fdae15a 100644 --- a/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchMergeBufferAggregator.java +++ b/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchMergeBufferAggregator.java @@ -79,24 +79,6 @@ public Object get(ByteBuffer buf, int position) return MomentSketchWrapper.fromBytes(mutationBuffer); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - @Override public void close() { diff --git a/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchBufferAggregator.java b/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchBufferAggregator.java index be65896239c2..c9f7e2eb6f9c 100644 --- a/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchBufferAggregator.java +++ b/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchBufferAggregator.java @@ -93,18 +93,6 @@ public Object get(final ByteBuffer buffer, final int position) return sketchCache.get(buffer).get(position); } - @Override - public float getFloat(final ByteBuffer buffer, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - - @Override - public long getLong(final ByteBuffer buffer, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - @Override public void close() { diff --git a/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampBufferAggregator.java b/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampBufferAggregator.java index 196f434720f4..8cb4c1f3adc5 100644 --- a/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampBufferAggregator.java +++ b/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampBufferAggregator.java @@ -67,24 +67,6 @@ public Object get(ByteBuffer buf, int position) return buf.getLong(position); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - return (float) buf.getLong(position); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - return buf.getLong(position); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return (double) buf.getLong(position); - } - @Override public void close() { diff --git a/extensions-contrib/time-min-max/src/test/java/org/apache/druid/query/aggregation/TimestampMinMaxAggregatorTest.java b/extensions-contrib/time-min-max/src/test/java/org/apache/druid/query/aggregation/TimestampMinMaxAggregatorTest.java index 4aa3476098a8..45fa7e8c8c5c 100644 --- a/extensions-contrib/time-min-max/src/test/java/org/apache/druid/query/aggregation/TimestampMinMaxAggregatorTest.java +++ b/extensions-contrib/time-min-max/src/test/java/org/apache/druid/query/aggregation/TimestampMinMaxAggregatorTest.java @@ -154,7 +154,7 @@ public void testBufferAggregator() aggregate(selector, aggregator, buffer, 0); } - Assert.assertEquals(expected, new Timestamp(aggregator.getLong(buffer, 0))); + Assert.assertEquals(expected, new Timestamp((long) aggregator.get(buffer, 0))); aggregator.init(buffer, 0); diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchBuildBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchBuildBufferAggregator.java index 34c234978f4e..ccbdba100b96 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchBuildBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchBuildBufferAggregator.java @@ -112,18 +112,6 @@ public void close() sketchCache.clear(); } - @Override - public float getFloat(final ByteBuffer buf, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - - @Override - public long getLong(final ByteBuffer buf, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - private WritableMemory getMemory(final ByteBuffer buf) { return memCache.computeIfAbsent(buf, b -> WritableMemory.wrap(b, ByteOrder.LITTLE_ENDIAN)); diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchMergeBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchMergeBufferAggregator.java index f5bffa479d24..9b7c75ba7a30 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchMergeBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchMergeBufferAggregator.java @@ -110,18 +110,6 @@ public void close() // nothing to close } - @Override - public float getFloat(final ByteBuffer buf, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - - @Override - public long getLong(final ByteBuffer buf, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - @Override public void inspectRuntimeShape(RuntimeShapeInspector inspector) { diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchBuildBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchBuildBufferAggregator.java index e3303105afc5..72423b92698a 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchBuildBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchBuildBufferAggregator.java @@ -75,18 +75,6 @@ public synchronized Object get(final ByteBuffer buffer, final int position) return sketches.get(buffer).get(position).compact(); } - @Override - public float getFloat(final ByteBuffer buffer, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - - @Override - public long getLong(final ByteBuffer buffer, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - @Override public synchronized void close() { diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchMergeBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchMergeBufferAggregator.java index 41ae4532361d..c23697e78d3a 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchMergeBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchMergeBufferAggregator.java @@ -72,18 +72,6 @@ public synchronized Object get(final ByteBuffer buffer, final int position) return unions.get(buffer).get(position).getResult(); } - @Override - public float getFloat(final ByteBuffer buffer, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - - @Override - public long getLong(final ByteBuffer buffer, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - @Override public synchronized void close() { diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/NoopDoublesSketchBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/NoopDoublesSketchBufferAggregator.java index 5f7808c65ec0..2d5a849c7a67 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/NoopDoublesSketchBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/NoopDoublesSketchBufferAggregator.java @@ -42,18 +42,6 @@ public Object get(final ByteBuffer buf, final int position) return DoublesSketchOperations.EMPTY_SKETCH; } - @Override - public float getFloat(final ByteBuffer buf, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - - @Override - public long getLong(final ByteBuffer buf, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - @Override public void close() { diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchBufferAggregator.java index 34aae3f36e18..ffa66c17ee5c 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchBufferAggregator.java @@ -64,24 +64,6 @@ public Object get(ByteBuffer buf, int position) return helper.get(buf, position); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - @Override public void close() { diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchBuildBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchBuildBufferAggregator.java index 264c258c3aee..bc8f48905a3a 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchBuildBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchBuildBufferAggregator.java @@ -110,18 +110,6 @@ public Object get(final ByteBuffer buf, final int position) return sketch.compact(); } - @Override - public float getFloat(final ByteBuffer buf, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - - @Override - public long getLong(final ByteBuffer buf, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - @Override public void close() { diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchMergeBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchMergeBufferAggregator.java index 6e2810318cf7..d564288b13d2 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchMergeBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchMergeBufferAggregator.java @@ -98,18 +98,6 @@ public Object get(final ByteBuffer buf, final int position) return union.getResult(); } - @Override - public float getFloat(final ByteBuffer buf, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - - @Override - public long getLong(final ByteBuffer buf, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - @Override public void close() { diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/NoopArrayOfDoublesSketchBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/NoopArrayOfDoublesSketchBufferAggregator.java index cbb38957528d..667c5b908299 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/NoopArrayOfDoublesSketchBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/NoopArrayOfDoublesSketchBufferAggregator.java @@ -52,18 +52,6 @@ public Object get(final ByteBuffer buf, final int position) return emptySketch; } - @Override - public float getFloat(final ByteBuffer buf, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - - @Override - public long getLong(final ByteBuffer buf, final int position) - { - throw new UnsupportedOperationException("Not implemented"); - } - @Override public void close() { diff --git a/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/aggregation/bloom/BaseBloomFilterAggregator.java b/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/aggregation/bloom/BaseBloomFilterAggregator.java index 8bc4bd323adc..10dd2513ed76 100644 --- a/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/aggregation/bloom/BaseBloomFilterAggregator.java +++ b/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/aggregation/bloom/BaseBloomFilterAggregator.java @@ -110,24 +110,6 @@ public Object get(ByteBuffer buf, int position) return resultCopy; } - @Override - public float getFloat(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("BloomFilterAggregator does not support getFloat()"); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("BloomFilterAggregator does not support getLong()"); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("BloomFilterAggregator does not support getDouble()"); - } - @Override public void aggregate() { diff --git a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramBufferAggregator.java b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramBufferAggregator.java index b661e17d4dbb..c324aa3b7f74 100644 --- a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramBufferAggregator.java +++ b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramBufferAggregator.java @@ -57,25 +57,6 @@ public Object get(ByteBuffer buf, int position) return innerAggregator.get(buf, position); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("ApproximateHistogramBufferAggregator does not support getFloat()"); - } - - - @Override - public long getLong(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("ApproximateHistogramBufferAggregator does not support getLong()"); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("ApproximateHistogramBufferAggregator does not support getDouble()"); - } - @Override public void close() { diff --git a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramFoldingBufferAggregator.java b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramFoldingBufferAggregator.java index 811e2bfb00f3..ada898d2c1c5 100644 --- a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramFoldingBufferAggregator.java +++ b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramFoldingBufferAggregator.java @@ -60,24 +60,6 @@ public Object get(ByteBuffer buf, int position) return innerAggregator.get(buf, position); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("ApproximateHistogramFoldingBufferAggregator does not support getFloat()"); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("ApproximateHistogramFoldingBufferAggregator does not support getLong()"); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("ApproximateHistogramFoldingBufferAggregator does not support getDouble()"); - } - @Override public void close() { diff --git a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogramBufferAggregator.java b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogramBufferAggregator.java index 1ecebb545774..18b846ac6969 100644 --- a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogramBufferAggregator.java +++ b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogramBufferAggregator.java @@ -66,24 +66,6 @@ public Object get(ByteBuffer buf, int position) return innerAggregator.get(buf, position); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("FixedBucketsHistogramBufferAggregator does not support getFloat()"); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("FixedBucketsHistogramBufferAggregator does not support getLong()"); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("FixedBucketsHistogramBufferAggregator does not support getDouble()"); - } - @Override public void close() { diff --git a/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceBufferAggregator.java b/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceBufferAggregator.java index 065ad2aa3e00..e66d9b0d47a1 100644 --- a/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceBufferAggregator.java +++ b/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceBufferAggregator.java @@ -50,24 +50,6 @@ public VarianceAggregatorCollector get(final ByteBuffer buf, final int position) return getVarianceCollector(buf, position); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("VarianceBufferAggregator does not support getFloat()"); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("VarianceBufferAggregator does not support getFloat()"); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("VarianceBufferAggregator does not support getDouble()"); - } - @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/GroupByMergedQueryRunner.java b/processing/src/main/java/org/apache/druid/query/GroupByMergedQueryRunner.java index 9948560402d2..d86ce7c80cf8 100644 --- a/processing/src/main/java/org/apache/druid/query/GroupByMergedQueryRunner.java +++ b/processing/src/main/java/org/apache/druid/query/GroupByMergedQueryRunner.java @@ -30,7 +30,6 @@ import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.MoreExecutors; -import org.apache.druid.collections.NonBlockingPool; import org.apache.druid.common.guava.GuavaUtils; import org.apache.druid.data.input.Row; import org.apache.druid.java.util.common.ISE; @@ -46,7 +45,6 @@ import org.apache.druid.query.groupby.GroupByQueryHelper; import org.apache.druid.segment.incremental.IncrementalIndex; -import java.nio.ByteBuffer; import java.util.List; import java.util.Queue; import java.util.concurrent.CancellationException; @@ -63,13 +61,11 @@ public class GroupByMergedQueryRunner implements QueryRunner private final ListeningExecutorService exec; private final Supplier configSupplier; private final QueryWatcher queryWatcher; - private final NonBlockingPool bufferPool; public GroupByMergedQueryRunner( ExecutorService exec, Supplier configSupplier, QueryWatcher queryWatcher, - NonBlockingPool bufferPool, Iterable> queryables ) { @@ -77,7 +73,6 @@ public GroupByMergedQueryRunner( this.queryWatcher = queryWatcher; this.queryables = Iterables.unmodifiableIterable(Iterables.filter(queryables, Predicates.notNull())); this.configSupplier = configSupplier; - this.bufferPool = bufferPool; } @Override diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java index 6f1e53bac420..79023af724cd 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java @@ -96,64 +96,6 @@ public interface BufferAggregator extends HotLoopCallee @Nullable Object get(ByteBuffer buf, int position); - /** - * Returns the float representation of the given aggregate byte array - * - * Converts the given byte buffer representation into the intermediate aggregate value. - * - * Implementations must not change the position, limit or mark of the given buffer - * - * Implementations are only required to support this method if they are aggregations which - * have an {@link AggregatorFactory#getType()} ()} of {@link org.apache.druid.segment.column.ValueType#FLOAT}. - * If unimplemented, throwing an {@link UnsupportedOperationException} is common and recommended. - * - * @param buf byte buffer storing the byte array representation of the aggregate - * @param position offset within the byte buffer at which the aggregate value is stored - * @return the float representation of the aggregate - */ - float getFloat(ByteBuffer buf, int position); - - /** - * Returns the long representation of the given aggregate byte array - * - * Converts the given byte buffer representation into the intermediate aggregate value. - * - * Implementations must not change the position, limit or mark of the given buffer - * - * Implementations are only required to support this method if they are aggregations which - * have an {@link AggregatorFactory#getType()} of of {@link org.apache.druid.segment.column.ValueType#LONG}. - * If unimplemented, throwing an {@link UnsupportedOperationException} is common and recommended. - * - * @param buf byte buffer storing the byte array representation of the aggregate - * @param position offset within the byte buffer at which the aggregate value is stored - * @return the long representation of the aggregate - */ - long getLong(ByteBuffer buf, int position); - - /** - * Returns the double representation of the given aggregate byte array - * - * Converts the given byte buffer representation into the intermediate aggregate value. - * - * Implementations must not change the position, limit or mark of the given buffer - * - * Implementations are only required to support this method if they are aggregations which - * have an {@link AggregatorFactory#getType()} of of {@link org.apache.druid.segment.column.ValueType#DOUBLE}. - * If unimplemented, throwing an {@link UnsupportedOperationException} is common and recommended. - * - * The default implementation casts {@link BufferAggregator#getFloat(ByteBuffer, int)} to double. - * This default method is added to enable smooth backward compatibility, please re-implement it if your aggregators - * work with numeric double columns. - * - * @param buf byte buffer storing the byte array representation of the aggregate - * @param position offset within the byte buffer at which the aggregate value is stored - * @return the double representation of the aggregate - */ - default double getDouble(ByteBuffer buf, int position) - { - return (double) getFloat(buf, position); - } - /** * Release any resources used by the aggregator */ @@ -193,23 +135,4 @@ default void inspectRuntimeShape(RuntimeShapeInspector inspector) default void relocate(int oldPosition, int newPosition, ByteBuffer oldBuffer, ByteBuffer newBuffer) { } - - /** - * returns true if aggregator's output type is primitive long/double/float and aggregated value is null, - * but when aggregated output type is Object, this method always returns false, - * and users are advised to check nullability for the object returned by {@link BufferAggregator#get(ByteBuffer, int)} - * method. - * The default implementation always return false to enable smooth backward compatibility, - * re-implement if your aggregator is nullable. - * - * @param buf byte buffer storing the byte array representation of the aggregate - * @param position offset within the byte buffer at which the aggregate value is stored - * - * @return true if the aggregated value is primitive long/double/float and aggregated value is null otherwise false. - */ - default boolean isNull(ByteBuffer buf, int position) - { - return false; - } - } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/CountBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/CountBufferAggregator.java index 7f30fa0006e3..a14f9e610758 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/CountBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/CountBufferAggregator.java @@ -46,25 +46,6 @@ public Object get(ByteBuffer buf, int position) return buf.getLong(position); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - return buf.getLong(position); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return buf.getLong(position); - } - - - @Override - public long getLong(ByteBuffer buf, int position) - { - return buf.getLong(position); - } - @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/DelegatingBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/DelegatingBufferAggregator.java index 9b1aa8086b2b..e366c511950d 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/DelegatingBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/DelegatingBufferAggregator.java @@ -51,24 +51,6 @@ public Object get(ByteBuffer buf, int position) return delegate.get(buf, position); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - return delegate.getFloat(buf, position); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - return delegate.getLong(buf, position); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return delegate.getDouble(buf, position); - } - @Override public void close() { @@ -86,10 +68,4 @@ public void relocate(int oldPosition, int newPosition, ByteBuffer oldBuffer, Byt { delegate.relocate(oldPosition, newPosition, oldBuffer, newBuffer); } - - @Override - public boolean isNull(ByteBuffer buf, int position) - { - return delegate.isNull(buf, position); - } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/FilteredBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/FilteredBufferAggregator.java index 47e8498189e0..5ac6c9bb4202 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/FilteredBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/FilteredBufferAggregator.java @@ -55,24 +55,6 @@ public Object get(ByteBuffer buf, int position) return delegate.get(buf, position); } - @Override - public long getLong(ByteBuffer buf, int position) - { - return delegate.getLong(buf, position); - } - - @Override - public float getFloat(ByteBuffer buf, int position) - { - return delegate.getFloat(buf, position); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return delegate.getDouble(buf, position); - } - @Override public void relocate( final int oldPosition, @@ -84,12 +66,6 @@ public void relocate( delegate.relocate(oldPosition, newPosition, oldBuffer, newBuffer); } - @Override - public boolean isNull(final ByteBuffer buf, final int position) - { - return delegate.isNull(buf, position); - } - @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/HistogramBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/HistogramBufferAggregator.java index 6226936d5e81..d0ad00e20ba0 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/HistogramBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/HistogramBufferAggregator.java @@ -87,24 +87,6 @@ public Object get(ByteBuffer buf, int position) return new Histogram(breaks, bins, min, max); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("HistogramBufferAggregator does not support getFloat()"); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("HistogramBufferAggregator does not support getLong()"); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("HistogramBufferAggregator does not support getDouble"); - } - @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/JavaScriptBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/JavaScriptBufferAggregator.java index c320a8d6406a..4436de880444 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/JavaScriptBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/JavaScriptBufferAggregator.java @@ -57,25 +57,6 @@ public Object get(ByteBuffer buf, int position) return buf.getDouble(position); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - return (float) buf.getDouble(position); - } - - - @Override - public long getLong(ByteBuffer buf, int position) - { - return (long) buf.getDouble(position); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return buf.getDouble(position); - } - @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/NoopBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/NoopBufferAggregator.java index 95774203d03e..932ac11e7338 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/NoopBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/NoopBufferAggregator.java @@ -52,24 +52,6 @@ public Object get(ByteBuffer buf, int position) return null; } - @Override - public float getFloat(ByteBuffer buf, int position) - { - return 0; - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - return 0L; - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return 0d; - } - @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/NullableNumericBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/NullableNumericBufferAggregator.java index 4a8ce6f792a4..f0744f4ed04d 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/NullableNumericBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/NullableNumericBufferAggregator.java @@ -86,39 +86,6 @@ public Object get(ByteBuffer buf, int position) return delegate.get(buf, position + Byte.BYTES); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - if (buf.get(position) == NullHandling.IS_NULL_BYTE) { - throw new IllegalStateException("Cannot return float for Null Value"); - } - return delegate.getFloat(buf, position + Byte.BYTES); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - if (buf.get(position) == NullHandling.IS_NULL_BYTE) { - throw new IllegalStateException("Cannot return long for Null Value"); - } - return delegate.getLong(buf, position + Byte.BYTES); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - if (buf.get(position) == NullHandling.IS_NULL_BYTE) { - throw new IllegalStateException("Cannot return double for Null Value"); - } - return delegate.getDouble(buf, position + Byte.BYTES); - } - - @Override - public boolean isNull(ByteBuffer buf, int position) - { - return buf.get(position) == NullHandling.IS_NULL_BYTE || delegate.isNull(buf, position + Byte.BYTES); - } - @Override public void relocate(int oldPosition, int newPosition, ByteBuffer oldBuffer, ByteBuffer newBuffer) { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/SimpleDoubleBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/SimpleDoubleBufferAggregator.java index 01f3901ba6fd..47291c4e7dd3 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/SimpleDoubleBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/SimpleDoubleBufferAggregator.java @@ -62,24 +62,6 @@ public final Object get(ByteBuffer buf, int position) return buf.getDouble(position); } - @Override - public final float getFloat(ByteBuffer buf, int position) - { - return (float) buf.getDouble(position); - } - - @Override - public final long getLong(ByteBuffer buf, int position) - { - return (long) buf.getDouble(position); - } - - @Override - public double getDouble(ByteBuffer buffer, int position) - { - return buffer.getDouble(position); - } - @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/SimpleFloatBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/SimpleFloatBufferAggregator.java index 42338936c8de..2c45352c7896 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/SimpleFloatBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/SimpleFloatBufferAggregator.java @@ -49,24 +49,6 @@ public final Object get(ByteBuffer buf, int position) return buf.getFloat(position); } - @Override - public final float getFloat(ByteBuffer buf, int position) - { - return buf.getFloat(position); - } - - @Override - public final long getLong(ByteBuffer buf, int position) - { - return (long) buf.getFloat(position); - } - - @Override - public double getDouble(ByteBuffer buffer, int position) - { - return (double) buffer.getFloat(position); - } - @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/SimpleLongBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/SimpleLongBufferAggregator.java index d10ba175e4be..bc54b299d67a 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/SimpleLongBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/SimpleLongBufferAggregator.java @@ -39,24 +39,6 @@ public Object get(ByteBuffer buf, int position) return buf.getLong(position); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - return (float) buf.getLong(position); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - return buf.getLong(position); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return (double) buf.getLong(position); - } - @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/SuppressedAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/SuppressedAggregatorFactory.java index 3332e959def7..bd20075338f8 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/SuppressedAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/SuppressedAggregatorFactory.java @@ -331,24 +331,6 @@ public Object get(ByteBuffer buf, int position) return delegate.get(buf, position); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - return delegate.getFloat(buf, position); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - return delegate.getLong(buf, position); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return delegate.getDouble(buf, position); - } - @Override public void close() { @@ -367,12 +349,6 @@ public void relocate(int oldPosition, int newPosition, ByteBuffer oldBuffer, Byt delegate.relocate(oldPosition, newPosition, oldBuffer, newBuffer); } - @Override - public boolean isNull(ByteBuffer buf, int position) - { - return delegate.isNull(buf, position); - } - @Override public boolean equals(Object o) { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/any/DoubleAnyBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/any/DoubleAnyBufferAggregator.java index 6737cd694d45..45d5a796cc02 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/any/DoubleAnyBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/any/DoubleAnyBufferAggregator.java @@ -52,22 +52,4 @@ public Object get(ByteBuffer buf, int position) final boolean isNull = isValueNull(buf, position); return isNull ? null : buf.getDouble(position + FOUND_VALUE_OFFSET); } - - @Override - public float getFloat(ByteBuffer buf, int position) - { - return (float) buf.getDouble(position + FOUND_VALUE_OFFSET); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - return (long) buf.getDouble(position + FOUND_VALUE_OFFSET); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return buf.getDouble(position + FOUND_VALUE_OFFSET); - } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/any/FloatAnyBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/any/FloatAnyBufferAggregator.java index b924a7a3252d..73f0e1fc0219 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/any/FloatAnyBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/any/FloatAnyBufferAggregator.java @@ -53,23 +53,4 @@ public Object get(ByteBuffer buf, int position) final boolean isNull = isValueNull(buf, position); return isNull ? null : buf.getFloat(position + FOUND_VALUE_OFFSET); } - - @Override - public float getFloat(ByteBuffer buf, int position) - { - return buf.getFloat(position + FOUND_VALUE_OFFSET); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - return (long) buf.getFloat(position + FOUND_VALUE_OFFSET); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return (double) buf.getFloat(position + FOUND_VALUE_OFFSET); - } - } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/any/LongAnyBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/any/LongAnyBufferAggregator.java index 91c1fbe03206..5b80c7e04e6a 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/any/LongAnyBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/any/LongAnyBufferAggregator.java @@ -52,22 +52,4 @@ public Object get(ByteBuffer buf, int position) final boolean isNull = isValueNull(buf, position); return isNull ? null : buf.getLong(position + FOUND_VALUE_OFFSET); } - - @Override - public float getFloat(ByteBuffer buf, int position) - { - return (float) buf.getLong(position + FOUND_VALUE_OFFSET); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return (double) buf.getLong(position + FOUND_VALUE_OFFSET); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - return buf.getLong(position + FOUND_VALUE_OFFSET); - } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/any/StringAnyBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/any/StringAnyBufferAggregator.java index 32bb3153fa2b..1a66b16c2902 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/any/StringAnyBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/any/StringAnyBufferAggregator.java @@ -80,24 +80,6 @@ public Object get(ByteBuffer buf, int position) } } - @Override - public float getFloat(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("StringAnyBufferAggregator does not support getFloat()"); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("StringAnyBufferAggregator does not support getLong()"); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("StringAnyBufferAggregator does not support getDouble()"); - } - @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/cardinality/CardinalityBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/cardinality/CardinalityBufferAggregator.java index 64d70d47459d..45d7684ac61a 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/cardinality/CardinalityBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/cardinality/CardinalityBufferAggregator.java @@ -78,25 +78,6 @@ public Object get(ByteBuffer buf, int position) return HyperUniquesBufferAggregator.doGet(buf, position); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("CardinalityBufferAggregator does not support getFloat()"); - } - - - @Override - public long getLong(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("CardinalityBufferAggregator does not support getLong()"); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("CardinalityBufferAggregators does not support getDouble()"); - } - @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/constant/LongConstantBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/constant/LongConstantBufferAggregator.java index 1ddf11b57d7b..eed822831924 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/constant/LongConstantBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/constant/LongConstantBufferAggregator.java @@ -54,18 +54,6 @@ public Object get(ByteBuffer buf, int position) return value; } - @Override - public float getFloat(ByteBuffer buf, int position) - { - return (float) value; - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - return value; - } - @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/first/DoubleFirstBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/first/DoubleFirstBufferAggregator.java index dabade475369..08b3925cb2ca 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/first/DoubleFirstBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/first/DoubleFirstBufferAggregator.java @@ -53,22 +53,4 @@ public Object get(ByteBuffer buf, int position) final boolean rhsNull = isValueNull(buf, position); return new SerializablePair<>(buf.getLong(position), rhsNull ? null : buf.getDouble(position + VALUE_OFFSET)); } - - @Override - public float getFloat(ByteBuffer buf, int position) - { - return (float) buf.getDouble(position + VALUE_OFFSET); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - return (long) buf.getDouble(position + VALUE_OFFSET); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return buf.getDouble(position + VALUE_OFFSET); - } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/first/FloatFirstBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/first/FloatFirstBufferAggregator.java index cf7d272b0085..62659393c4ea 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/first/FloatFirstBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/first/FloatFirstBufferAggregator.java @@ -53,22 +53,4 @@ public Object get(ByteBuffer buf, int position) final boolean rhsNull = isValueNull(buf, position); return new SerializablePair<>(buf.getLong(position), rhsNull ? null : buf.getFloat(position + VALUE_OFFSET)); } - - @Override - public float getFloat(ByteBuffer buf, int position) - { - return buf.getFloat(position + VALUE_OFFSET); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - return (long) buf.getFloat(position + VALUE_OFFSET); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return buf.getFloat(position + VALUE_OFFSET); - } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/first/LongFirstBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/first/LongFirstBufferAggregator.java index 582cda160153..a50fe5c854d6 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/first/LongFirstBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/first/LongFirstBufferAggregator.java @@ -49,22 +49,4 @@ public Object get(ByteBuffer buf, int position) final boolean rhsNull = isValueNull(buf, position); return new SerializablePair<>(buf.getLong(position), rhsNull ? null : buf.getLong(position + VALUE_OFFSET)); } - - @Override - public float getFloat(ByteBuffer buf, int position) - { - return (float) buf.getLong(position + VALUE_OFFSET); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - return buf.getLong(position + VALUE_OFFSET); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return (double) buf.getLong(position + VALUE_OFFSET); - } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/first/StringFirstBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/first/StringFirstBufferAggregator.java index d84793e997a9..24751ff451d9 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/first/StringFirstBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/first/StringFirstBufferAggregator.java @@ -105,24 +105,6 @@ public Object get(ByteBuffer buf, int position) return StringFirstLastUtils.readPair(buf, position); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("StringFirstAggregator does not support getFloat()"); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("StringFirstAggregator does not support getLong()"); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("StringFirstAggregator does not support getDouble()"); - } - @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniquesBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniquesBufferAggregator.java index 3eba440aee62..2457bdd98cd4 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniquesBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniquesBufferAggregator.java @@ -93,25 +93,6 @@ public Object get(ByteBuffer buf, int position) return doGet(buf, position); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("HyperUniquesBufferAggregator does not support getFloat()"); - } - - - @Override - public long getLong(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("HyperUniquesBufferAggregator does not support getLong()"); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("HyperUniquesBufferAggregator does not support getDouble()"); - } - @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/last/DoubleLastBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/last/DoubleLastBufferAggregator.java index 8acddce53a83..5614fc51966a 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/last/DoubleLastBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/last/DoubleLastBufferAggregator.java @@ -53,22 +53,4 @@ public Object get(ByteBuffer buf, int position) final boolean rhsNull = isValueNull(buf, position); return new SerializablePair<>(buf.getLong(position), rhsNull ? null : buf.getDouble(position + VALUE_OFFSET)); } - - @Override - public float getFloat(ByteBuffer buf, int position) - { - return (float) buf.getDouble(position + VALUE_OFFSET); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - return (long) buf.getDouble(position + VALUE_OFFSET); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return buf.getDouble(position + VALUE_OFFSET); - } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/last/FloatLastBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/last/FloatLastBufferAggregator.java index 95ad6fe5c5ee..bdc6a8dfe616 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/last/FloatLastBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/last/FloatLastBufferAggregator.java @@ -53,22 +53,4 @@ public Object get(ByteBuffer buf, int position) final boolean rhsNull = isValueNull(buf, position); return new SerializablePair<>(buf.getLong(position), rhsNull ? null : buf.getFloat(position + VALUE_OFFSET)); } - - @Override - public float getFloat(ByteBuffer buf, int position) - { - return buf.getFloat(position + VALUE_OFFSET); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - return (long) buf.getFloat(position + VALUE_OFFSET); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return buf.getFloat(position + VALUE_OFFSET); - } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/last/LongLastBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/last/LongLastBufferAggregator.java index 981ba3e2f665..39d5efde9f80 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/last/LongLastBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/last/LongLastBufferAggregator.java @@ -49,22 +49,4 @@ public Object get(ByteBuffer buf, int position) boolean rhsNull = isValueNull(buf, position); return new SerializablePair<>(buf.getLong(position), rhsNull ? null : buf.getLong(position + VALUE_OFFSET)); } - - @Override - public float getFloat(ByteBuffer buf, int position) - { - return (float) buf.getLong(position + VALUE_OFFSET); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - return buf.getLong(position + VALUE_OFFSET); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - return buf.getLong(position + VALUE_OFFSET); - } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastBufferAggregator.java index 9da985235472..73ecb2729bd9 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastBufferAggregator.java @@ -106,24 +106,6 @@ public Object get(ByteBuffer buf, int position) return StringFirstLastUtils.readPair(buf, position); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("StringFirstAggregator does not support getFloat()"); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("StringFirstAggregator does not support getLong()"); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("StringFirstAggregator does not support getDouble()"); - } - @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/mean/DoubleMeanBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/mean/DoubleMeanBufferAggregator.java index 5ff7f81a734a..3571ab227308 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/mean/DoubleMeanBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/mean/DoubleMeanBufferAggregator.java @@ -69,24 +69,6 @@ public Object get(ByteBuffer buf, int position) return DoubleMeanHolder.get(buf, position); } - @Override - public float getFloat(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("not supported"); - } - - @Override - public long getLong(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("not supported"); - } - - @Override - public double getDouble(ByteBuffer buf, int position) - { - throw new UnsupportedOperationException("not supported"); - } - @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/groupby/strategy/GroupByStrategyV1.java b/processing/src/main/java/org/apache/druid/query/groupby/strategy/GroupByStrategyV1.java index 8dda67d75f96..a7a28ec5ad6d 100644 --- a/processing/src/main/java/org/apache/druid/query/groupby/strategy/GroupByStrategyV1.java +++ b/processing/src/main/java/org/apache/druid/query/groupby/strategy/GroupByStrategyV1.java @@ -27,8 +27,6 @@ import com.google.common.collect.Iterables; import com.google.common.util.concurrent.ListeningExecutorService; import com.google.inject.Inject; -import org.apache.druid.collections.NonBlockingPool; -import org.apache.druid.guice.annotations.Global; import org.apache.druid.java.util.common.IAE; import org.apache.druid.java.util.common.guava.Sequence; import org.apache.druid.java.util.common.guava.Sequences; @@ -53,7 +51,6 @@ import org.apache.druid.segment.incremental.IncrementalIndexStorageAdapter; import org.joda.time.Interval; -import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; @@ -63,20 +60,17 @@ public class GroupByStrategyV1 implements GroupByStrategy private final Supplier configSupplier; private final GroupByQueryEngine engine; private final QueryWatcher queryWatcher; - private final NonBlockingPool bufferPool; @Inject public GroupByStrategyV1( Supplier configSupplier, GroupByQueryEngine engine, - QueryWatcher queryWatcher, - @Global NonBlockingPool bufferPool + QueryWatcher queryWatcher ) { this.configSupplier = configSupplier; this.engine = engine; this.queryWatcher = queryWatcher; - this.bufferPool = bufferPool; } @Override @@ -271,7 +265,7 @@ public QueryRunner mergeRunners( final Iterable> queryRunners ) { - return new GroupByMergedQueryRunner<>(exec, configSupplier, queryWatcher, bufferPool, queryRunners); + return new GroupByMergedQueryRunner<>(exec, configSupplier, queryWatcher, queryRunners); } @Override diff --git a/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java b/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java index 63cfa64e5687..9aeac3037eeb 100644 --- a/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java +++ b/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java @@ -347,7 +347,7 @@ protected abstract AddToFactsResult addToFacts( protected abstract AggregatorType[] getAggsForRow(int rowOffset); - protected abstract Object getAggVal(AggregatorType agg, int rowOffset, int aggPosition); + protected abstract Object getAggVal(AggregatorType agg); protected abstract float getMetricFloatValue(int rowOffset, int aggOffset); @@ -690,6 +690,7 @@ private long getMaxTimeMillis() return getFacts().getMaxTimeMillis(); } + @SuppressWarnings("unused") // Potentially useful for alternative IncrementalIndex implementations public AggregatorType[] getAggs() { return aggs; @@ -920,7 +921,7 @@ public Iterable iterableWithPostAggregations( AggregatorType[] aggs = getAggsForRow(rowOffset); for (int i = 0; i < aggs.length; ++i) { - theVals.put(metrics[i].getName(), getAggVal(aggs[i], rowOffset, i)); + theVals.put(metrics[i].getName(), getAggVal(aggs[i])); } if (postAggs != null) { diff --git a/processing/src/main/java/org/apache/druid/segment/incremental/OnheapIncrementalIndex.java b/processing/src/main/java/org/apache/druid/segment/incremental/OnheapIncrementalIndex.java index a72124a21533..230f5aec018f 100644 --- a/processing/src/main/java/org/apache/druid/segment/incremental/OnheapIncrementalIndex.java +++ b/processing/src/main/java/org/apache/druid/segment/incremental/OnheapIncrementalIndex.java @@ -334,7 +334,7 @@ protected Aggregator[] getAggsForRow(int rowOffset) } @Override - protected Object getAggVal(Aggregator agg, int rowOffset, int aggPosition) + protected Object getAggVal(Aggregator agg) { return agg.get(); } diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/DoubleMaxAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/DoubleMaxAggregationTest.java index 3945c4feb20b..3ae54d44d317 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/DoubleMaxAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/DoubleMaxAggregationTest.java @@ -107,8 +107,6 @@ public void testDoubleMaxBufferAggregator() aggregate(selector, agg, buffer, 0); Assert.assertEquals(values[2], ((Double) agg.get(buffer, 0)).doubleValue(), 0.0001); - Assert.assertEquals((long) values[2], agg.getLong(buffer, 0)); - Assert.assertEquals(values[2], agg.getFloat(buffer, 0), 0.0001); } @Test diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/DoubleMinAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/DoubleMinAggregationTest.java index 14702d1bf1f5..96987b700231 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/DoubleMinAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/DoubleMinAggregationTest.java @@ -108,8 +108,6 @@ public void testDoubleMinBufferAggregator() aggregate(selector, agg, buffer, 0); Assert.assertEquals(values[2], ((Double) agg.get(buffer, 0)).doubleValue(), 0.0001); - Assert.assertEquals((long) values[2], agg.getLong(buffer, 0)); - Assert.assertEquals(values[2], agg.getFloat(buffer, 0), 0.0001); } @Test diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/GroupingAggregatorFactoryTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/GroupingAggregatorFactoryTest.java index 0117bf1e82a5..2faec5473a43 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/GroupingAggregatorFactoryTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/GroupingAggregatorFactoryTest.java @@ -76,7 +76,7 @@ public void testNewBufferAggregator() GroupingAggregatorFactory factory = makeFactory(new String[]{"a", "b"}, new String[]{"a"}); BufferAggregator aggregator = factory.factorizeBuffered(metricFactory); Assert.assertEquals(LongConstantBufferAggregator.class, aggregator.getClass()); - Assert.assertEquals(1, aggregator.getLong(null, 0)); + Assert.assertEquals(1L, aggregator.get(null, 0)); } @Test diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/LongMaxAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/LongMaxAggregationTest.java index 838d3969cd68..33d5b9d1d95e 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/LongMaxAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/LongMaxAggregationTest.java @@ -107,8 +107,7 @@ public void testLongMaxBufferAggregator() aggregate(selector, agg, buffer, 0); Assert.assertEquals(values[2], ((Long) agg.get(buffer, 0)).longValue()); - Assert.assertEquals(values[2], agg.getLong(buffer, 0)); - Assert.assertEquals((float) values[2], agg.getFloat(buffer, 0), 0.0001); + Assert.assertEquals(values[2], agg.get(buffer, 0)); } diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/LongMinAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/LongMinAggregationTest.java index 00c9ab4f8c8f..fa6f799d9c4d 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/LongMinAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/LongMinAggregationTest.java @@ -106,8 +106,7 @@ public void testLongMinBufferAggregator() aggregate(selector, agg, buffer, 0); Assert.assertEquals(values[2], ((Long) agg.get(buffer, 0)).longValue()); - Assert.assertEquals(values[2], agg.getLong(buffer, 0)); - Assert.assertEquals((float) values[2], agg.getFloat(buffer, 0), 0.0001); + Assert.assertEquals(values[2], agg.get(buffer, 0)); } @Test diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/any/DoubleAnyAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/any/DoubleAnyAggregationTest.java index 8866cebaa47c..ce1b222b6343 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/any/DoubleAnyAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/any/DoubleAnyAggregationTest.java @@ -93,8 +93,7 @@ public void testDoubleAnyBufferAggregator() Double result = (Double) agg.get(buffer, 0); Assert.assertEquals(doubles[0], result, 0.0001); - Assert.assertEquals((long) doubles[0], agg.getLong(buffer, 0)); - Assert.assertEquals(doubles[0], agg.getDouble(buffer, 0), 0.0001); + Assert.assertEquals(doubles[0], (double) agg.get(buffer, 0), 0.0001); } @Test @@ -151,8 +150,7 @@ public void testDoubleAnyCombiningBufferAggregator() Double result = (Double) agg.get(buffer, 0); Assert.assertEquals(objects[0], result, 0.0001); - Assert.assertEquals(objects[0].longValue(), agg.getLong(buffer, 0)); - Assert.assertEquals(objects[0], agg.getDouble(buffer, 0), 0.0001); + Assert.assertEquals(objects[0], (double) agg.get(buffer, 0), 0.0001); } @Test diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/any/FloatAnyAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/any/FloatAnyAggregationTest.java index d04713d26330..87faa2e176c9 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/any/FloatAnyAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/any/FloatAnyAggregationTest.java @@ -93,8 +93,7 @@ public void testFloatAnyBufferAggregator() Float result = (Float) agg.get(buffer, 0); Assert.assertEquals(floats[0], result, 0.0001); - Assert.assertEquals((long) floats[0], agg.getLong(buffer, 0)); - Assert.assertEquals(floats[0], agg.getFloat(buffer, 0), 0.0001); + Assert.assertEquals(floats[0], (float) agg.get(buffer, 0), 0.0001); } @Test @@ -151,8 +150,7 @@ public void testFloatAnyCombiningBufferAggregator() Float result = (Float) agg.get(buffer, 0); Assert.assertEquals(objects[0], result, 0.0001); - Assert.assertEquals(objects[0].longValue(), agg.getLong(buffer, 0)); - Assert.assertEquals(objects[0], agg.getFloat(buffer, 0), 0.0001); + Assert.assertEquals(objects[0], (float) agg.get(buffer, 0), 0.0001); } @Test diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/any/LongAnyAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/any/LongAnyAggregationTest.java index 89cb8ec8cfa9..a240f33603e6 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/any/LongAnyAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/any/LongAnyAggregationTest.java @@ -94,8 +94,8 @@ public void testLongAnyBufferAggregator() Long result = (Long) agg.get(buffer, 0); Assert.assertEquals(longs[0], result, 0.0001); - Assert.assertEquals((long) longs[0], agg.getLong(buffer, 0)); - Assert.assertEquals(longs[0], agg.getLong(buffer, 0), 0.0001); + Assert.assertEquals((long) longs[0], agg.get(buffer, 0)); + Assert.assertEquals(longs[0], (long) agg.get(buffer, 0), 0.0001); } @Test @@ -152,8 +152,8 @@ public void testLongAnyCombiningBufferAggregator() Long result = (Long) agg.get(buffer, 0); Assert.assertEquals(objects[0], result, 0.0001); - Assert.assertEquals(objects[0].longValue(), agg.getLong(buffer, 0)); - Assert.assertEquals(objects[0], agg.getLong(buffer, 0), 0.0001); + Assert.assertEquals(objects[0].longValue(), agg.get(buffer, 0)); + Assert.assertEquals(objects[0], (long) agg.get(buffer, 0), 0.0001); } @Test diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/constant/LongConstantBufferAggregatorTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/constant/LongConstantBufferAggregatorTest.java index 0608fca85b74..e9a22e12af4a 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/constant/LongConstantBufferAggregatorTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/constant/LongConstantBufferAggregatorTest.java @@ -46,20 +46,14 @@ public void setup() @Test public void testLong() { - Assert.assertEquals(randomVal, aggregator.getLong(byteBuffer, 0)); + Assert.assertEquals(randomVal, aggregator.get(byteBuffer, 0)); } @Test public void testAggregate() { aggregator.aggregate(byteBuffer, 0); - Assert.assertEquals(randomVal, aggregator.getLong(byteBuffer, 0)); - } - - @Test - public void testFloat() - { - Assert.assertEquals((float) randomVal, aggregator.getFloat(byteBuffer, 0), 0.0001f); + Assert.assertEquals(randomVal, aggregator.get(byteBuffer, 0)); } @Test diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/first/DoubleFirstAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/first/DoubleFirstAggregationTest.java index c85b6b11c779..a331dfa0564d 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/first/DoubleFirstAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/first/DoubleFirstAggregationTest.java @@ -108,8 +108,6 @@ public void testDoubleFirstBufferAggregator() Assert.assertEquals(times[1], result.lhs.longValue()); Assert.assertEquals(doubleValues[1], result.rhs, 0.0001); - Assert.assertEquals((long) doubleValues[1], agg.getLong(buffer, 0)); - Assert.assertEquals(doubleValues[1], agg.getDouble(buffer, 0), 0.0001); } @Test @@ -183,8 +181,6 @@ public void testDoubleFirstCombiningBufferAggregator() Assert.assertEquals(expected.lhs, result.lhs); Assert.assertEquals(expected.rhs, result.rhs, 0.0001); - Assert.assertEquals(expected.rhs.longValue(), agg.getLong(buffer, 0)); - Assert.assertEquals(expected.rhs, agg.getDouble(buffer, 0), 0.0001); } diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/first/FloatFirstAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/first/FloatFirstAggregationTest.java index b9b37f83f8f7..2e7c7f6898a4 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/first/FloatFirstAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/first/FloatFirstAggregationTest.java @@ -108,8 +108,6 @@ public void testDoubleFirstBufferAggregator() Assert.assertEquals(times[1], result.lhs.longValue()); Assert.assertEquals(floats[1], result.rhs, 0.0001); - Assert.assertEquals((long) floats[1], agg.getLong(buffer, 0)); - Assert.assertEquals(floats[1], agg.getFloat(buffer, 0), 0.0001); } @Test @@ -170,8 +168,6 @@ public void testDoubleFirstCombiningBufferAggregator() Assert.assertEquals(expected.lhs, result.lhs); Assert.assertEquals(expected.rhs, result.rhs, 0.0001); - Assert.assertEquals(expected.rhs.longValue(), agg.getLong(buffer, 0)); - Assert.assertEquals(expected.rhs, agg.getFloat(buffer, 0), 0.0001); } diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/first/LongFirstAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/first/LongFirstAggregationTest.java index 7fe925656e2b..85a74bccf737 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/first/LongFirstAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/first/LongFirstAggregationTest.java @@ -107,8 +107,6 @@ public void testLongFirstBufferAggregator() Assert.assertEquals(times[3], result.lhs.longValue()); Assert.assertEquals(longValues[3], result.rhs.longValue()); - Assert.assertEquals(longValues[3], agg.getLong(buffer, 0)); - Assert.assertEquals(longValues[3], agg.getFloat(buffer, 0), 0.0001); } @Test @@ -169,8 +167,6 @@ public void testLongFirstCombiningBufferAggregator() Assert.assertEquals(expected.lhs, result.lhs); Assert.assertEquals(expected.rhs, result.rhs); - Assert.assertEquals(expected.rhs.longValue(), agg.getLong(buffer, 0)); - Assert.assertEquals(expected.rhs, agg.getFloat(buffer, 0), 0.0001); } diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/last/DoubleLastAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/last/DoubleLastAggregationTest.java index 847194f12760..91e500166cd6 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/last/DoubleLastAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/last/DoubleLastAggregationTest.java @@ -108,8 +108,6 @@ public void testDoubleLastBufferAggregator() Assert.assertEquals(times[0], result.lhs.longValue()); Assert.assertEquals(doubles[0], result.rhs, 0.0001); - Assert.assertEquals((long) doubles[0], agg.getLong(buffer, 0)); - Assert.assertEquals(doubles[0], agg.getDouble(buffer, 0), 0.0001); } @Test @@ -170,8 +168,6 @@ public void testDoubleLastCombiningBufferAggregator() Assert.assertEquals(expected.lhs, result.lhs); Assert.assertEquals(expected.rhs, result.rhs, 0.0001); - Assert.assertEquals(expected.rhs.longValue(), agg.getLong(buffer, 0)); - Assert.assertEquals(expected.rhs, agg.getDouble(buffer, 0), 0.0001); } diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/last/FloatLastAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/last/FloatLastAggregationTest.java index 86b6a998b8e3..c9e0efdf69df 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/last/FloatLastAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/last/FloatLastAggregationTest.java @@ -108,8 +108,6 @@ public void testDoubleLastBufferAggregator() Assert.assertEquals(times[0], result.lhs.longValue()); Assert.assertEquals(floats[0], result.rhs, 0.0001); - Assert.assertEquals((long) floats[0], agg.getLong(buffer, 0)); - Assert.assertEquals(floats[0], agg.getFloat(buffer, 0), 0.0001); } @Test @@ -170,8 +168,6 @@ public void testDoubleLastCombiningBufferAggregator() Assert.assertEquals(expected.lhs, result.lhs); Assert.assertEquals(expected.rhs, result.rhs, 0.0001); - Assert.assertEquals(expected.rhs.longValue(), agg.getLong(buffer, 0)); - Assert.assertEquals(expected.rhs, agg.getFloat(buffer, 0), 0.0001); } diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/last/LongLastAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/last/LongLastAggregationTest.java index a9b2fadcc90e..487c7ed546f7 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/last/LongLastAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/last/LongLastAggregationTest.java @@ -107,8 +107,6 @@ public void testLongLastBufferAggregator() Assert.assertEquals(times[2], result.lhs.longValue()); Assert.assertEquals(longValues[2], result.rhs.longValue()); - Assert.assertEquals(longValues[2], agg.getLong(buffer, 0)); - Assert.assertEquals(longValues[2], agg.getFloat(buffer, 0), 1); } @Test @@ -169,8 +167,6 @@ public void testLongLastCombiningBufferAggregator() Assert.assertEquals(expected.lhs, result.lhs); Assert.assertEquals(expected.rhs, result.rhs); - Assert.assertEquals(expected.rhs.longValue(), agg.getLong(buffer, 0)); - Assert.assertEquals(expected.rhs, agg.getFloat(buffer, 0), 1); } diff --git a/processing/src/test/java/org/apache/druid/query/groupby/GroupByLimitPushDownInsufficientBufferTest.java b/processing/src/test/java/org/apache/druid/query/groupby/GroupByLimitPushDownInsufficientBufferTest.java index f22701d8f69f..36e6b2c0272a 100644 --- a/processing/src/test/java/org/apache/druid/query/groupby/GroupByLimitPushDownInsufficientBufferTest.java +++ b/processing/src/test/java/org/apache/druid/query/groupby/GroupByLimitPushDownInsufficientBufferTest.java @@ -357,8 +357,7 @@ public String getFormatString() new GroupByStrategyV1( configSupplier, new GroupByQueryEngine(configSupplier, bufferPool), - NOOP_QUERYWATCHER, - bufferPool + NOOP_QUERYWATCHER ), new GroupByStrategyV2( druidProcessingConfig, @@ -375,8 +374,7 @@ public String getFormatString() new GroupByStrategyV1( configSupplier, new GroupByQueryEngine(configSupplier, bufferPool), - NOOP_QUERYWATCHER, - bufferPool + NOOP_QUERYWATCHER ), new GroupByStrategyV2( tooSmallDruidProcessingConfig, diff --git a/processing/src/test/java/org/apache/druid/query/groupby/GroupByLimitPushDownMultiNodeMergeTest.java b/processing/src/test/java/org/apache/druid/query/groupby/GroupByLimitPushDownMultiNodeMergeTest.java index 3c62e11ea1a9..8e4872e546d9 100644 --- a/processing/src/test/java/org/apache/druid/query/groupby/GroupByLimitPushDownMultiNodeMergeTest.java +++ b/processing/src/test/java/org/apache/druid/query/groupby/GroupByLimitPushDownMultiNodeMergeTest.java @@ -388,8 +388,7 @@ public String getFormatString() new GroupByStrategyV1( configSupplier, new GroupByQueryEngine(configSupplier, bufferPool), - NOOP_QUERYWATCHER, - bufferPool + NOOP_QUERYWATCHER ), new GroupByStrategyV2( druidProcessingConfig, @@ -406,8 +405,7 @@ public String getFormatString() new GroupByStrategyV1( configSupplier, new GroupByQueryEngine(configSupplier, bufferPool), - NOOP_QUERYWATCHER, - bufferPool + NOOP_QUERYWATCHER ), new GroupByStrategyV2( druidProcessingConfig, diff --git a/processing/src/test/java/org/apache/druid/query/groupby/GroupByMultiSegmentTest.java b/processing/src/test/java/org/apache/druid/query/groupby/GroupByMultiSegmentTest.java index 7b73cc149b59..d7ab55ade4cd 100644 --- a/processing/src/test/java/org/apache/druid/query/groupby/GroupByMultiSegmentTest.java +++ b/processing/src/test/java/org/apache/druid/query/groupby/GroupByMultiSegmentTest.java @@ -268,8 +268,7 @@ public String getFormatString() new GroupByStrategyV1( configSupplier, new GroupByQueryEngine(configSupplier, bufferPool), - NOOP_QUERYWATCHER, - bufferPool + NOOP_QUERYWATCHER ), new GroupByStrategyV2( druidProcessingConfig, diff --git a/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryMergeBufferTest.java b/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryMergeBufferTest.java index faed09af603e..3e9a630a1724 100644 --- a/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryMergeBufferTest.java +++ b/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryMergeBufferTest.java @@ -132,8 +132,7 @@ private static GroupByQueryRunnerFactory makeQueryRunnerFactory( new GroupByStrategyV1( configSupplier, new GroupByQueryEngine(configSupplier, BUFFER_POOL), - QueryRunnerTestHelper.NOOP_QUERYWATCHER, - BUFFER_POOL + QueryRunnerTestHelper.NOOP_QUERYWATCHER ), new GroupByStrategyV2( PROCESSING_CONFIG, diff --git a/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerFailureTest.java b/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerFailureTest.java index f98785231f39..2dfe08e6ce33 100644 --- a/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerFailureTest.java +++ b/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerFailureTest.java @@ -102,8 +102,7 @@ private static GroupByQueryRunnerFactory makeQueryRunnerFactory( new GroupByStrategyV1( configSupplier, new GroupByQueryEngine(configSupplier, BUFFER_POOL), - QueryRunnerTestHelper.NOOP_QUERYWATCHER, - BUFFER_POOL + QueryRunnerTestHelper.NOOP_QUERYWATCHER ), new GroupByStrategyV2( DEFAULT_PROCESSING_CONFIG, diff --git a/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerTest.java b/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerTest.java index bc0f3b2ed7a7..2e657f46043a 100644 --- a/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerTest.java +++ b/processing/src/test/java/org/apache/druid/query/groupby/GroupByQueryRunnerTest.java @@ -390,8 +390,7 @@ public ByteBuffer get() new GroupByStrategyV1( configSupplier, new GroupByQueryEngine(configSupplier, bufferPool), - QueryRunnerTestHelper.NOOP_QUERYWATCHER, - bufferPool + QueryRunnerTestHelper.NOOP_QUERYWATCHER ), new GroupByStrategyV2( processingConfig, @@ -10897,7 +10896,7 @@ public void testTypeConversionWithMergingChainedExecutionRunner() (query1, future) -> { return; }, - ImmutableList.>of(runner, runner) + ImmutableList.of(runner, runner) ); QueryRunner mergingRunner = factory.mergeRunners(Execs.directExecutor(), ImmutableList.of(ceqr)); diff --git a/processing/src/test/java/org/apache/druid/query/groupby/NestedQueryPushDownTest.java b/processing/src/test/java/org/apache/druid/query/groupby/NestedQueryPushDownTest.java index 00b55ad5e2ff..ba1a34456028 100644 --- a/processing/src/test/java/org/apache/druid/query/groupby/NestedQueryPushDownTest.java +++ b/processing/src/test/java/org/apache/druid/query/groupby/NestedQueryPushDownTest.java @@ -315,8 +315,7 @@ public String getFormatString() new GroupByStrategyV1( configSupplier, new GroupByQueryEngine(configSupplier, bufferPool), - NOOP_QUERYWATCHER, - bufferPool + NOOP_QUERYWATCHER ), new GroupByStrategyV2( druidProcessingConfig, @@ -333,8 +332,7 @@ public String getFormatString() new GroupByStrategyV1( configSupplier, new GroupByQueryEngine(configSupplier, bufferPool), - NOOP_QUERYWATCHER, - bufferPool + NOOP_QUERYWATCHER ), new GroupByStrategyV2( druidProcessingConfig, From 0e3c8051256098612f786ceef72df816a007a93a Mon Sep 17 00:00:00 2001 From: Gian Merlino Date: Fri, 22 Oct 2021 13:38:23 -0700 Subject: [PATCH 3/5] Revert removal of getFloat, getLong, getDouble from BufferAggregator. --- .../ExpressionAggregationBenchmark.java | 18 +++++ .../DistinctCountBufferAggregator.java | 18 +++++ .../NoopDistinctCountBufferAggregator.java | 18 +++++ .../MomentSketchBuildBufferAggregator.java | 12 +++ .../MomentSketchMergeBufferAggregator.java | 18 +++++ .../TDigestSketchBufferAggregator.java | 12 +++ .../TimestampBufferAggregator.java | 18 +++++ .../TimestampMinMaxAggregatorTest.java | 2 +- .../hll/HllSketchBuildBufferAggregator.java | 12 +++ .../hll/HllSketchMergeBufferAggregator.java | 12 +++ .../DoublesSketchMergeBufferAggregator.java | 12 +++ .../theta/SketchBufferAggregator.java | 18 +++++ ...yOfDoublesSketchBuildBufferAggregator.java | 12 +++ ...yOfDoublesSketchMergeBufferAggregator.java | 12 +++ ...pArrayOfDoublesSketchBufferAggregator.java | 12 +++ .../bloom/BaseBloomFilterAggregator.java | 18 +++++ .../ApproximateHistogramBufferAggregator.java | 19 +++++ ...imateHistogramFoldingBufferAggregator.java | 18 +++++ ...FixedBucketsHistogramBufferAggregator.java | 18 +++++ .../variance/VarianceBufferAggregator.java | 18 +++++ .../query/aggregation/BufferAggregator.java | 77 +++++++++++++++++++ .../aggregation/CountBufferAggregator.java | 19 +++++ .../DelegatingBufferAggregator.java | 24 ++++++ .../aggregation/FilteredBufferAggregator.java | 24 ++++++ .../HistogramBufferAggregator.java | 18 +++++ .../JavaScriptBufferAggregator.java | 19 +++++ .../aggregation/NoopBufferAggregator.java | 18 +++++ .../NullableNumericBufferAggregator.java | 33 ++++++++ .../SimpleDoubleBufferAggregator.java | 18 +++++ .../SimpleFloatBufferAggregator.java | 18 +++++ .../SimpleLongBufferAggregator.java | 18 +++++ .../SuppressedAggregatorFactory.java | 24 ++++++ .../any/DoubleAnyBufferAggregator.java | 18 +++++ .../any/FloatAnyBufferAggregator.java | 19 +++++ .../any/LongAnyBufferAggregator.java | 18 +++++ .../any/StringAnyBufferAggregator.java | 18 +++++ .../CardinalityBufferAggregator.java | 19 +++++ .../LongConstantBufferAggregator.java | 12 +++ .../first/DoubleFirstBufferAggregator.java | 18 +++++ .../first/FloatFirstBufferAggregator.java | 18 +++++ .../first/LongFirstBufferAggregator.java | 18 +++++ .../first/StringFirstBufferAggregator.java | 18 +++++ .../HyperUniquesBufferAggregator.java | 19 +++++ .../last/DoubleLastBufferAggregator.java | 18 +++++ .../last/FloatLastBufferAggregator.java | 18 +++++ .../last/LongLastBufferAggregator.java | 18 +++++ .../last/StringLastBufferAggregator.java | 18 +++++ .../mean/DoubleMeanBufferAggregator.java | 18 +++++ .../aggregation/DoubleMaxAggregationTest.java | 2 + .../aggregation/DoubleMinAggregationTest.java | 2 + .../GroupingAggregatorFactoryTest.java | 2 +- .../aggregation/LongMaxAggregationTest.java | 3 +- .../aggregation/LongMinAggregationTest.java | 3 +- .../any/DoubleAnyAggregationTest.java | 6 +- .../any/FloatAnyAggregationTest.java | 6 +- .../any/LongAnyAggregationTest.java | 8 +- .../LongConstantBufferAggregatorTest.java | 10 ++- .../first/DoubleFirstAggregationTest.java | 4 + .../first/FloatFirstAggregationTest.java | 4 + .../first/LongFirstAggregationTest.java | 4 + .../last/DoubleLastAggregationTest.java | 4 + .../last/FloatLastAggregationTest.java | 4 + .../last/LongLastAggregationTest.java | 4 + 63 files changed, 944 insertions(+), 14 deletions(-) diff --git a/benchmarks/src/test/java/org/apache/druid/benchmark/ExpressionAggregationBenchmark.java b/benchmarks/src/test/java/org/apache/druid/benchmark/ExpressionAggregationBenchmark.java index 1a6f25d853f6..8afcea4a4c32 100644 --- a/benchmarks/src/test/java/org/apache/druid/benchmark/ExpressionAggregationBenchmark.java +++ b/benchmarks/src/test/java/org/apache/druid/benchmark/ExpressionAggregationBenchmark.java @@ -227,6 +227,24 @@ public Object get(final ByteBuffer buf, final int position) return buf.getDouble(position); } + @Override + public float getFloat(final ByteBuffer buf, final int position) + { + throw new UnsupportedOperationException(); + } + + @Override + public long getLong(final ByteBuffer buf, final int position) + { + throw new UnsupportedOperationException(); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException(); + } + @Override public void close() { diff --git a/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/DistinctCountBufferAggregator.java b/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/DistinctCountBufferAggregator.java index ef775eade102..0b1ebf556d60 100644 --- a/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/DistinctCountBufferAggregator.java +++ b/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/DistinctCountBufferAggregator.java @@ -76,6 +76,24 @@ public Object get(ByteBuffer buf, int position) return buf.getLong(position); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + return (float) buf.getLong(position); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + return buf.getLong(position); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return (double) buf.getLong(position); + } + @Override public void close() { diff --git a/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/NoopDistinctCountBufferAggregator.java b/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/NoopDistinctCountBufferAggregator.java index d48e97f3c3bd..1ac10183a99d 100644 --- a/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/NoopDistinctCountBufferAggregator.java +++ b/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/NoopDistinctCountBufferAggregator.java @@ -57,6 +57,24 @@ public Object get(ByteBuffer buf, int position) return 0L; } + @Override + public float getFloat(ByteBuffer buf, int position) + { + return (float) 0; + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + return (long) 0; + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return 0; + } + @Override public void close() { diff --git a/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchBuildBufferAggregator.java b/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchBuildBufferAggregator.java index 9cdd564f1c5b..79e88cc67ae8 100644 --- a/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchBuildBufferAggregator.java +++ b/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchBuildBufferAggregator.java @@ -78,6 +78,18 @@ public synchronized Object get(final ByteBuffer buffer, final int position) return MomentSketchWrapper.fromBytes(mutationBuffer); } + @Override + public float getFloat(final ByteBuffer buffer, final int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public long getLong(final ByteBuffer buffer, final int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + @Override public void close() { diff --git a/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchMergeBufferAggregator.java b/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchMergeBufferAggregator.java index 97839fdae15a..505d1ebed97d 100644 --- a/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchMergeBufferAggregator.java +++ b/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchMergeBufferAggregator.java @@ -79,6 +79,24 @@ public Object get(ByteBuffer buf, int position) return MomentSketchWrapper.fromBytes(mutationBuffer); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + @Override public void close() { diff --git a/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchBufferAggregator.java b/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchBufferAggregator.java index c9f7e2eb6f9c..be65896239c2 100644 --- a/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchBufferAggregator.java +++ b/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchBufferAggregator.java @@ -93,6 +93,18 @@ public Object get(final ByteBuffer buffer, final int position) return sketchCache.get(buffer).get(position); } + @Override + public float getFloat(final ByteBuffer buffer, final int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public long getLong(final ByteBuffer buffer, final int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + @Override public void close() { diff --git a/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampBufferAggregator.java b/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampBufferAggregator.java index 8cb4c1f3adc5..196f434720f4 100644 --- a/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampBufferAggregator.java +++ b/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampBufferAggregator.java @@ -67,6 +67,24 @@ public Object get(ByteBuffer buf, int position) return buf.getLong(position); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + return (float) buf.getLong(position); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + return buf.getLong(position); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return (double) buf.getLong(position); + } + @Override public void close() { diff --git a/extensions-contrib/time-min-max/src/test/java/org/apache/druid/query/aggregation/TimestampMinMaxAggregatorTest.java b/extensions-contrib/time-min-max/src/test/java/org/apache/druid/query/aggregation/TimestampMinMaxAggregatorTest.java index 45fa7e8c8c5c..4aa3476098a8 100644 --- a/extensions-contrib/time-min-max/src/test/java/org/apache/druid/query/aggregation/TimestampMinMaxAggregatorTest.java +++ b/extensions-contrib/time-min-max/src/test/java/org/apache/druid/query/aggregation/TimestampMinMaxAggregatorTest.java @@ -154,7 +154,7 @@ public void testBufferAggregator() aggregate(selector, aggregator, buffer, 0); } - Assert.assertEquals(expected, new Timestamp((long) aggregator.get(buffer, 0))); + Assert.assertEquals(expected, new Timestamp(aggregator.getLong(buffer, 0))); aggregator.init(buffer, 0); diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchBuildBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchBuildBufferAggregator.java index b945efb266bd..ab54215e52f2 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchBuildBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchBuildBufferAggregator.java @@ -75,6 +75,18 @@ public void close() helper.clear(); } + @Override + public float getFloat(final ByteBuffer buf, final int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public long getLong(final ByteBuffer buf, final int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + /** * In very rare cases sketches can exceed given memory, request on-heap memory and move there. * We need to identify such sketches and reuse the same objects as opposed to wrapping new memory regions. diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchMergeBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchMergeBufferAggregator.java index 63b741f266ea..13323f110eef 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchMergeBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchMergeBufferAggregator.java @@ -83,6 +83,18 @@ public void close() // nothing to close } + @Override + public float getFloat(final ByteBuffer buf, final int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public long getLong(final ByteBuffer buf, final int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + @Override public void inspectRuntimeShape(RuntimeShapeInspector inspector) { diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchMergeBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchMergeBufferAggregator.java index e98f9f4d6822..c788adc24352 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchMergeBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchMergeBufferAggregator.java @@ -59,6 +59,18 @@ public Object get(final ByteBuffer buffer, final int position) return helper.getSketchAtPosition(buffer, position).getResult(); } + @Override + public float getFloat(final ByteBuffer buffer, final int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public long getLong(final ByteBuffer buffer, final int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + @Override public synchronized void close() { diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchBufferAggregator.java index ffa66c17ee5c..34aae3f36e18 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchBufferAggregator.java @@ -64,6 +64,24 @@ public Object get(ByteBuffer buf, int position) return helper.get(buf, position); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + @Override public void close() { diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchBuildBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchBuildBufferAggregator.java index 2dd12c5ae74e..3e8122eeb753 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchBuildBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchBuildBufferAggregator.java @@ -110,6 +110,18 @@ public Object get(final ByteBuffer buf, final int position) return sketch.compact(); } + @Override + public float getFloat(final ByteBuffer buf, final int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public long getLong(final ByteBuffer buf, final int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + @Override public void close() { diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchMergeBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchMergeBufferAggregator.java index 89c56cd2f6ed..a2daba10f313 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchMergeBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchMergeBufferAggregator.java @@ -98,6 +98,18 @@ public Object get(final ByteBuffer buf, final int position) return union.getResult(); } + @Override + public float getFloat(final ByteBuffer buf, final int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public long getLong(final ByteBuffer buf, final int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + @Override public void close() { diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/NoopArrayOfDoublesSketchBufferAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/NoopArrayOfDoublesSketchBufferAggregator.java index 667c5b908299..cbb38957528d 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/NoopArrayOfDoublesSketchBufferAggregator.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/NoopArrayOfDoublesSketchBufferAggregator.java @@ -52,6 +52,18 @@ public Object get(final ByteBuffer buf, final int position) return emptySketch; } + @Override + public float getFloat(final ByteBuffer buf, final int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + + @Override + public long getLong(final ByteBuffer buf, final int position) + { + throw new UnsupportedOperationException("Not implemented"); + } + @Override public void close() { diff --git a/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/aggregation/bloom/BaseBloomFilterAggregator.java b/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/aggregation/bloom/BaseBloomFilterAggregator.java index 10dd2513ed76..8bc4bd323adc 100644 --- a/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/aggregation/bloom/BaseBloomFilterAggregator.java +++ b/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/aggregation/bloom/BaseBloomFilterAggregator.java @@ -110,6 +110,24 @@ public Object get(ByteBuffer buf, int position) return resultCopy; } + @Override + public float getFloat(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("BloomFilterAggregator does not support getFloat()"); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("BloomFilterAggregator does not support getLong()"); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("BloomFilterAggregator does not support getDouble()"); + } + @Override public void aggregate() { diff --git a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramBufferAggregator.java b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramBufferAggregator.java index c324aa3b7f74..b661e17d4dbb 100644 --- a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramBufferAggregator.java +++ b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramBufferAggregator.java @@ -57,6 +57,25 @@ public Object get(ByteBuffer buf, int position) return innerAggregator.get(buf, position); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("ApproximateHistogramBufferAggregator does not support getFloat()"); + } + + + @Override + public long getLong(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("ApproximateHistogramBufferAggregator does not support getLong()"); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("ApproximateHistogramBufferAggregator does not support getDouble()"); + } + @Override public void close() { diff --git a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramFoldingBufferAggregator.java b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramFoldingBufferAggregator.java index ada898d2c1c5..811e2bfb00f3 100644 --- a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramFoldingBufferAggregator.java +++ b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramFoldingBufferAggregator.java @@ -60,6 +60,24 @@ public Object get(ByteBuffer buf, int position) return innerAggregator.get(buf, position); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("ApproximateHistogramFoldingBufferAggregator does not support getFloat()"); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("ApproximateHistogramFoldingBufferAggregator does not support getLong()"); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("ApproximateHistogramFoldingBufferAggregator does not support getDouble()"); + } + @Override public void close() { diff --git a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogramBufferAggregator.java b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogramBufferAggregator.java index 18b846ac6969..1ecebb545774 100644 --- a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogramBufferAggregator.java +++ b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogramBufferAggregator.java @@ -66,6 +66,24 @@ public Object get(ByteBuffer buf, int position) return innerAggregator.get(buf, position); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("FixedBucketsHistogramBufferAggregator does not support getFloat()"); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("FixedBucketsHistogramBufferAggregator does not support getLong()"); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("FixedBucketsHistogramBufferAggregator does not support getDouble()"); + } + @Override public void close() { diff --git a/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceBufferAggregator.java b/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceBufferAggregator.java index 2738fc893a41..d8c4d5df5633 100644 --- a/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceBufferAggregator.java +++ b/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceBufferAggregator.java @@ -50,6 +50,24 @@ public VarianceAggregatorCollector get(final ByteBuffer buf, final int position) return getVarianceCollector(buf, position); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("VarianceBufferAggregator does not support getFloat()"); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("VarianceBufferAggregator does not support getFloat()"); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("VarianceBufferAggregator does not support getDouble()"); + } + @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java index 79023af724cd..6f1e53bac420 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java @@ -96,6 +96,64 @@ public interface BufferAggregator extends HotLoopCallee @Nullable Object get(ByteBuffer buf, int position); + /** + * Returns the float representation of the given aggregate byte array + * + * Converts the given byte buffer representation into the intermediate aggregate value. + * + * Implementations must not change the position, limit or mark of the given buffer + * + * Implementations are only required to support this method if they are aggregations which + * have an {@link AggregatorFactory#getType()} ()} of {@link org.apache.druid.segment.column.ValueType#FLOAT}. + * If unimplemented, throwing an {@link UnsupportedOperationException} is common and recommended. + * + * @param buf byte buffer storing the byte array representation of the aggregate + * @param position offset within the byte buffer at which the aggregate value is stored + * @return the float representation of the aggregate + */ + float getFloat(ByteBuffer buf, int position); + + /** + * Returns the long representation of the given aggregate byte array + * + * Converts the given byte buffer representation into the intermediate aggregate value. + * + * Implementations must not change the position, limit or mark of the given buffer + * + * Implementations are only required to support this method if they are aggregations which + * have an {@link AggregatorFactory#getType()} of of {@link org.apache.druid.segment.column.ValueType#LONG}. + * If unimplemented, throwing an {@link UnsupportedOperationException} is common and recommended. + * + * @param buf byte buffer storing the byte array representation of the aggregate + * @param position offset within the byte buffer at which the aggregate value is stored + * @return the long representation of the aggregate + */ + long getLong(ByteBuffer buf, int position); + + /** + * Returns the double representation of the given aggregate byte array + * + * Converts the given byte buffer representation into the intermediate aggregate value. + * + * Implementations must not change the position, limit or mark of the given buffer + * + * Implementations are only required to support this method if they are aggregations which + * have an {@link AggregatorFactory#getType()} of of {@link org.apache.druid.segment.column.ValueType#DOUBLE}. + * If unimplemented, throwing an {@link UnsupportedOperationException} is common and recommended. + * + * The default implementation casts {@link BufferAggregator#getFloat(ByteBuffer, int)} to double. + * This default method is added to enable smooth backward compatibility, please re-implement it if your aggregators + * work with numeric double columns. + * + * @param buf byte buffer storing the byte array representation of the aggregate + * @param position offset within the byte buffer at which the aggregate value is stored + * @return the double representation of the aggregate + */ + default double getDouble(ByteBuffer buf, int position) + { + return (double) getFloat(buf, position); + } + /** * Release any resources used by the aggregator */ @@ -135,4 +193,23 @@ default void inspectRuntimeShape(RuntimeShapeInspector inspector) default void relocate(int oldPosition, int newPosition, ByteBuffer oldBuffer, ByteBuffer newBuffer) { } + + /** + * returns true if aggregator's output type is primitive long/double/float and aggregated value is null, + * but when aggregated output type is Object, this method always returns false, + * and users are advised to check nullability for the object returned by {@link BufferAggregator#get(ByteBuffer, int)} + * method. + * The default implementation always return false to enable smooth backward compatibility, + * re-implement if your aggregator is nullable. + * + * @param buf byte buffer storing the byte array representation of the aggregate + * @param position offset within the byte buffer at which the aggregate value is stored + * + * @return true if the aggregated value is primitive long/double/float and aggregated value is null otherwise false. + */ + default boolean isNull(ByteBuffer buf, int position) + { + return false; + } + } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/CountBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/CountBufferAggregator.java index a14f9e610758..7f30fa0006e3 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/CountBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/CountBufferAggregator.java @@ -46,6 +46,25 @@ public Object get(ByteBuffer buf, int position) return buf.getLong(position); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + return buf.getLong(position); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return buf.getLong(position); + } + + + @Override + public long getLong(ByteBuffer buf, int position) + { + return buf.getLong(position); + } + @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/DelegatingBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/DelegatingBufferAggregator.java index e366c511950d..9b1aa8086b2b 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/DelegatingBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/DelegatingBufferAggregator.java @@ -51,6 +51,24 @@ public Object get(ByteBuffer buf, int position) return delegate.get(buf, position); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + return delegate.getFloat(buf, position); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + return delegate.getLong(buf, position); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return delegate.getDouble(buf, position); + } + @Override public void close() { @@ -68,4 +86,10 @@ public void relocate(int oldPosition, int newPosition, ByteBuffer oldBuffer, Byt { delegate.relocate(oldPosition, newPosition, oldBuffer, newBuffer); } + + @Override + public boolean isNull(ByteBuffer buf, int position) + { + return delegate.isNull(buf, position); + } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/FilteredBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/FilteredBufferAggregator.java index 5ac6c9bb4202..47e8498189e0 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/FilteredBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/FilteredBufferAggregator.java @@ -55,6 +55,24 @@ public Object get(ByteBuffer buf, int position) return delegate.get(buf, position); } + @Override + public long getLong(ByteBuffer buf, int position) + { + return delegate.getLong(buf, position); + } + + @Override + public float getFloat(ByteBuffer buf, int position) + { + return delegate.getFloat(buf, position); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return delegate.getDouble(buf, position); + } + @Override public void relocate( final int oldPosition, @@ -66,6 +84,12 @@ public void relocate( delegate.relocate(oldPosition, newPosition, oldBuffer, newBuffer); } + @Override + public boolean isNull(final ByteBuffer buf, final int position) + { + return delegate.isNull(buf, position); + } + @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/HistogramBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/HistogramBufferAggregator.java index d0ad00e20ba0..6226936d5e81 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/HistogramBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/HistogramBufferAggregator.java @@ -87,6 +87,24 @@ public Object get(ByteBuffer buf, int position) return new Histogram(breaks, bins, min, max); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("HistogramBufferAggregator does not support getFloat()"); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("HistogramBufferAggregator does not support getLong()"); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("HistogramBufferAggregator does not support getDouble"); + } + @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/JavaScriptBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/JavaScriptBufferAggregator.java index 4436de880444..c320a8d6406a 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/JavaScriptBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/JavaScriptBufferAggregator.java @@ -57,6 +57,25 @@ public Object get(ByteBuffer buf, int position) return buf.getDouble(position); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + return (float) buf.getDouble(position); + } + + + @Override + public long getLong(ByteBuffer buf, int position) + { + return (long) buf.getDouble(position); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return buf.getDouble(position); + } + @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/NoopBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/NoopBufferAggregator.java index 932ac11e7338..95774203d03e 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/NoopBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/NoopBufferAggregator.java @@ -52,6 +52,24 @@ public Object get(ByteBuffer buf, int position) return null; } + @Override + public float getFloat(ByteBuffer buf, int position) + { + return 0; + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + return 0L; + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return 0d; + } + @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/NullableNumericBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/NullableNumericBufferAggregator.java index f0744f4ed04d..4a8ce6f792a4 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/NullableNumericBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/NullableNumericBufferAggregator.java @@ -86,6 +86,39 @@ public Object get(ByteBuffer buf, int position) return delegate.get(buf, position + Byte.BYTES); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + if (buf.get(position) == NullHandling.IS_NULL_BYTE) { + throw new IllegalStateException("Cannot return float for Null Value"); + } + return delegate.getFloat(buf, position + Byte.BYTES); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + if (buf.get(position) == NullHandling.IS_NULL_BYTE) { + throw new IllegalStateException("Cannot return long for Null Value"); + } + return delegate.getLong(buf, position + Byte.BYTES); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + if (buf.get(position) == NullHandling.IS_NULL_BYTE) { + throw new IllegalStateException("Cannot return double for Null Value"); + } + return delegate.getDouble(buf, position + Byte.BYTES); + } + + @Override + public boolean isNull(ByteBuffer buf, int position) + { + return buf.get(position) == NullHandling.IS_NULL_BYTE || delegate.isNull(buf, position + Byte.BYTES); + } + @Override public void relocate(int oldPosition, int newPosition, ByteBuffer oldBuffer, ByteBuffer newBuffer) { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/SimpleDoubleBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/SimpleDoubleBufferAggregator.java index 47291c4e7dd3..01f3901ba6fd 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/SimpleDoubleBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/SimpleDoubleBufferAggregator.java @@ -62,6 +62,24 @@ public final Object get(ByteBuffer buf, int position) return buf.getDouble(position); } + @Override + public final float getFloat(ByteBuffer buf, int position) + { + return (float) buf.getDouble(position); + } + + @Override + public final long getLong(ByteBuffer buf, int position) + { + return (long) buf.getDouble(position); + } + + @Override + public double getDouble(ByteBuffer buffer, int position) + { + return buffer.getDouble(position); + } + @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/SimpleFloatBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/SimpleFloatBufferAggregator.java index 2c45352c7896..42338936c8de 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/SimpleFloatBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/SimpleFloatBufferAggregator.java @@ -49,6 +49,24 @@ public final Object get(ByteBuffer buf, int position) return buf.getFloat(position); } + @Override + public final float getFloat(ByteBuffer buf, int position) + { + return buf.getFloat(position); + } + + @Override + public final long getLong(ByteBuffer buf, int position) + { + return (long) buf.getFloat(position); + } + + @Override + public double getDouble(ByteBuffer buffer, int position) + { + return (double) buffer.getFloat(position); + } + @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/SimpleLongBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/SimpleLongBufferAggregator.java index bc54b299d67a..d10ba175e4be 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/SimpleLongBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/SimpleLongBufferAggregator.java @@ -39,6 +39,24 @@ public Object get(ByteBuffer buf, int position) return buf.getLong(position); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + return (float) buf.getLong(position); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + return buf.getLong(position); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return (double) buf.getLong(position); + } + @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/SuppressedAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/SuppressedAggregatorFactory.java index 56f274c8ec9b..19650012b4bf 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/SuppressedAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/SuppressedAggregatorFactory.java @@ -325,6 +325,24 @@ public Object get(ByteBuffer buf, int position) return delegate.get(buf, position); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + return delegate.getFloat(buf, position); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + return delegate.getLong(buf, position); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return delegate.getDouble(buf, position); + } + @Override public void close() { @@ -343,6 +361,12 @@ public void relocate(int oldPosition, int newPosition, ByteBuffer oldBuffer, Byt delegate.relocate(oldPosition, newPosition, oldBuffer, newBuffer); } + @Override + public boolean isNull(ByteBuffer buf, int position) + { + return delegate.isNull(buf, position); + } + @Override public boolean equals(Object o) { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/any/DoubleAnyBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/any/DoubleAnyBufferAggregator.java index 45d5a796cc02..6737cd694d45 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/any/DoubleAnyBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/any/DoubleAnyBufferAggregator.java @@ -52,4 +52,22 @@ public Object get(ByteBuffer buf, int position) final boolean isNull = isValueNull(buf, position); return isNull ? null : buf.getDouble(position + FOUND_VALUE_OFFSET); } + + @Override + public float getFloat(ByteBuffer buf, int position) + { + return (float) buf.getDouble(position + FOUND_VALUE_OFFSET); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + return (long) buf.getDouble(position + FOUND_VALUE_OFFSET); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return buf.getDouble(position + FOUND_VALUE_OFFSET); + } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/any/FloatAnyBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/any/FloatAnyBufferAggregator.java index 73f0e1fc0219..b924a7a3252d 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/any/FloatAnyBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/any/FloatAnyBufferAggregator.java @@ -53,4 +53,23 @@ public Object get(ByteBuffer buf, int position) final boolean isNull = isValueNull(buf, position); return isNull ? null : buf.getFloat(position + FOUND_VALUE_OFFSET); } + + @Override + public float getFloat(ByteBuffer buf, int position) + { + return buf.getFloat(position + FOUND_VALUE_OFFSET); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + return (long) buf.getFloat(position + FOUND_VALUE_OFFSET); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return (double) buf.getFloat(position + FOUND_VALUE_OFFSET); + } + } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/any/LongAnyBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/any/LongAnyBufferAggregator.java index 5b80c7e04e6a..91c1fbe03206 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/any/LongAnyBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/any/LongAnyBufferAggregator.java @@ -52,4 +52,22 @@ public Object get(ByteBuffer buf, int position) final boolean isNull = isValueNull(buf, position); return isNull ? null : buf.getLong(position + FOUND_VALUE_OFFSET); } + + @Override + public float getFloat(ByteBuffer buf, int position) + { + return (float) buf.getLong(position + FOUND_VALUE_OFFSET); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return (double) buf.getLong(position + FOUND_VALUE_OFFSET); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + return buf.getLong(position + FOUND_VALUE_OFFSET); + } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/any/StringAnyBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/any/StringAnyBufferAggregator.java index 1a66b16c2902..32bb3153fa2b 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/any/StringAnyBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/any/StringAnyBufferAggregator.java @@ -80,6 +80,24 @@ public Object get(ByteBuffer buf, int position) } } + @Override + public float getFloat(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("StringAnyBufferAggregator does not support getFloat()"); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("StringAnyBufferAggregator does not support getLong()"); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("StringAnyBufferAggregator does not support getDouble()"); + } + @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/cardinality/CardinalityBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/cardinality/CardinalityBufferAggregator.java index d72e545bfac6..0e3d698de551 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/cardinality/CardinalityBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/cardinality/CardinalityBufferAggregator.java @@ -79,6 +79,25 @@ public Object get(ByteBuffer buf, int position) return HyperUniquesBufferAggregator.doGet(buf, position); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("CardinalityBufferAggregator does not support getFloat()"); + } + + + @Override + public long getLong(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("CardinalityBufferAggregator does not support getLong()"); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("CardinalityBufferAggregators does not support getDouble()"); + } + @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/constant/LongConstantBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/constant/LongConstantBufferAggregator.java index eed822831924..1ddf11b57d7b 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/constant/LongConstantBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/constant/LongConstantBufferAggregator.java @@ -54,6 +54,18 @@ public Object get(ByteBuffer buf, int position) return value; } + @Override + public float getFloat(ByteBuffer buf, int position) + { + return (float) value; + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + return value; + } + @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/first/DoubleFirstBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/first/DoubleFirstBufferAggregator.java index 08b3925cb2ca..dabade475369 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/first/DoubleFirstBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/first/DoubleFirstBufferAggregator.java @@ -53,4 +53,22 @@ public Object get(ByteBuffer buf, int position) final boolean rhsNull = isValueNull(buf, position); return new SerializablePair<>(buf.getLong(position), rhsNull ? null : buf.getDouble(position + VALUE_OFFSET)); } + + @Override + public float getFloat(ByteBuffer buf, int position) + { + return (float) buf.getDouble(position + VALUE_OFFSET); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + return (long) buf.getDouble(position + VALUE_OFFSET); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return buf.getDouble(position + VALUE_OFFSET); + } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/first/FloatFirstBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/first/FloatFirstBufferAggregator.java index 62659393c4ea..cf7d272b0085 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/first/FloatFirstBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/first/FloatFirstBufferAggregator.java @@ -53,4 +53,22 @@ public Object get(ByteBuffer buf, int position) final boolean rhsNull = isValueNull(buf, position); return new SerializablePair<>(buf.getLong(position), rhsNull ? null : buf.getFloat(position + VALUE_OFFSET)); } + + @Override + public float getFloat(ByteBuffer buf, int position) + { + return buf.getFloat(position + VALUE_OFFSET); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + return (long) buf.getFloat(position + VALUE_OFFSET); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return buf.getFloat(position + VALUE_OFFSET); + } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/first/LongFirstBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/first/LongFirstBufferAggregator.java index a50fe5c854d6..582cda160153 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/first/LongFirstBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/first/LongFirstBufferAggregator.java @@ -49,4 +49,22 @@ public Object get(ByteBuffer buf, int position) final boolean rhsNull = isValueNull(buf, position); return new SerializablePair<>(buf.getLong(position), rhsNull ? null : buf.getLong(position + VALUE_OFFSET)); } + + @Override + public float getFloat(ByteBuffer buf, int position) + { + return (float) buf.getLong(position + VALUE_OFFSET); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + return buf.getLong(position + VALUE_OFFSET); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return (double) buf.getLong(position + VALUE_OFFSET); + } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/first/StringFirstBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/first/StringFirstBufferAggregator.java index 24751ff451d9..d84793e997a9 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/first/StringFirstBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/first/StringFirstBufferAggregator.java @@ -105,6 +105,24 @@ public Object get(ByteBuffer buf, int position) return StringFirstLastUtils.readPair(buf, position); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("StringFirstAggregator does not support getFloat()"); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("StringFirstAggregator does not support getLong()"); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("StringFirstAggregator does not support getDouble()"); + } + @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniquesBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniquesBufferAggregator.java index 2457bdd98cd4..3eba440aee62 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniquesBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniquesBufferAggregator.java @@ -93,6 +93,25 @@ public Object get(ByteBuffer buf, int position) return doGet(buf, position); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("HyperUniquesBufferAggregator does not support getFloat()"); + } + + + @Override + public long getLong(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("HyperUniquesBufferAggregator does not support getLong()"); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("HyperUniquesBufferAggregator does not support getDouble()"); + } + @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/last/DoubleLastBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/last/DoubleLastBufferAggregator.java index 5614fc51966a..8acddce53a83 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/last/DoubleLastBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/last/DoubleLastBufferAggregator.java @@ -53,4 +53,22 @@ public Object get(ByteBuffer buf, int position) final boolean rhsNull = isValueNull(buf, position); return new SerializablePair<>(buf.getLong(position), rhsNull ? null : buf.getDouble(position + VALUE_OFFSET)); } + + @Override + public float getFloat(ByteBuffer buf, int position) + { + return (float) buf.getDouble(position + VALUE_OFFSET); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + return (long) buf.getDouble(position + VALUE_OFFSET); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return buf.getDouble(position + VALUE_OFFSET); + } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/last/FloatLastBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/last/FloatLastBufferAggregator.java index bdc6a8dfe616..95ad6fe5c5ee 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/last/FloatLastBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/last/FloatLastBufferAggregator.java @@ -53,4 +53,22 @@ public Object get(ByteBuffer buf, int position) final boolean rhsNull = isValueNull(buf, position); return new SerializablePair<>(buf.getLong(position), rhsNull ? null : buf.getFloat(position + VALUE_OFFSET)); } + + @Override + public float getFloat(ByteBuffer buf, int position) + { + return buf.getFloat(position + VALUE_OFFSET); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + return (long) buf.getFloat(position + VALUE_OFFSET); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return buf.getFloat(position + VALUE_OFFSET); + } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/last/LongLastBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/last/LongLastBufferAggregator.java index 39d5efde9f80..981ba3e2f665 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/last/LongLastBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/last/LongLastBufferAggregator.java @@ -49,4 +49,22 @@ public Object get(ByteBuffer buf, int position) boolean rhsNull = isValueNull(buf, position); return new SerializablePair<>(buf.getLong(position), rhsNull ? null : buf.getLong(position + VALUE_OFFSET)); } + + @Override + public float getFloat(ByteBuffer buf, int position) + { + return (float) buf.getLong(position + VALUE_OFFSET); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + return buf.getLong(position + VALUE_OFFSET); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + return buf.getLong(position + VALUE_OFFSET); + } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastBufferAggregator.java index 73ecb2729bd9..9da985235472 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastBufferAggregator.java @@ -106,6 +106,24 @@ public Object get(ByteBuffer buf, int position) return StringFirstLastUtils.readPair(buf, position); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("StringFirstAggregator does not support getFloat()"); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("StringFirstAggregator does not support getLong()"); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("StringFirstAggregator does not support getDouble()"); + } + @Override public void close() { diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/mean/DoubleMeanBufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/mean/DoubleMeanBufferAggregator.java index 3571ab227308..5ff7f81a734a 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/mean/DoubleMeanBufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/mean/DoubleMeanBufferAggregator.java @@ -69,6 +69,24 @@ public Object get(ByteBuffer buf, int position) return DoubleMeanHolder.get(buf, position); } + @Override + public float getFloat(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("not supported"); + } + + @Override + public long getLong(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("not supported"); + } + + @Override + public double getDouble(ByteBuffer buf, int position) + { + throw new UnsupportedOperationException("not supported"); + } + @Override public void close() { diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/DoubleMaxAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/DoubleMaxAggregationTest.java index ab23a09c43da..e0dc85a4450d 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/DoubleMaxAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/DoubleMaxAggregationTest.java @@ -107,6 +107,8 @@ public void testDoubleMaxBufferAggregator() aggregate(selector, agg, buffer, 0); Assert.assertEquals(values[2], ((Double) agg.get(buffer, 0)).doubleValue(), 0.0001); + Assert.assertEquals((long) values[2], agg.getLong(buffer, 0)); + Assert.assertEquals(values[2], agg.getFloat(buffer, 0), 0.0001); } @Test diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/DoubleMinAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/DoubleMinAggregationTest.java index 219704ee152b..5b4041b84225 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/DoubleMinAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/DoubleMinAggregationTest.java @@ -108,6 +108,8 @@ public void testDoubleMinBufferAggregator() aggregate(selector, agg, buffer, 0); Assert.assertEquals(values[2], ((Double) agg.get(buffer, 0)).doubleValue(), 0.0001); + Assert.assertEquals((long) values[2], agg.getLong(buffer, 0)); + Assert.assertEquals(values[2], agg.getFloat(buffer, 0), 0.0001); } @Test diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/GroupingAggregatorFactoryTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/GroupingAggregatorFactoryTest.java index 2faec5473a43..0117bf1e82a5 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/GroupingAggregatorFactoryTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/GroupingAggregatorFactoryTest.java @@ -76,7 +76,7 @@ public void testNewBufferAggregator() GroupingAggregatorFactory factory = makeFactory(new String[]{"a", "b"}, new String[]{"a"}); BufferAggregator aggregator = factory.factorizeBuffered(metricFactory); Assert.assertEquals(LongConstantBufferAggregator.class, aggregator.getClass()); - Assert.assertEquals(1L, aggregator.get(null, 0)); + Assert.assertEquals(1, aggregator.getLong(null, 0)); } @Test diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/LongMaxAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/LongMaxAggregationTest.java index a8cb0d4f5112..d063658d76a2 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/LongMaxAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/LongMaxAggregationTest.java @@ -107,7 +107,8 @@ public void testLongMaxBufferAggregator() aggregate(selector, agg, buffer, 0); Assert.assertEquals(values[2], ((Long) agg.get(buffer, 0)).longValue()); - Assert.assertEquals(values[2], agg.get(buffer, 0)); + Assert.assertEquals(values[2], agg.getLong(buffer, 0)); + Assert.assertEquals((float) values[2], agg.getFloat(buffer, 0), 0.0001); } diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/LongMinAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/LongMinAggregationTest.java index be703c37e398..f651ce074b93 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/LongMinAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/LongMinAggregationTest.java @@ -106,7 +106,8 @@ public void testLongMinBufferAggregator() aggregate(selector, agg, buffer, 0); Assert.assertEquals(values[2], ((Long) agg.get(buffer, 0)).longValue()); - Assert.assertEquals(values[2], agg.get(buffer, 0)); + Assert.assertEquals(values[2], agg.getLong(buffer, 0)); + Assert.assertEquals((float) values[2], agg.getFloat(buffer, 0), 0.0001); } @Test diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/any/DoubleAnyAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/any/DoubleAnyAggregationTest.java index ce1b222b6343..8866cebaa47c 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/any/DoubleAnyAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/any/DoubleAnyAggregationTest.java @@ -93,7 +93,8 @@ public void testDoubleAnyBufferAggregator() Double result = (Double) agg.get(buffer, 0); Assert.assertEquals(doubles[0], result, 0.0001); - Assert.assertEquals(doubles[0], (double) agg.get(buffer, 0), 0.0001); + Assert.assertEquals((long) doubles[0], agg.getLong(buffer, 0)); + Assert.assertEquals(doubles[0], agg.getDouble(buffer, 0), 0.0001); } @Test @@ -150,7 +151,8 @@ public void testDoubleAnyCombiningBufferAggregator() Double result = (Double) agg.get(buffer, 0); Assert.assertEquals(objects[0], result, 0.0001); - Assert.assertEquals(objects[0], (double) agg.get(buffer, 0), 0.0001); + Assert.assertEquals(objects[0].longValue(), agg.getLong(buffer, 0)); + Assert.assertEquals(objects[0], agg.getDouble(buffer, 0), 0.0001); } @Test diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/any/FloatAnyAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/any/FloatAnyAggregationTest.java index 87faa2e176c9..d04713d26330 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/any/FloatAnyAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/any/FloatAnyAggregationTest.java @@ -93,7 +93,8 @@ public void testFloatAnyBufferAggregator() Float result = (Float) agg.get(buffer, 0); Assert.assertEquals(floats[0], result, 0.0001); - Assert.assertEquals(floats[0], (float) agg.get(buffer, 0), 0.0001); + Assert.assertEquals((long) floats[0], agg.getLong(buffer, 0)); + Assert.assertEquals(floats[0], agg.getFloat(buffer, 0), 0.0001); } @Test @@ -150,7 +151,8 @@ public void testFloatAnyCombiningBufferAggregator() Float result = (Float) agg.get(buffer, 0); Assert.assertEquals(objects[0], result, 0.0001); - Assert.assertEquals(objects[0], (float) agg.get(buffer, 0), 0.0001); + Assert.assertEquals(objects[0].longValue(), agg.getLong(buffer, 0)); + Assert.assertEquals(objects[0], agg.getFloat(buffer, 0), 0.0001); } @Test diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/any/LongAnyAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/any/LongAnyAggregationTest.java index a240f33603e6..89cb8ec8cfa9 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/any/LongAnyAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/any/LongAnyAggregationTest.java @@ -94,8 +94,8 @@ public void testLongAnyBufferAggregator() Long result = (Long) agg.get(buffer, 0); Assert.assertEquals(longs[0], result, 0.0001); - Assert.assertEquals((long) longs[0], agg.get(buffer, 0)); - Assert.assertEquals(longs[0], (long) agg.get(buffer, 0), 0.0001); + Assert.assertEquals((long) longs[0], agg.getLong(buffer, 0)); + Assert.assertEquals(longs[0], agg.getLong(buffer, 0), 0.0001); } @Test @@ -152,8 +152,8 @@ public void testLongAnyCombiningBufferAggregator() Long result = (Long) agg.get(buffer, 0); Assert.assertEquals(objects[0], result, 0.0001); - Assert.assertEquals(objects[0].longValue(), agg.get(buffer, 0)); - Assert.assertEquals(objects[0], (long) agg.get(buffer, 0), 0.0001); + Assert.assertEquals(objects[0].longValue(), agg.getLong(buffer, 0)); + Assert.assertEquals(objects[0], agg.getLong(buffer, 0), 0.0001); } @Test diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/constant/LongConstantBufferAggregatorTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/constant/LongConstantBufferAggregatorTest.java index e9a22e12af4a..0608fca85b74 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/constant/LongConstantBufferAggregatorTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/constant/LongConstantBufferAggregatorTest.java @@ -46,14 +46,20 @@ public void setup() @Test public void testLong() { - Assert.assertEquals(randomVal, aggregator.get(byteBuffer, 0)); + Assert.assertEquals(randomVal, aggregator.getLong(byteBuffer, 0)); } @Test public void testAggregate() { aggregator.aggregate(byteBuffer, 0); - Assert.assertEquals(randomVal, aggregator.get(byteBuffer, 0)); + Assert.assertEquals(randomVal, aggregator.getLong(byteBuffer, 0)); + } + + @Test + public void testFloat() + { + Assert.assertEquals((float) randomVal, aggregator.getFloat(byteBuffer, 0), 0.0001f); } @Test diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/first/DoubleFirstAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/first/DoubleFirstAggregationTest.java index a331dfa0564d..c85b6b11c779 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/first/DoubleFirstAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/first/DoubleFirstAggregationTest.java @@ -108,6 +108,8 @@ public void testDoubleFirstBufferAggregator() Assert.assertEquals(times[1], result.lhs.longValue()); Assert.assertEquals(doubleValues[1], result.rhs, 0.0001); + Assert.assertEquals((long) doubleValues[1], agg.getLong(buffer, 0)); + Assert.assertEquals(doubleValues[1], agg.getDouble(buffer, 0), 0.0001); } @Test @@ -181,6 +183,8 @@ public void testDoubleFirstCombiningBufferAggregator() Assert.assertEquals(expected.lhs, result.lhs); Assert.assertEquals(expected.rhs, result.rhs, 0.0001); + Assert.assertEquals(expected.rhs.longValue(), agg.getLong(buffer, 0)); + Assert.assertEquals(expected.rhs, agg.getDouble(buffer, 0), 0.0001); } diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/first/FloatFirstAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/first/FloatFirstAggregationTest.java index 2e7c7f6898a4..b9b37f83f8f7 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/first/FloatFirstAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/first/FloatFirstAggregationTest.java @@ -108,6 +108,8 @@ public void testDoubleFirstBufferAggregator() Assert.assertEquals(times[1], result.lhs.longValue()); Assert.assertEquals(floats[1], result.rhs, 0.0001); + Assert.assertEquals((long) floats[1], agg.getLong(buffer, 0)); + Assert.assertEquals(floats[1], agg.getFloat(buffer, 0), 0.0001); } @Test @@ -168,6 +170,8 @@ public void testDoubleFirstCombiningBufferAggregator() Assert.assertEquals(expected.lhs, result.lhs); Assert.assertEquals(expected.rhs, result.rhs, 0.0001); + Assert.assertEquals(expected.rhs.longValue(), agg.getLong(buffer, 0)); + Assert.assertEquals(expected.rhs, agg.getFloat(buffer, 0), 0.0001); } diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/first/LongFirstAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/first/LongFirstAggregationTest.java index 85a74bccf737..7fe925656e2b 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/first/LongFirstAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/first/LongFirstAggregationTest.java @@ -107,6 +107,8 @@ public void testLongFirstBufferAggregator() Assert.assertEquals(times[3], result.lhs.longValue()); Assert.assertEquals(longValues[3], result.rhs.longValue()); + Assert.assertEquals(longValues[3], agg.getLong(buffer, 0)); + Assert.assertEquals(longValues[3], agg.getFloat(buffer, 0), 0.0001); } @Test @@ -167,6 +169,8 @@ public void testLongFirstCombiningBufferAggregator() Assert.assertEquals(expected.lhs, result.lhs); Assert.assertEquals(expected.rhs, result.rhs); + Assert.assertEquals(expected.rhs.longValue(), agg.getLong(buffer, 0)); + Assert.assertEquals(expected.rhs, agg.getFloat(buffer, 0), 0.0001); } diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/last/DoubleLastAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/last/DoubleLastAggregationTest.java index 91e500166cd6..847194f12760 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/last/DoubleLastAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/last/DoubleLastAggregationTest.java @@ -108,6 +108,8 @@ public void testDoubleLastBufferAggregator() Assert.assertEquals(times[0], result.lhs.longValue()); Assert.assertEquals(doubles[0], result.rhs, 0.0001); + Assert.assertEquals((long) doubles[0], agg.getLong(buffer, 0)); + Assert.assertEquals(doubles[0], agg.getDouble(buffer, 0), 0.0001); } @Test @@ -168,6 +170,8 @@ public void testDoubleLastCombiningBufferAggregator() Assert.assertEquals(expected.lhs, result.lhs); Assert.assertEquals(expected.rhs, result.rhs, 0.0001); + Assert.assertEquals(expected.rhs.longValue(), agg.getLong(buffer, 0)); + Assert.assertEquals(expected.rhs, agg.getDouble(buffer, 0), 0.0001); } diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/last/FloatLastAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/last/FloatLastAggregationTest.java index c9e0efdf69df..86b6a998b8e3 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/last/FloatLastAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/last/FloatLastAggregationTest.java @@ -108,6 +108,8 @@ public void testDoubleLastBufferAggregator() Assert.assertEquals(times[0], result.lhs.longValue()); Assert.assertEquals(floats[0], result.rhs, 0.0001); + Assert.assertEquals((long) floats[0], agg.getLong(buffer, 0)); + Assert.assertEquals(floats[0], agg.getFloat(buffer, 0), 0.0001); } @Test @@ -168,6 +170,8 @@ public void testDoubleLastCombiningBufferAggregator() Assert.assertEquals(expected.lhs, result.lhs); Assert.assertEquals(expected.rhs, result.rhs, 0.0001); + Assert.assertEquals(expected.rhs.longValue(), agg.getLong(buffer, 0)); + Assert.assertEquals(expected.rhs, agg.getFloat(buffer, 0), 0.0001); } diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/last/LongLastAggregationTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/last/LongLastAggregationTest.java index 487c7ed546f7..a9b2fadcc90e 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/last/LongLastAggregationTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/last/LongLastAggregationTest.java @@ -107,6 +107,8 @@ public void testLongLastBufferAggregator() Assert.assertEquals(times[2], result.lhs.longValue()); Assert.assertEquals(longValues[2], result.rhs.longValue()); + Assert.assertEquals(longValues[2], agg.getLong(buffer, 0)); + Assert.assertEquals(longValues[2], agg.getFloat(buffer, 0), 1); } @Test @@ -167,6 +169,8 @@ public void testLongLastCombiningBufferAggregator() Assert.assertEquals(expected.lhs, result.lhs); Assert.assertEquals(expected.rhs, result.rhs); + Assert.assertEquals(expected.rhs.longValue(), agg.getLong(buffer, 0)); + Assert.assertEquals(expected.rhs, agg.getFloat(buffer, 0), 1); } From 687b0f7f9fdb9103f48b292946cbf0e992c52097 Mon Sep 17 00:00:00 2001 From: Gian Merlino Date: Fri, 22 Oct 2021 13:47:27 -0700 Subject: [PATCH 4/5] OAK-related warnings, suppressions. --- .../druid/query/aggregation/BufferAggregator.java | 3 +++ .../druid/segment/incremental/IncrementalIndex.java | 12 +++++++++--- .../segment/incremental/OnheapIncrementalIndex.java | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java index 6f1e53bac420..22b10b63fee8 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java @@ -111,6 +111,7 @@ public interface BufferAggregator extends HotLoopCallee * @param position offset within the byte buffer at which the aggregate value is stored * @return the float representation of the aggregate */ + @SuppressWarnings("unused") // Unused today, but may be used in the future by https://github.com/apache/druid/pull/10001 float getFloat(ByteBuffer buf, int position); /** @@ -128,6 +129,7 @@ public interface BufferAggregator extends HotLoopCallee * @param position offset within the byte buffer at which the aggregate value is stored * @return the long representation of the aggregate */ + @SuppressWarnings("unused") // Unused today, but may be used in the future by https://github.com/apache/druid/pull/10001 long getLong(ByteBuffer buf, int position); /** @@ -149,6 +151,7 @@ public interface BufferAggregator extends HotLoopCallee * @param position offset within the byte buffer at which the aggregate value is stored * @return the double representation of the aggregate */ + @SuppressWarnings("unused") // Unused today, but may be used in the future by https://github.com/apache/druid/pull/10001 default double getDouble(ByteBuffer buf, int position) { return (double) getFloat(buf, position); diff --git a/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java b/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java index dcb22a342a69..b2ee217d03a4 100644 --- a/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java +++ b/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java @@ -348,7 +348,13 @@ protected abstract AddToFactsResult addToFacts( protected abstract AggregatorType[] getAggsForRow(int rowOffset); - protected abstract Object getAggVal(AggregatorType agg); + /** + * Return the current aggregated value for a particular aggregator, row number, and aggregator number. + * + * Note: rowOffset and aggPosition are unused today, but may be used in the future by + * https://github.com/apache/druid/pull/10001. + */ + protected abstract Object getAggVal(AggregatorType agg, int rowOffset, int aggPosition); protected abstract float getMetricFloatValue(int rowOffset, int aggOffset); @@ -691,7 +697,7 @@ private long getMaxTimeMillis() return getFacts().getMaxTimeMillis(); } - @SuppressWarnings("unused") // Potentially useful for alternative IncrementalIndex implementations + @SuppressWarnings("unused") // Unused today, but may be used in the future by https://github.com/apache/druid/pull/10001 public AggregatorType[] getAggs() { return aggs; @@ -922,7 +928,7 @@ public Iterable iterableWithPostAggregations( AggregatorType[] aggs = getAggsForRow(rowOffset); for (int i = 0; i < aggs.length; ++i) { - theVals.put(metrics[i].getName(), getAggVal(aggs[i])); + theVals.put(metrics[i].getName(), getAggVal(aggs[i], rowOffset, i)); } if (postAggs != null) { diff --git a/processing/src/main/java/org/apache/druid/segment/incremental/OnheapIncrementalIndex.java b/processing/src/main/java/org/apache/druid/segment/incremental/OnheapIncrementalIndex.java index 230f5aec018f..a72124a21533 100644 --- a/processing/src/main/java/org/apache/druid/segment/incremental/OnheapIncrementalIndex.java +++ b/processing/src/main/java/org/apache/druid/segment/incremental/OnheapIncrementalIndex.java @@ -334,7 +334,7 @@ protected Aggregator[] getAggsForRow(int rowOffset) } @Override - protected Object getAggVal(Aggregator agg) + protected Object getAggVal(Aggregator agg, int rowOffset, int aggPosition) { return agg.get(); } From 12195a37ef575f78bec1ee99e0ba1235160548dc Mon Sep 17 00:00:00 2001 From: Gian Merlino Date: Sat, 23 Oct 2021 08:51:45 -0700 Subject: [PATCH 5/5] Unused item suppressions. --- .../apache/druid/query/aggregation/BufferAggregator.java | 1 + .../apache/druid/segment/incremental/IncrementalIndex.java | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java index 22b10b63fee8..c990184b8f63 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/BufferAggregator.java @@ -210,6 +210,7 @@ default void relocate(int oldPosition, int newPosition, ByteBuffer oldBuffer, By * * @return true if the aggregated value is primitive long/double/float and aggregated value is null otherwise false. */ + @SuppressWarnings("unused") // Unused today, but may be used in the future by https://github.com/apache/druid/pull/10001 default boolean isNull(ByteBuffer buf, int position) { return false; diff --git a/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java b/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java index b2ee217d03a4..00677b1b10cf 100644 --- a/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java +++ b/processing/src/main/java/org/apache/druid/segment/incremental/IncrementalIndex.java @@ -354,7 +354,11 @@ protected abstract AddToFactsResult addToFacts( * Note: rowOffset and aggPosition are unused today, but may be used in the future by * https://github.com/apache/druid/pull/10001. */ - protected abstract Object getAggVal(AggregatorType agg, int rowOffset, int aggPosition); + protected abstract Object getAggVal( + AggregatorType agg, + @SuppressWarnings("unused") int rowOffset, + @SuppressWarnings("unused") int aggPosition + ); protected abstract float getMetricFloatValue(int rowOffset, int aggOffset);