diff --git a/core/src/main/java/org/apache/druid/segment/column/ColumnType.java b/core/src/main/java/org/apache/druid/segment/column/ColumnType.java index 31b673ad2143..f39740ad1c6c 100644 --- a/core/src/main/java/org/apache/druid/segment/column/ColumnType.java +++ b/core/src/main/java/org/apache/druid/segment/column/ColumnType.java @@ -61,7 +61,7 @@ public static ColumnType ofArray(ColumnType elementType) { return ColumnTypeFactory.getInstance().ofArray(elementType); } - public static ColumnType ofComplex(String complexTypeName) + public static ColumnType ofComplex(@Nullable String complexTypeName) { return ColumnTypeFactory.getInstance().ofComplex(complexTypeName); } diff --git a/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/DistinctCountAggregatorFactory.java b/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/DistinctCountAggregatorFactory.java index 8e083d6eb1ac..7ab4a6be7d4c 100644 --- a/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/DistinctCountAggregatorFactory.java +++ b/extensions-contrib/distinctcount/src/main/java/org/apache/druid/query/aggregation/distinctcount/DistinctCountAggregatorFactory.java @@ -200,13 +200,13 @@ public byte[] getCacheKey() * and {@link DistinctCountAggregator#get} returns an integer for the number of set bits in the bitmap. */ @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return ColumnType.LONG; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return ColumnType.LONG; } diff --git a/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchAggregatorFactory.java b/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchAggregatorFactory.java index 01b694381038..b4dcda979e22 100644 --- a/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchAggregatorFactory.java +++ b/extensions-contrib/momentsketch/src/main/java/org/apache/druid/query/aggregation/momentsketch/aggregator/MomentSketchAggregatorFactory.java @@ -244,13 +244,13 @@ public List requiredFields() * actual type is {@link MomentSketchWrapper} */ @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return TYPE; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return TYPE; } diff --git a/extensions-contrib/moving-average-query/src/main/java/org/apache/druid/query/movingaverage/AveragerFactoryWrapper.java b/extensions-contrib/moving-average-query/src/main/java/org/apache/druid/query/movingaverage/AveragerFactoryWrapper.java index 5b7b2e8b8b7c..dff8aed7a84e 100644 --- a/extensions-contrib/moving-average-query/src/main/java/org/apache/druid/query/movingaverage/AveragerFactoryWrapper.java +++ b/extensions-contrib/moving-average-query/src/main/java/org/apache/druid/query/movingaverage/AveragerFactoryWrapper.java @@ -162,15 +162,15 @@ public byte[] getCacheKey() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return ColumnType.UNKNOWN_COMPLEX; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { - return getType(); + return getIntermediateType(); } /** diff --git a/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchAggregatorFactory.java b/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchAggregatorFactory.java index ed1020ecb238..a1067bd9f1fa 100644 --- a/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchAggregatorFactory.java +++ b/extensions-contrib/tdigestsketch/src/main/java/org/apache/druid/query/aggregation/tdigestsketch/TDigestSketchAggregatorFactory.java @@ -216,13 +216,13 @@ public List requiredFields() * actual type is {@link MergingDigest} */ @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return TYPE; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return TYPE; } diff --git a/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampAggregatorFactory.java b/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampAggregatorFactory.java index 99a7c4dadac5..8726b34037cb 100644 --- a/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampAggregatorFactory.java +++ b/extensions-contrib/time-min-max/src/main/java/org/apache/druid/query/aggregation/TimestampAggregatorFactory.java @@ -200,7 +200,7 @@ public byte[] getCacheKey() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return ColumnType.LONG; } @@ -209,7 +209,7 @@ public ColumnType getType() * actual type is {@link DateTime} */ @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return FINALIZED_TYPE; } diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchAggregatorFactory.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchAggregatorFactory.java index c71128e1f07b..6e01703f4acb 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchAggregatorFactory.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchAggregatorFactory.java @@ -170,7 +170,7 @@ public Class classOfObject() } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return round ? ColumnType.LONG : ColumnType.DOUBLE; } diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchBuildAggregatorFactory.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchBuildAggregatorFactory.java index ccb1f9209fa1..d42ca9a0260f 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchBuildAggregatorFactory.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchBuildAggregatorFactory.java @@ -56,7 +56,7 @@ public HllSketchBuildAggregatorFactory( } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return TYPE; } diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchMergeAggregatorFactory.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchMergeAggregatorFactory.java index e6b6fac2a340..818cbaad08dc 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchMergeAggregatorFactory.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchMergeAggregatorFactory.java @@ -77,7 +77,7 @@ public AggregatorFactory getMergingFactory(AggregatorFactory other) throws Aggre } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return TYPE; } diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchAggregatorFactory.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchAggregatorFactory.java index 2147cf051c86..4f7f4cdcd04d 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchAggregatorFactory.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/quantiles/DoublesSketchAggregatorFactory.java @@ -354,13 +354,13 @@ public Object finalizeComputation(@Nullable final Object object) * actual type is {@link DoublesSketch} */ @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return DoublesSketchModule.TYPE; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return ColumnType.LONG; } diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchMergeAggregatorFactory.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchMergeAggregatorFactory.java index 31375ccc79e2..c598f148ad36 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchMergeAggregatorFactory.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchMergeAggregatorFactory.java @@ -144,7 +144,7 @@ public Object finalizeComputation(@Nullable Object object) * actual type is {@link SketchHolder} */ @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return isInputThetaSketch ? SketchModule.MERGE_TYPE : SketchModule.BUILD_TYPE; } @@ -156,12 +156,12 @@ public ColumnType getType() * if {@link #shouldFinalize} is NOT set, type is {@link SketchHolder} */ @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { if (shouldFinalize && errorBoundsStdDev == null) { return ColumnType.DOUBLE; } - return getType(); + return getIntermediateType(); } @Override diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchAggregatorFactory.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchAggregatorFactory.java index 8add6686484a..86a6e48a3cb8 100644 --- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchAggregatorFactory.java +++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/tuple/ArrayOfDoublesSketchAggregatorFactory.java @@ -297,13 +297,13 @@ public Object finalizeComputation(@Nullable final Object object) * actual type is {@link ArrayOfDoublesSketch} */ @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return metricColumns == null ? ArrayOfDoublesSketchModule.MERGE_TYPE : ArrayOfDoublesSketchModule.BUILD_TYPE; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return ColumnType.DOUBLE; } diff --git a/extensions-core/datasketches/src/test/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchAggregatorFactoryTest.java b/extensions-core/datasketches/src/test/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchAggregatorFactoryTest.java index 3b9ea782c657..08ed792000a3 100644 --- a/extensions-core/datasketches/src/test/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchAggregatorFactoryTest.java +++ b/extensions-core/datasketches/src/test/java/org/apache/druid/query/aggregation/datasketches/hll/HllSketchAggregatorFactoryTest.java @@ -352,7 +352,7 @@ public BufferAggregator factorizeBuffered(ColumnSelectorFactory metricFactory) } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return new ColumnType(ValueType.COMPLEX, DUMMY_TYPE_NAME, null); } diff --git a/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/aggregation/bloom/BloomFilterAggregatorFactory.java b/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/aggregation/bloom/BloomFilterAggregatorFactory.java index 947fdfc05204..0ccf139e3872 100644 --- a/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/aggregation/bloom/BloomFilterAggregatorFactory.java +++ b/extensions-core/druid-bloom-filter/src/main/java/org/apache/druid/query/aggregation/bloom/BloomFilterAggregatorFactory.java @@ -190,13 +190,13 @@ public List requiredFields() * actual type is {@link ByteBuffer} containing {@link BloomKFilter} */ @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return TYPE; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return TYPE; } diff --git a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramAggregatorFactory.java b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramAggregatorFactory.java index 3524b2f32240..abd278cb28a1 100644 --- a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramAggregatorFactory.java +++ b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramAggregatorFactory.java @@ -327,7 +327,7 @@ public byte[] getCacheKey() * actual type is {@link ApproximateHistogram} */ @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return TYPE; } @@ -336,7 +336,7 @@ public ColumnType getType() * actual type is {@link ApproximateHistogram} if {@link #finalizeAsBase64Binary} is set, else {@link Histogram} */ @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return finalizeAsBase64Binary ? TYPE : HistogramAggregatorFactory.TYPE; } diff --git a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogramAggregatorFactory.java b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogramAggregatorFactory.java index 831a111b6791..37fcf051db82 100644 --- a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogramAggregatorFactory.java +++ b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/FixedBucketsHistogramAggregatorFactory.java @@ -282,7 +282,7 @@ public List requiredFields() * actual type is {@link FixedBucketsHistogram} */ @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return FixedBucketsHistogramAggregator.TYPE; } @@ -291,7 +291,7 @@ public ColumnType getType() * actual type is {@link FixedBucketsHistogram} if {@link #finalizeAsBase64Binary} is set */ @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return finalizeAsBase64Binary ? FixedBucketsHistogramAggregator.TYPE : ColumnType.STRING; } diff --git a/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorFactory.java b/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorFactory.java index 2f69100594a9..dcd420801d3d 100644 --- a/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorFactory.java +++ b/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorFactory.java @@ -100,13 +100,13 @@ public VarianceAggregatorFactory( * actual type is {@link VarianceAggregatorCollector} */ @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return TYPE; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return ColumnType.DOUBLE; } diff --git a/indexing-hadoop/src/main/java/org/apache/druid/indexer/InputRowSerde.java b/indexing-hadoop/src/main/java/org/apache/druid/indexer/InputRowSerde.java index cb2c2bb9778b..a19001a1812f 100644 --- a/indexing-hadoop/src/main/java/org/apache/druid/indexer/InputRowSerde.java +++ b/indexing-hadoop/src/main/java/org/apache/druid/indexer/InputRowSerde.java @@ -342,7 +342,7 @@ public static SerializeResult toBytes( parseExceptionMessages.add(e.getMessage()); } - final ColumnType type = aggFactory.getType(); + final ColumnType type = aggFactory.getIntermediateType(); if (agg.isNull()) { out.writeByte(NullHandling.IS_NULL_BYTE); @@ -473,7 +473,7 @@ public static InputRow fromBytes( for (int i = 0; i < metricSize; i++) { final String metric = readString(in); final AggregatorFactory agg = getAggregator(metric, aggs, i); - final ColumnType type = agg.getType(); + final ColumnType type = agg.getIntermediateType(); final byte metricNullability = in.readByte(); if (metricNullability == NullHandling.IS_NULL_BYTE) { @@ -487,7 +487,7 @@ public static InputRow fromBytes( } else if (type.is(ValueType.DOUBLE)) { event.put(metric, in.readDouble()); } else { - ComplexMetricSerde serde = getComplexMetricSerde(agg.getType().getComplexTypeName()); + ComplexMetricSerde serde = getComplexMetricSerde(agg.getIntermediateType().getComplexTypeName()); byte[] value = readBytes(in); event.put(metric, serde.fromBytes(value, 0, value.length)); } diff --git a/indexing-hadoop/src/test/java/org/apache/druid/indexer/InputRowSerdeTest.java b/indexing-hadoop/src/test/java/org/apache/druid/indexer/InputRowSerdeTest.java index 3bb8ff886831..b0060c6d2fd3 100644 --- a/indexing-hadoop/src/test/java/org/apache/druid/indexer/InputRowSerdeTest.java +++ b/indexing-hadoop/src/test/java/org/apache/druid/indexer/InputRowSerdeTest.java @@ -104,13 +104,13 @@ public void testSerde() final AggregatorFactory mockedAggregatorFactory = EasyMock.createMock(AggregatorFactory.class); EasyMock.expect(mockedAggregatorFactory.factorize(EasyMock.anyObject(ColumnSelectorFactory.class))).andReturn(mockedAggregator); - EasyMock.expect(mockedAggregatorFactory.getType()).andReturn(ColumnType.DOUBLE).anyTimes(); + EasyMock.expect(mockedAggregatorFactory.getIntermediateType()).andReturn(ColumnType.DOUBLE).anyTimes(); EasyMock.expect(mockedAggregatorFactory.getName()).andReturn("mockedAggregator").anyTimes(); final AggregatorFactory mockedNullAggregatorFactory = EasyMock.createMock(AggregatorFactory.class); EasyMock.expect(mockedNullAggregatorFactory.factorize(EasyMock.anyObject(ColumnSelectorFactory.class))).andReturn(mockedNullAggregator); EasyMock.expect(mockedNullAggregatorFactory.getName()).andReturn("mockedNullAggregator").anyTimes(); - EasyMock.expect(mockedNullAggregatorFactory.getType()).andReturn(ColumnType.DOUBLE).anyTimes(); + EasyMock.expect(mockedNullAggregatorFactory.getIntermediateType()).andReturn(ColumnType.DOUBLE).anyTimes(); EasyMock.replay(mockedAggregatorFactory, mockedNullAggregatorFactory); diff --git a/indexing-service/src/test/java/org/apache/druid/indexing/common/task/CompactionTaskTest.java b/indexing-service/src/test/java/org/apache/druid/indexing/common/task/CompactionTaskTest.java index e01f047b87cc..13de8cf09097 100644 --- a/indexing-service/src/test/java/org/apache/druid/indexing/common/task/CompactionTaskTest.java +++ b/indexing-service/src/test/java/org/apache/druid/indexing/common/task/CompactionTaskTest.java @@ -1984,7 +1984,7 @@ private static ColumnHolder createColumn(DimensionSchema dimensionSchema) private static ColumnHolder createColumn(AggregatorFactory aggregatorFactory) { - return new TestColumn(aggregatorFactory.getType()); + return new TestColumn(aggregatorFactory.getIntermediateType()); } private static class TestColumn implements ColumnHolder diff --git a/processing/src/main/java/org/apache/druid/query/DruidMetrics.java b/processing/src/main/java/org/apache/druid/query/DruidMetrics.java index 44338af0ad41..bb3519d84ef4 100644 --- a/processing/src/main/java/org/apache/druid/query/DruidMetrics.java +++ b/processing/src/main/java/org/apache/druid/query/DruidMetrics.java @@ -51,7 +51,7 @@ public static int findNumComplexAggs(List aggs) { int retVal = 0; for (AggregatorFactory agg : aggs) { - if (agg.getType().is(ValueType.COMPLEX)) { + if (agg.getIntermediateType().is(ValueType.COMPLEX)) { retVal++; } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/AggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/AggregatorFactory.java index ec28db70a8c5..f0e383740c8d 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/AggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/AggregatorFactory.java @@ -27,6 +27,7 @@ import org.apache.druid.segment.ColumnInspector; import org.apache.druid.segment.ColumnSelectorFactory; import org.apache.druid.segment.column.ColumnType; +import org.apache.druid.segment.column.ColumnTypeFactory; import org.apache.druid.segment.column.ValueType; import org.apache.druid.segment.vector.VectorColumnSelectorFactory; @@ -213,22 +214,73 @@ public AggregatorFactory getMergingFactory(AggregatorFactory other) throws Aggre public abstract List requiredFields(); /** - * Get the "intermediate" {@link ValueType} for this aggregator. This is the same as the type returned by + * Get the "intermediate" {@link ColumnType} for this aggregator. This is the same as the type returned by * {@link #deserialize} and the type accepted by {@link #combine}. However, it is *not* necessarily the same type * returned by {@link #finalizeComputation}. * * Refer to the {@link ColumnType} javadocs for details on the implications of choosing a type. */ - public abstract ColumnType getType(); + public ColumnType getIntermediateType() + { + final ValueType intermediateType = getType(); + if (intermediateType == ValueType.COMPLEX) { + return ColumnType.ofComplex(getComplexTypeName()); + } + return ColumnTypeFactory.ofValueType(intermediateType); + } /** - * Get the type for the final form of this this aggregator, i.e. the type of the value returned by + * Get the {@link ColumnType} for the final form of this aggregator, i.e. the type of the value returned by * {@link #finalizeComputation}. This may be the same as or different than the types expected in {@link #deserialize} * and {@link #combine}. * * Refer to the {@link ColumnType} javadocs for details on the implications of choosing a type. */ - public abstract ColumnType getFinalizedType(); + public ColumnType getResultType() + { + // this default 'fill' method is incomplete and can at best return 'unknown' complex + final ValueType finalized = getFinalizedType(); + if (finalized == ValueType.COMPLEX) { + return ColumnType.UNKNOWN_COMPLEX; + } + return ColumnTypeFactory.ofValueType(finalized); + } + + + /** + * This method is deprecated and will be removed soon. Use {@link #getIntermediateType()} instead. Do not call this + * method, it will likely produce incorrect results, it exists for backwards compatibility. + */ + @Deprecated + public ValueType getType() + { + throw new UnsupportedOperationException( + "Do not call or implement this method, it is deprecated, use 'getIntermediateType'" + ); + } + + /** + * This method is deprecated and will be removed soon. Use {@link #getResultType()} instead. Do not call this + * method, it will likely produce incorrect results, it exists for backwards compatibility. + */ + @Deprecated + public ValueType getFinalizedType() + { + throw new UnsupportedOperationException( + "Do not call or implement this method, it is deprecated, use 'getResultType'" + ); + } + + /** + * This method is deprecated and will be removed soon. Use {@link #getIntermediateType()} instead. Do not call this + * method, it will likely produce incorrect results, it exists for backwards compatibility. + */ + @Nullable + @Deprecated + public String getComplexTypeName() + { + return null; + } /** * Returns the maximum size that this aggregator will require in bytes for intermediate storage of results. 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 c990184b8f63..e9fdbeaa061b 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 @@ -104,7 +104,7 @@ public interface BufferAggregator extends HotLoopCallee * 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}. + * have an {@link AggregatorFactory#getIntermediateType()} ()} 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 @@ -122,7 +122,7 @@ public interface BufferAggregator extends HotLoopCallee * 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}. + * have an {@link AggregatorFactory#getIntermediateType()} 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 @@ -140,7 +140,7 @@ public interface BufferAggregator extends HotLoopCallee * 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}. + * have an {@link AggregatorFactory#getIntermediateType()} 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. diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/CountAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/CountAggregatorFactory.java index 4702efeaba5b..566adedb520c 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/CountAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/CountAggregatorFactory.java @@ -136,13 +136,13 @@ public byte[] getCacheKey() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return ColumnType.LONG; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return ColumnType.LONG; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregatorFactory.java index 4c80a53aa1c0..5ae55e5d069d 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregatorFactory.java @@ -395,7 +395,7 @@ public List getRequiredColumns() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { if (fields == null) { return ExpressionType.toColumnType(initialCombineValue.get().type()); @@ -404,7 +404,7 @@ public ColumnType getType() } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { Expr finalizeExpr = finalizeExpression.get(); ExprEval initialVal = initialCombineValue.get(); @@ -423,7 +423,7 @@ public int getMaxIntermediateSize() { // numeric expressions are either longs or doubles, with strings or arrays max size is unknown // for numeric arguments, the first 2 bytes are used for expression type byte and is_null byte - return getType().isNumeric() ? 2 + Long.BYTES : maxSizeBytes.getBytesInInt(); + return getIntermediateType().isNumeric() ? 2 + Long.BYTES : maxSizeBytes.getBytesInInt(); } @Override diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/FilteredAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/FilteredAggregatorFactory.java index 17b4841c58da..d08b0649d313 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/FilteredAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/FilteredAggregatorFactory.java @@ -187,15 +187,15 @@ public byte[] getCacheKey() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { - return delegate.getType(); + return delegate.getIntermediateType(); } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { - return delegate.getFinalizedType(); + return delegate.getResultType(); } @Override diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/GroupingAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/GroupingAggregatorFactory.java index 08a6a800a7ff..793fe913d327 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/GroupingAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/GroupingAggregatorFactory.java @@ -207,13 +207,13 @@ public List requiredFields() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return ColumnType.LONG; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return ColumnType.LONG; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/HistogramAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/HistogramAggregatorFactory.java index cb919543c958..5d3a12f3e819 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/HistogramAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/HistogramAggregatorFactory.java @@ -209,7 +209,7 @@ public byte[] getCacheKey() * actual type is {@link Histogram} */ @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return TYPE; } @@ -218,7 +218,7 @@ public ColumnType getType() * actual type is {@link HistogramVisual} */ @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return TYPE_VISUAL; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/JavaScriptAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/JavaScriptAggregatorFactory.java index 4f889eb42fc7..00bcefd8ab1c 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/JavaScriptAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/JavaScriptAggregatorFactory.java @@ -268,13 +268,13 @@ public byte[] getCacheKey() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return ColumnType.FLOAT; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return ColumnType.FLOAT; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/NullableNumericAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/NullableNumericAggregatorFactory.java index 63f9e0dce236..c9928f828f7f 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/NullableNumericAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/NullableNumericAggregatorFactory.java @@ -148,8 +148,8 @@ protected VectorAggregator factorizeVector( } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { - return getType(); + return getIntermediateType(); } } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/SimpleDoubleAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/SimpleDoubleAggregatorFactory.java index 6ff7a865aba6..5ab0c305be95 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/SimpleDoubleAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/SimpleDoubleAggregatorFactory.java @@ -150,7 +150,7 @@ public Object deserialize(Object object) } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { if (storeDoubleAsFloat) { return ColumnType.FLOAT; diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/SimpleFloatAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/SimpleFloatAggregatorFactory.java index c5e06fa0af9d..23fb08c7bf80 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/SimpleFloatAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/SimpleFloatAggregatorFactory.java @@ -131,7 +131,7 @@ public Object deserialize(Object object) } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return ColumnType.FLOAT; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/SimpleLongAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/SimpleLongAggregatorFactory.java index 27417d772fea..dcaffe95aa13 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/SimpleLongAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/SimpleLongAggregatorFactory.java @@ -134,7 +134,7 @@ public Object deserialize(Object object) @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return ColumnType.LONG; } 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 19650012b4bf..7702fd3a4508 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 @@ -139,15 +139,15 @@ public List requiredFields() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { - return delegate.getType(); + return delegate.getIntermediateType(); } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { - return delegate.getFinalizedType(); + return delegate.getResultType(); } @Override diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/any/DoubleAnyAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/any/DoubleAnyAggregatorFactory.java index 53ac5637291d..06103ac02f6b 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/any/DoubleAnyAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/any/DoubleAnyAggregatorFactory.java @@ -209,15 +209,15 @@ public byte[] getCacheKey() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return storeDoubleAsFloat ? ColumnType.FLOAT : ColumnType.DOUBLE; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { - return getType(); + return getIntermediateType(); } @Override diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/any/FloatAnyAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/any/FloatAnyAggregatorFactory.java index b06ee6cc3b8f..902447bba081 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/any/FloatAnyAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/any/FloatAnyAggregatorFactory.java @@ -207,13 +207,13 @@ public byte[] getCacheKey() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return ColumnType.FLOAT; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return ColumnType.FLOAT; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/any/LongAnyAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/any/LongAnyAggregatorFactory.java index 13da125ce7c5..d4e0ae606378 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/any/LongAnyAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/any/LongAnyAggregatorFactory.java @@ -205,13 +205,13 @@ public byte[] getCacheKey() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return ColumnType.LONG; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return ColumnType.LONG; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/any/StringAnyAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/any/StringAnyAggregatorFactory.java index dfa20831a8e3..6b90b082070e 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/any/StringAnyAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/any/StringAnyAggregatorFactory.java @@ -178,13 +178,13 @@ public byte[] getCacheKey() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return ColumnType.STRING; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return ColumnType.STRING; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/cardinality/CardinalityAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/cardinality/CardinalityAggregatorFactory.java index d02fc7d842ef..65040502d7bb 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/cardinality/CardinalityAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/cardinality/CardinalityAggregatorFactory.java @@ -321,13 +321,13 @@ public byte[] getCacheKey() * actual type is {@link HyperLogLogCollector} */ @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return TYPE; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return round ? ColumnType.LONG : ColumnType.DOUBLE; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/first/DoubleFirstAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/first/DoubleFirstAggregatorFactory.java index 102f7a864fe2..c39350af86a4 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/first/DoubleFirstAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/first/DoubleFirstAggregatorFactory.java @@ -274,14 +274,14 @@ public byte[] getCacheKey() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { // if we don't pretend to be a primitive, group by v1 gets sad and doesn't work because no complex type serde return storeDoubleAsFloat ? ColumnType.FLOAT : ColumnType.DOUBLE; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { // this is a copy of getComplexTypeName in the hopes that someday groupby v1 is no more and it will report it's actual // type of COMPLEX diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/first/FloatFirstAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/first/FloatFirstAggregatorFactory.java index 64b5c65497dc..e3afa302c617 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/first/FloatFirstAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/first/FloatFirstAggregatorFactory.java @@ -271,14 +271,14 @@ public byte[] getCacheKey() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { // if we don't pretend to be a primitive, group by v1 gets sad and doesn't work because no complex type serde return ColumnType.FLOAT; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return ColumnType.FLOAT; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/first/LongFirstAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/first/LongFirstAggregatorFactory.java index 90dd6f5025dd..3b384d210c65 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/first/LongFirstAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/first/LongFirstAggregatorFactory.java @@ -269,14 +269,14 @@ public byte[] getCacheKey() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { // if we don't pretend to be a primitive, group by v1 gets sad and doesn't work because no complex type serde return ColumnType.LONG; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return ColumnType.LONG; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/first/StringFirstAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/first/StringFirstAggregatorFactory.java index 51b04c82ca7b..9eb4e3401734 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/first/StringFirstAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/first/StringFirstAggregatorFactory.java @@ -263,13 +263,13 @@ public byte[] getCacheKey() * actual type is {@link SerializablePairLongString} */ @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return TYPE; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return ColumnType.STRING; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniqueFinalizingPostAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniqueFinalizingPostAggregator.java index b69f3fa65929..7003c607b323 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniqueFinalizingPostAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniqueFinalizingPostAggregator.java @@ -108,7 +108,7 @@ public String getName() public ColumnType getType(ColumnInspector signature) { return aggregatorFactory != null - ? aggregatorFactory.getFinalizedType() + ? aggregatorFactory.getResultType() : null; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniquesAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniquesAggregatorFactory.java index a37ec120f887..3e21ea9fc211 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniquesAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/hyperloglog/HyperUniquesAggregatorFactory.java @@ -267,13 +267,13 @@ public byte[] getCacheKey() * actual type is {@link HyperLogLogCollector} */ @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return isInputHyperUnique ? PRECOMPUTED_TYPE : TYPE; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return round ? ColumnType.LONG : ColumnType.DOUBLE; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/last/DoubleLastAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/last/DoubleLastAggregatorFactory.java index 1113290ce1c9..e0ace11a5477 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/last/DoubleLastAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/last/DoubleLastAggregatorFactory.java @@ -272,14 +272,14 @@ public byte[] getCacheKey() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { // if we don't pretend to be a primitive, group by v1 gets sad and doesn't work because no complex type serde return storeDoubleAsFloat ? ColumnType.FLOAT : ColumnType.DOUBLE; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { // this is a copy of getComplexTypeName in the hopes that someday groupby v1 is no more and it will report it's actual // type diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/last/FloatLastAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/last/FloatLastAggregatorFactory.java index 63e348ee2a15..26ec32836236 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/last/FloatLastAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/last/FloatLastAggregatorFactory.java @@ -269,14 +269,14 @@ public byte[] getCacheKey() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { // if we don't pretend to be a primitive, group by v1 gets sad and doesn't work because no complex type serde return ColumnType.FLOAT; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return ColumnType.FLOAT; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/last/LongLastAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/last/LongLastAggregatorFactory.java index 8809d9ab9b78..59b38ecfc47f 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/last/LongLastAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/last/LongLastAggregatorFactory.java @@ -267,14 +267,14 @@ public byte[] getCacheKey() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { // if we don't pretend to be a primitive, group by v1 gets sad and doesn't work because no complex type serde return ColumnType.LONG; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return ColumnType.LONG; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastAggregatorFactory.java index 4f337682443f..fcb284b90053 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/last/StringLastAggregatorFactory.java @@ -220,13 +220,13 @@ public byte[] getCacheKey() * actual type is {@link SerializablePairLongString} */ @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return TYPE; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return ColumnType.STRING; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/mean/DoubleMeanAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/mean/DoubleMeanAggregatorFactory.java index 72df213c801d..2507ae17af22 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/mean/DoubleMeanAggregatorFactory.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/mean/DoubleMeanAggregatorFactory.java @@ -83,13 +83,13 @@ public List requiredFields() * actual type is {@link DoubleMeanHolder} */ @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return TYPE; } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { return ColumnType.DOUBLE; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/post/FieldAccessPostAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/post/FieldAccessPostAggregator.java index 596fb017b421..003c775b3935 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/post/FieldAccessPostAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/post/FieldAccessPostAggregator.java @@ -109,7 +109,7 @@ public FieldAccessPostAggregator decorate(Map aggrega final ColumnType type; if (aggregators != null && aggregators.containsKey(fieldName)) { - type = aggregators.get(fieldName).getType(); + type = aggregators.get(fieldName).getIntermediateType(); } else { type = null; } diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/post/FinalizingFieldAccessPostAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/post/FinalizingFieldAccessPostAggregator.java index 967e0599c6ff..a269f680701b 100644 --- a/processing/src/main/java/org/apache/druid/query/aggregation/post/FinalizingFieldAccessPostAggregator.java +++ b/processing/src/main/java/org/apache/druid/query/aggregation/post/FinalizingFieldAccessPostAggregator.java @@ -123,7 +123,7 @@ public FinalizingFieldAccessPostAggregator decorate(final Map= 0) { final StringComparator stringComparator = orderSpec.getDimensionComparator(); - final ColumnType valueType = aggregatorFactories[aggIndex].getType(); + final ColumnType valueType = aggregatorFactories[aggIndex].getIntermediateType(); // Aggregators start after dimensions final int aggOffset = keySize + aggregatorOffsets[aggIndex]; diff --git a/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/RowBasedGrouperHelper.java b/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/RowBasedGrouperHelper.java index 1e4ef47205bb..1b50df77d9df 100644 --- a/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/RowBasedGrouperHelper.java +++ b/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/RowBasedGrouperHelper.java @@ -901,7 +901,7 @@ private Comparator> objectComparatorWithAggs() fieldIndices.add(aggIndex); needsReverses.add(needsReverse); aggFlags.add(true); - fieldValueTypes.add(aggregatorFactories[aggIndex].getType()); + fieldValueTypes.add(aggregatorFactories[aggIndex].getIntermediateType()); comparators.add(orderSpec.getDimensionComparator()); } } diff --git a/processing/src/main/java/org/apache/druid/segment/column/RowSignature.java b/processing/src/main/java/org/apache/druid/segment/column/RowSignature.java index 77794bb8c797..510ebe3043b9 100644 --- a/processing/src/main/java/org/apache/druid/segment/column/RowSignature.java +++ b/processing/src/main/java/org/apache/druid/segment/column/RowSignature.java @@ -267,18 +267,18 @@ public Builder addAggregators(final List aggregators, final F switch (finalization) { case YES: - type = aggregator.getFinalizedType(); + type = aggregator.getResultType(); break; case NO: - type = aggregator.getType(); + type = aggregator.getIntermediateType(); break; default: assert finalization == Finalization.UNKNOWN; - if (aggregator.getType().equals(aggregator.getFinalizedType())) { - type = aggregator.getType(); + if (aggregator.getIntermediateType().equals(aggregator.getResultType())) { + type = aggregator.getIntermediateType(); } else { // Use null if the type depends on whether the aggregator is finalized, since we don't know if // it will be finalized or not. 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 ec4aaaf53a97..e1cd27632080 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 @@ -128,7 +128,7 @@ class IncrementalIndexInputRowColumnSelectorFactory implements ColumnSelectorFac @Override public ColumnValueSelector makeColumnValueSelector(final String column) { - final boolean isComplexMetric = agg.getType().is(ValueType.COMPLEX); + final boolean isComplexMetric = agg.getIntermediateType().is(ValueType.COMPLEX); final ColumnValueSelector selector = baseSelectorFactory.makeColumnValueSelector(column); @@ -138,7 +138,7 @@ public ColumnValueSelector makeColumnValueSelector(final String column) // Wrap selector in a special one that uses ComplexMetricSerde to modify incoming objects. // For complex aggregators that read from multiple columns, we wrap all of them. This is not ideal but it // has worked so far. - final String complexTypeName = agg.getType().getComplexTypeName(); + final String complexTypeName = agg.getIntermediateType().getComplexTypeName(); final ComplexMetricSerde serde = ComplexMetrics.getSerdeForType(complexTypeName); if (serde == null) { throw new ISE("Don't know how to handle type[%s]", complexTypeName); @@ -939,7 +939,7 @@ public MetricDesc(int index, AggregatorFactory factory) this.index = index; this.name = factory.getName(); - ColumnType valueType = factory.getType(); + ColumnType valueType = factory.getIntermediateType(); if (valueType.isNumeric()) { capabilities = ColumnCapabilitiesImpl.createSimpleNumericColumnCapabilities(valueType); diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregatorFactoryTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregatorFactoryTest.java index cd7835d2a1fd..c8b9850c135c 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregatorFactoryTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/ExpressionLambdaAggregatorFactoryTest.java @@ -113,7 +113,7 @@ public void testInitialValueMustBeConstant() TestExprMacroTable.INSTANCE ); - agg.getType(); + agg.getIntermediateType(); } @Test @@ -137,7 +137,7 @@ public void testInitialCombineValueMustBeConstant() TestExprMacroTable.INSTANCE ); - agg.getFinalizedType(); + agg.getResultType(); } @Test @@ -222,9 +222,9 @@ public void testStringType() TestExprMacroTable.INSTANCE ); - Assert.assertEquals(ColumnType.STRING, agg.getType()); - Assert.assertEquals(ColumnType.STRING, agg.getCombiningFactory().getType()); - Assert.assertEquals(ColumnType.STRING, agg.getFinalizedType()); + Assert.assertEquals(ColumnType.STRING, agg.getIntermediateType()); + Assert.assertEquals(ColumnType.STRING, agg.getCombiningFactory().getIntermediateType()); + Assert.assertEquals(ColumnType.STRING, agg.getResultType()); } @Test @@ -245,9 +245,9 @@ public void testLongType() TestExprMacroTable.INSTANCE ); - Assert.assertEquals(ColumnType.LONG, agg.getType()); - Assert.assertEquals(ColumnType.LONG, agg.getCombiningFactory().getType()); - Assert.assertEquals(ColumnType.LONG, agg.getFinalizedType()); + Assert.assertEquals(ColumnType.LONG, agg.getIntermediateType()); + Assert.assertEquals(ColumnType.LONG, agg.getCombiningFactory().getIntermediateType()); + Assert.assertEquals(ColumnType.LONG, agg.getResultType()); } @Test @@ -268,9 +268,9 @@ public void testDoubleType() TestExprMacroTable.INSTANCE ); - Assert.assertEquals(ColumnType.DOUBLE, agg.getType()); - Assert.assertEquals(ColumnType.DOUBLE, agg.getCombiningFactory().getType()); - Assert.assertEquals(ColumnType.DOUBLE, agg.getFinalizedType()); + Assert.assertEquals(ColumnType.DOUBLE, agg.getIntermediateType()); + Assert.assertEquals(ColumnType.DOUBLE, agg.getCombiningFactory().getIntermediateType()); + Assert.assertEquals(ColumnType.DOUBLE, agg.getResultType()); } @Test @@ -291,9 +291,9 @@ public void testStringArrayType() TestExprMacroTable.INSTANCE ); - Assert.assertEquals(ColumnType.STRING, agg.getType()); - Assert.assertEquals(ColumnType.STRING_ARRAY, agg.getCombiningFactory().getType()); - Assert.assertEquals(ColumnType.STRING_ARRAY, agg.getFinalizedType()); + Assert.assertEquals(ColumnType.STRING, agg.getIntermediateType()); + Assert.assertEquals(ColumnType.STRING_ARRAY, agg.getCombiningFactory().getIntermediateType()); + Assert.assertEquals(ColumnType.STRING_ARRAY, agg.getResultType()); } @Test @@ -314,9 +314,9 @@ public void testStringArrayTypeFinalized() TestExprMacroTable.INSTANCE ); - Assert.assertEquals(ColumnType.STRING, agg.getType()); - Assert.assertEquals(ColumnType.STRING_ARRAY, agg.getCombiningFactory().getType()); - Assert.assertEquals(ColumnType.STRING, agg.getFinalizedType()); + Assert.assertEquals(ColumnType.STRING, agg.getIntermediateType()); + Assert.assertEquals(ColumnType.STRING_ARRAY, agg.getCombiningFactory().getIntermediateType()); + Assert.assertEquals(ColumnType.STRING, agg.getResultType()); } @Test @@ -337,9 +337,9 @@ public void testLongArrayType() TestExprMacroTable.INSTANCE ); - Assert.assertEquals(ColumnType.LONG, agg.getType()); - Assert.assertEquals(ColumnType.LONG_ARRAY, agg.getCombiningFactory().getType()); - Assert.assertEquals(ColumnType.LONG_ARRAY, agg.getFinalizedType()); + Assert.assertEquals(ColumnType.LONG, agg.getIntermediateType()); + Assert.assertEquals(ColumnType.LONG_ARRAY, agg.getCombiningFactory().getIntermediateType()); + Assert.assertEquals(ColumnType.LONG_ARRAY, agg.getResultType()); } @Test @@ -360,9 +360,9 @@ public void testLongArrayTypeFinalized() TestExprMacroTable.INSTANCE ); - Assert.assertEquals(ColumnType.LONG, agg.getType()); - Assert.assertEquals(ColumnType.LONG_ARRAY, agg.getCombiningFactory().getType()); - Assert.assertEquals(ColumnType.STRING, agg.getFinalizedType()); + Assert.assertEquals(ColumnType.LONG, agg.getIntermediateType()); + Assert.assertEquals(ColumnType.LONG_ARRAY, agg.getCombiningFactory().getIntermediateType()); + Assert.assertEquals(ColumnType.STRING, agg.getResultType()); } @Test @@ -383,9 +383,9 @@ public void testDoubleArrayType() TestExprMacroTable.INSTANCE ); - Assert.assertEquals(ColumnType.DOUBLE, agg.getType()); - Assert.assertEquals(ColumnType.DOUBLE_ARRAY, agg.getCombiningFactory().getType()); - Assert.assertEquals(ColumnType.DOUBLE_ARRAY, agg.getFinalizedType()); + Assert.assertEquals(ColumnType.DOUBLE, agg.getIntermediateType()); + Assert.assertEquals(ColumnType.DOUBLE_ARRAY, agg.getCombiningFactory().getIntermediateType()); + Assert.assertEquals(ColumnType.DOUBLE_ARRAY, agg.getResultType()); } @Test @@ -406,9 +406,9 @@ public void testDoubleArrayTypeFinalized() TestExprMacroTable.INSTANCE ); - Assert.assertEquals(ColumnType.DOUBLE, agg.getType()); - Assert.assertEquals(ColumnType.DOUBLE_ARRAY, agg.getCombiningFactory().getType()); - Assert.assertEquals(ColumnType.STRING, agg.getFinalizedType()); + Assert.assertEquals(ColumnType.DOUBLE, agg.getIntermediateType()); + Assert.assertEquals(ColumnType.DOUBLE_ARRAY, agg.getCombiningFactory().getIntermediateType()); + Assert.assertEquals(ColumnType.STRING, agg.getResultType()); } @Test @@ -429,9 +429,9 @@ public void testComplexType() TestExprMacroTable.INSTANCE ); - Assert.assertEquals(HyperUniquesAggregatorFactory.TYPE, agg.getType()); - Assert.assertEquals(HyperUniquesAggregatorFactory.TYPE, agg.getCombiningFactory().getType()); - Assert.assertEquals(HyperUniquesAggregatorFactory.TYPE, agg.getFinalizedType()); + Assert.assertEquals(HyperUniquesAggregatorFactory.TYPE, agg.getIntermediateType()); + Assert.assertEquals(HyperUniquesAggregatorFactory.TYPE, agg.getCombiningFactory().getIntermediateType()); + Assert.assertEquals(HyperUniquesAggregatorFactory.TYPE, agg.getResultType()); } @Test @@ -452,9 +452,9 @@ public void testComplexTypeFinalized() TestExprMacroTable.INSTANCE ); - Assert.assertEquals(HyperUniquesAggregatorFactory.TYPE, agg.getType()); - Assert.assertEquals(HyperUniquesAggregatorFactory.TYPE, agg.getCombiningFactory().getType()); - Assert.assertEquals(ColumnType.DOUBLE, agg.getFinalizedType()); + Assert.assertEquals(HyperUniquesAggregatorFactory.TYPE, agg.getIntermediateType()); + Assert.assertEquals(HyperUniquesAggregatorFactory.TYPE, agg.getCombiningFactory().getIntermediateType()); + Assert.assertEquals(ColumnType.DOUBLE, agg.getResultType()); } @Test diff --git a/processing/src/test/java/org/apache/druid/query/aggregation/post/FinalizingFieldAccessPostAggregatorTest.java b/processing/src/test/java/org/apache/druid/query/aggregation/post/FinalizingFieldAccessPostAggregatorTest.java index a60332208d58..637d6c129374 100644 --- a/processing/src/test/java/org/apache/druid/query/aggregation/post/FinalizingFieldAccessPostAggregatorTest.java +++ b/processing/src/test/java/org/apache/druid/query/aggregation/post/FinalizingFieldAccessPostAggregatorTest.java @@ -85,7 +85,7 @@ public void testComputedWithFinalizing() AggregatorFactory aggFactory = EasyMock.createMock(AggregatorFactory.class); EasyMock.expect(aggFactory.getComparator()).andReturn(Comparators.naturalNullsFirst()).once(); EasyMock.expect(aggFactory.finalizeComputation("test")).andReturn(3L).once(); - EasyMock.expect(aggFactory.getFinalizedType()).andReturn(ColumnType.LONG).once(); + EasyMock.expect(aggFactory.getResultType()).andReturn(ColumnType.LONG).once(); EasyMock.replay(aggFactory); FinalizingFieldAccessPostAggregator postAgg = buildDecorated( @@ -109,7 +109,7 @@ public void testComputedInArithmeticPostAggregator() AggregatorFactory aggFactory = EasyMock.createMock(AggregatorFactory.class); EasyMock.expect(aggFactory.getComparator()).andReturn(Comparators.naturalNullsFirst()).once(); EasyMock.expect(aggFactory.finalizeComputation("test")).andReturn(3L).once(); - EasyMock.expect(aggFactory.getFinalizedType()).andReturn(ColumnType.LONG).once(); + EasyMock.expect(aggFactory.getResultType()).andReturn(ColumnType.LONG).once(); EasyMock.replay(aggFactory); FinalizingFieldAccessPostAggregator postAgg = buildDecorated( @@ -149,7 +149,7 @@ public void testComparatorsWithFinalizing() .andReturn(Ordering.natural().nullsLast()) .times(1); - EasyMock.expect(aggFactory.getFinalizedType()).andReturn(ColumnType.LONG).once(); + EasyMock.expect(aggFactory.getResultType()).andReturn(ColumnType.LONG).once(); EasyMock.replay(aggFactory); FinalizingFieldAccessPostAggregator postAgg = buildDecorated( diff --git a/processing/src/test/java/org/apache/druid/query/metadata/SegmentAnalyzerTest.java b/processing/src/test/java/org/apache/druid/query/metadata/SegmentAnalyzerTest.java index 9e2781f466dc..4898bf196fac 100644 --- a/processing/src/test/java/org/apache/druid/query/metadata/SegmentAnalyzerTest.java +++ b/processing/src/test/java/org/apache/druid/query/metadata/SegmentAnalyzerTest.java @@ -445,7 +445,7 @@ public List requiredFields() } @Override - public ColumnType getType() + public ColumnType getIntermediateType() { return new ColumnType(ValueType.COMPLEX, TYPE, null); } @@ -463,9 +463,9 @@ public byte[] getCacheKey() } @Override - public ColumnType getFinalizedType() + public ColumnType getResultType() { - return getType(); + return getIntermediateType(); } }