diff --git a/codestyle/spotbugs-exclude.xml b/codestyle/spotbugs-exclude.xml
index 3ee23309bcf4..effec8d9d806 100644
--- a/codestyle/spotbugs-exclude.xml
+++ b/codestyle/spotbugs-exclude.xml
@@ -60,8 +60,6 @@
-
-
diff --git a/core/src/main/java/org/apache/druid/collections/SerializablePair.java b/core/src/main/java/org/apache/druid/collections/SerializablePair.java
index ce98933ee8dc..46b399551173 100644
--- a/core/src/main/java/org/apache/druid/collections/SerializablePair.java
+++ b/core/src/main/java/org/apache/druid/collections/SerializablePair.java
@@ -23,10 +23,12 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import org.apache.druid.java.util.common.Pair;
+import javax.annotation.Nullable;
+
public class SerializablePair extends Pair
{
@JsonCreator
- public SerializablePair(@JsonProperty("lhs") T1 lhs, @JsonProperty("rhs") T2 rhs)
+ public SerializablePair(@JsonProperty("lhs") T1 lhs, @JsonProperty("rhs") @Nullable T2 rhs)
{
super(lhs, rhs);
}
@@ -38,6 +40,7 @@ public T1 getLhs()
}
@JsonProperty
+ @Nullable
public T2 getRhs()
{
return rhs;
diff --git a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchEstimatePostAggregator.java b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchEstimatePostAggregator.java
index b52c74df4ba2..a725c64b48ba 100644
--- a/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchEstimatePostAggregator.java
+++ b/extensions-core/datasketches/src/main/java/org/apache/druid/query/aggregation/datasketches/theta/SketchEstimatePostAggregator.java
@@ -29,6 +29,8 @@
import org.apache.druid.query.aggregation.post.PostAggregatorIds;
import org.apache.druid.query.cache.CacheKeyBuilder;
+import javax.annotation.Nullable;
+
import java.util.Comparator;
import java.util.HashSet;
import java.util.Map;
@@ -39,13 +41,14 @@ public class SketchEstimatePostAggregator implements PostAggregator
private final String name;
private final PostAggregator field;
+ @Nullable
private final Integer errorBoundsStdDev;
@JsonCreator
public SketchEstimatePostAggregator(
@JsonProperty("name") String name,
@JsonProperty("field") PostAggregator field,
- @JsonProperty("errorBoundsStdDev") Integer errorBoundsStdDev
+ @JsonProperty("errorBoundsStdDev") @Nullable Integer errorBoundsStdDev
)
{
this.name = Preconditions.checkNotNull(name, "name is null");
@@ -56,9 +59,7 @@ public SketchEstimatePostAggregator(
@Override
public Set getDependentFields()
{
- Set dependentFields = new HashSet<>();
- dependentFields.addAll(field.getDependentFields());
- return dependentFields;
+ return new HashSet<>(field.getDependentFields());
}
@Override
@@ -111,6 +112,7 @@ public PostAggregator getField()
return field;
}
+ @Nullable
@JsonProperty
public Integer getErrorBoundsStdDev()
{
diff --git a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogram.java b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogram.java
index eeac3a53af6c..35ac0b45d2d9 100644
--- a/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogram.java
+++ b/extensions-core/histogram/src/main/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogram.java
@@ -23,6 +23,8 @@
import com.google.common.base.Preconditions;
import com.google.common.primitives.Floats;
+import javax.annotation.Nullable;
+
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Arrays;
@@ -470,11 +472,6 @@ protected void shiftLeft(int start, int end)
}
}
- public ApproximateHistogram fold(ApproximateHistogram h)
- {
- return fold(h, null, null, null);
- }
-
public ApproximateHistogram fold(ApproximateHistogram h, float[] mergedPositions, long[] mergedBins, float[] deltas)
{
if (size == 0) {
@@ -496,7 +493,7 @@ public ApproximateHistogram foldFast(ApproximateHistogram h)
*
* @return returns this histogram with h folded into it
*/
- public ApproximateHistogram foldFast(ApproximateHistogram h, float[] mergedPositions, long[] mergedBins)
+ public ApproximateHistogram foldFast(ApproximateHistogram h, @Nullable float[] mergedPositions, @Nullable long[] mergedBins)
{
if (size == 0) {
return copy(h);
@@ -612,7 +609,7 @@ protected ApproximateHistogram foldMin(
return this;
}
- protected ApproximateHistogram foldRule(ApproximateHistogram h, float[] mergedPositions, long[] mergedBins)
+ protected ApproximateHistogram foldRule(ApproximateHistogram h, @Nullable float[] mergedPositions, @Nullable long[] mergedBins)
{
// ruleCombine bins requires at least one bin
if (h.binCount == 0) {
@@ -1079,8 +1076,8 @@ private static int combineBins(
float[] rightPositions,
long[] rightBins,
float[] mergedPositions,
- long[] mergedBins,
- float[] deltas
+ @Nullable long[] mergedBins,
+ @Nullable float[] deltas
)
{
int i = 0;
diff --git a/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramErrorBenchmark.java b/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramErrorBenchmark.java
index 5f12e6089aea..ce0b70e7b179 100644
--- a/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramErrorBenchmark.java
+++ b/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramErrorBenchmark.java
@@ -144,7 +144,7 @@ private float[] getErrors()
for (int i = 0; i < numValues; ++i) {
tmp.offer(values[i]);
if ((i + 1) % numPerHist == 0) {
- ah1.fold(tmp);
+ ah1.fold(tmp, null, null, null);
ah2.foldRule(tmp, null, null);
tmp = new ApproximateHistogram(resolution);
}
diff --git a/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramTest.java b/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramTest.java
index c63ead315bbc..64e3a15aa01a 100644
--- a/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramTest.java
+++ b/extensions-core/histogram/src/test/java/org/apache/druid/query/aggregation/histogram/ApproximateHistogramTest.java
@@ -111,8 +111,8 @@ public void testFold()
h2.offer(VALUES[i]);
}
- merged.fold(h1);
- merged.fold(h2);
+ merged.fold(h1, null, null, null);
+ merged.fold(h2, null, null, null);
mergedFast.foldFast(h1);
mergedFast.foldFast(h2);
@@ -144,7 +144,7 @@ public void testFold()
ApproximateHistogram aFast = buildHistogram(10, new float[]{1, 2, 3, 4, 5, 6});
ApproximateHistogram b = buildHistogram(5, new float[]{3, 4, 5, 6});
- a.fold(b);
+ a.fold(b, null, null, null);
aFast.foldFast(b);
Assert.assertEquals(
@@ -172,7 +172,7 @@ public void testFold()
for (float v : VALUES4) {
h4.offer(v);
}
- h3.fold(h4);
+ h3.fold(h4, null, null, null);
Assert.assertArrayEquals(
"final bin positions match expected positions",
new float[]{-50.98f, -21.77f, -9.81f, 3.73f, 13.72f, 20.1f, 29f, 44.79f, 53.8f, 64.67f},
@@ -191,7 +191,7 @@ public void testFoldNothing()
ApproximateHistogram h1 = new ApproximateHistogram(10);
ApproximateHistogram h2 = new ApproximateHistogram(10);
- h1.fold(h2);
+ h1.fold(h2, null, null, null);
h1.foldFast(h2);
}
@@ -210,8 +210,8 @@ public void testFoldNothing2()
h4Fast.offer(v);
}
- h1.fold(h3);
- h4.fold(h2);
+ h1.fold(h3, null, null, null);
+ h4.fold(h2, null, null, null);
h1Fast.foldFast(h3);
h4Fast.foldFast(h2);
@@ -300,7 +300,7 @@ public void testSerializeCompact()
ApproximateHistogram h = buildHistogram(5, VALUES);
Assert.assertEquals(h, ApproximateHistogram.fromBytes(h.toBytes()));
- ApproximateHistogram h2 = new ApproximateHistogram(50).fold(h);
+ ApproximateHistogram h2 = new ApproximateHistogram(50).fold(h, null, null, null);
Assert.assertEquals(h2, ApproximateHistogram.fromBytes(h2.toBytes()));
}
@@ -331,7 +331,7 @@ public void testSerializeCompactExact()
h = buildHistogram(5, new float[]{1f, 2f, 3f});
Assert.assertEquals(h, ApproximateHistogram.fromBytes(h.toBytes()));
- h = new ApproximateHistogram(40).fold(h);
+ h = new ApproximateHistogram(40).fold(h, null, null, null);
Assert.assertEquals(h, ApproximateHistogram.fromBytes(h.toBytes()));
}
diff --git a/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorCollector.java b/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorCollector.java
index 6077057e59a7..860d9855c391 100644
--- a/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorCollector.java
+++ b/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceAggregatorCollector.java
@@ -49,7 +49,7 @@
*/
public class VarianceAggregatorCollector
{
- public static boolean isVariancePop(String estimator)
+ public static boolean isVariancePop(@Nullable String estimator)
{
return estimator != null && "population".equalsIgnoreCase(estimator);
}
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 fdc9cb22e695..79bbe96908ed 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
@@ -53,6 +53,7 @@ public class VarianceAggregatorFactory extends AggregatorFactory
{
protected final String fieldName;
protected final String name;
+ @Nullable
protected final String estimator;
private final String inputType;
@@ -62,8 +63,8 @@ public class VarianceAggregatorFactory extends AggregatorFactory
public VarianceAggregatorFactory(
@JsonProperty("name") String name,
@JsonProperty("fieldName") String fieldName,
- @JsonProperty("estimator") String estimator,
- @JsonProperty("inputType") String inputType
+ @JsonProperty("estimator") @Nullable String estimator,
+ @JsonProperty("inputType") @Nullable String inputType
)
{
Preconditions.checkNotNull(name, "Must have a valid, non-null aggregator name");
@@ -238,6 +239,7 @@ public String getName()
return name;
}
+ @Nullable
@JsonProperty
public String getEstimator()
{
diff --git a/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceFoldingAggregatorFactory.java b/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceFoldingAggregatorFactory.java
index a61921cc5b63..c9e15269c911 100644
--- a/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceFoldingAggregatorFactory.java
+++ b/extensions-core/stats/src/main/java/org/apache/druid/query/aggregation/variance/VarianceFoldingAggregatorFactory.java
@@ -22,6 +22,8 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonTypeName;
+import javax.annotation.Nullable;
+
/**
*/
@JsonTypeName("varianceFold")
@@ -30,7 +32,7 @@ public class VarianceFoldingAggregatorFactory extends VarianceAggregatorFactory
public VarianceFoldingAggregatorFactory(
@JsonProperty("name") String name,
@JsonProperty("fieldName") String fieldName,
- @JsonProperty("estimator") String estimator
+ @JsonProperty("estimator") @Nullable String estimator
)
{
super(name, fieldName, estimator, "variance");
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/DoubleMaxAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/DoubleMaxAggregatorFactory.java
index 75ef2f614095..21562af0672f 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/DoubleMaxAggregatorFactory.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/DoubleMaxAggregatorFactory.java
@@ -40,7 +40,7 @@ public class DoubleMaxAggregatorFactory extends SimpleDoubleAggregatorFactory
public DoubleMaxAggregatorFactory(
@JsonProperty("name") String name,
@JsonProperty("fieldName") final String fieldName,
- @JsonProperty("expression") String expression,
+ @JsonProperty("expression") @Nullable String expression,
@JacksonInject ExprMacroTable macroTable
)
{
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/DoubleMinAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/DoubleMinAggregatorFactory.java
index e1ddb7f9bf9a..f308db4efb7b 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/DoubleMinAggregatorFactory.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/DoubleMinAggregatorFactory.java
@@ -40,7 +40,7 @@ public class DoubleMinAggregatorFactory extends SimpleDoubleAggregatorFactory
public DoubleMinAggregatorFactory(
@JsonProperty("name") String name,
@JsonProperty("fieldName") final String fieldName,
- @JsonProperty("expression") String expression,
+ @JsonProperty("expression") @Nullable String expression,
@JacksonInject ExprMacroTable macroTable
)
{
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/DoubleSumAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/DoubleSumAggregatorFactory.java
index 0292823056ac..1a019d7b1278 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/DoubleSumAggregatorFactory.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/DoubleSumAggregatorFactory.java
@@ -42,7 +42,7 @@ public class DoubleSumAggregatorFactory extends SimpleDoubleAggregatorFactory
public DoubleSumAggregatorFactory(
@JsonProperty("name") String name,
@JsonProperty("fieldName") final String fieldName,
- @JsonProperty("expression") String expression,
+ @JsonProperty("expression") @Nullable String expression,
@JacksonInject ExprMacroTable macroTable
)
{
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/FloatMaxAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/FloatMaxAggregatorFactory.java
index a0b2f24eb927..b17b8c316a41 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/FloatMaxAggregatorFactory.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/FloatMaxAggregatorFactory.java
@@ -40,7 +40,7 @@ public class FloatMaxAggregatorFactory extends SimpleFloatAggregatorFactory
public FloatMaxAggregatorFactory(
@JsonProperty("name") String name,
@JsonProperty("fieldName") final String fieldName,
- @JsonProperty("expression") String expression,
+ @JsonProperty("expression") @Nullable String expression,
@JacksonInject ExprMacroTable macroTable
)
{
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/FloatMinAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/FloatMinAggregatorFactory.java
index bf5cc24c9d50..81b93878c73b 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/FloatMinAggregatorFactory.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/FloatMinAggregatorFactory.java
@@ -40,7 +40,7 @@ public class FloatMinAggregatorFactory extends SimpleFloatAggregatorFactory
public FloatMinAggregatorFactory(
@JsonProperty("name") String name,
@JsonProperty("fieldName") final String fieldName,
- @JsonProperty("expression") String expression,
+ @JsonProperty("expression") @Nullable String expression,
@JacksonInject ExprMacroTable macroTable
)
{
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/FloatSumAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/FloatSumAggregatorFactory.java
index debe44d518f2..a921656aeb4c 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/FloatSumAggregatorFactory.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/FloatSumAggregatorFactory.java
@@ -42,7 +42,7 @@ public class FloatSumAggregatorFactory extends SimpleFloatAggregatorFactory
public FloatSumAggregatorFactory(
@JsonProperty("name") String name,
@JsonProperty("fieldName") final String fieldName,
- @JsonProperty("expression") String expression,
+ @JsonProperty("expression") @Nullable String expression,
@JacksonInject ExprMacroTable macroTable
)
{
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/LongMaxAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/LongMaxAggregatorFactory.java
index 78f398b1dae0..182cba93d67f 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/LongMaxAggregatorFactory.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/LongMaxAggregatorFactory.java
@@ -40,7 +40,7 @@ public class LongMaxAggregatorFactory extends SimpleLongAggregatorFactory
public LongMaxAggregatorFactory(
@JsonProperty("name") String name,
@JsonProperty("fieldName") final String fieldName,
- @JsonProperty("expression") String expression,
+ @JsonProperty("expression") @Nullable String expression,
@JacksonInject ExprMacroTable macroTable
)
{
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/LongMinAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/LongMinAggregatorFactory.java
index bb0f199efd68..1c436bfc4026 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/LongMinAggregatorFactory.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/LongMinAggregatorFactory.java
@@ -40,7 +40,7 @@ public class LongMinAggregatorFactory extends SimpleLongAggregatorFactory
public LongMinAggregatorFactory(
@JsonProperty("name") String name,
@JsonProperty("fieldName") final String fieldName,
- @JsonProperty("expression") String expression,
+ @JsonProperty("expression") @Nullable String expression,
@JacksonInject ExprMacroTable macroTable
)
{
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/LongSumAggregatorFactory.java b/processing/src/main/java/org/apache/druid/query/aggregation/LongSumAggregatorFactory.java
index accfc787f7a4..5577b8e6a5e0 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/LongSumAggregatorFactory.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/LongSumAggregatorFactory.java
@@ -42,7 +42,7 @@ public class LongSumAggregatorFactory extends SimpleLongAggregatorFactory
public LongSumAggregatorFactory(
@JsonProperty("name") String name,
@JsonProperty("fieldName") final String fieldName,
- @JsonProperty("expression") String expression,
+ @JsonProperty("expression") @Nullable String expression,
@JacksonInject ExprMacroTable macroTable
)
{
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/PostAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/PostAggregator.java
index 5df02d09d32a..aecc95245c21 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/PostAggregator.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/PostAggregator.java
@@ -40,6 +40,7 @@ public interface PostAggregator extends Cacheable
@Nullable
Object compute(Map combinedAggregators);
+ @Nullable
String getName();
/**
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/SerializablePairLongString.java b/processing/src/main/java/org/apache/druid/query/aggregation/SerializablePairLongString.java
index 69261aa4e501..edecfc6229cb 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/SerializablePairLongString.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/SerializablePairLongString.java
@@ -23,10 +23,12 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import org.apache.druid.collections.SerializablePair;
+import javax.annotation.Nullable;
+
public class SerializablePairLongString extends SerializablePair
{
@JsonCreator
- public SerializablePairLongString(@JsonProperty("lhs") Long lhs, @JsonProperty("rhs") String rhs)
+ public SerializablePairLongString(@JsonProperty("lhs") Long lhs, @JsonProperty("rhs") @Nullable String rhs)
{
super(lhs, rhs);
}
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 168694ee7e53..9271e5aba726 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
@@ -108,7 +108,7 @@ public Object get(ByteBuffer buf, int position)
mutationBuffer.position(position);
Long timeValue = mutationBuffer.getLong(position);
- Integer stringSizeBytes = mutationBuffer.getInt(position + Long.BYTES);
+ int stringSizeBytes = mutationBuffer.getInt(position + Long.BYTES);
SerializablePairLongString serializablePair;
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/post/ArithmeticPostAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/post/ArithmeticPostAggregator.java
index 556d39fe89e5..ea678dc9136d 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/post/ArithmeticPostAggregator.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/post/ArithmeticPostAggregator.java
@@ -29,6 +29,8 @@
import org.apache.druid.query.aggregation.PostAggregator;
import org.apache.druid.query.cache.CacheKeyBuilder;
+import javax.annotation.Nullable;
+
import java.util.Comparator;
import java.util.HashMap;
import java.util.HashSet;
@@ -71,7 +73,7 @@ public ArithmeticPostAggregator(
@JsonProperty("name") String name,
@JsonProperty("fn") String fnName,
@JsonProperty("fields") List fields,
- @JsonProperty("ordering") String ordering
+ @JsonProperty("ordering") @Nullable String ordering
)
{
Preconditions.checkArgument(fnName != null, "fn cannot not be null");
diff --git a/processing/src/main/java/org/apache/druid/query/aggregation/post/ExpressionPostAggregator.java b/processing/src/main/java/org/apache/druid/query/aggregation/post/ExpressionPostAggregator.java
index cfd6578b1ae1..e978f186cef2 100644
--- a/processing/src/main/java/org/apache/druid/query/aggregation/post/ExpressionPostAggregator.java
+++ b/processing/src/main/java/org/apache/druid/query/aggregation/post/ExpressionPostAggregator.java
@@ -74,7 +74,7 @@ public class ExpressionPostAggregator implements PostAggregator
public ExpressionPostAggregator(
@JsonProperty("name") String name,
@JsonProperty("expression") String expression,
- @JsonProperty("ordering") String ordering,
+ @JsonProperty("ordering") @Nullable String ordering,
@JacksonInject ExprMacroTable macroTable
)
{
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 d816bc6b24f3..17506d373098 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
@@ -27,6 +27,8 @@
import org.apache.druid.query.aggregation.PostAggregator;
import org.apache.druid.query.cache.CacheKeyBuilder;
+import javax.annotation.Nullable;
+
import java.util.Comparator;
import java.util.Map;
import java.util.Set;
@@ -35,12 +37,13 @@
*/
public class FieldAccessPostAggregator implements PostAggregator
{
+ @Nullable
private final String name;
private final String fieldName;
@JsonCreator
public FieldAccessPostAggregator(
- @JsonProperty("name") String name,
+ @JsonProperty("name") @Nullable String name,
@JsonProperty("fieldName") String fieldName
)
{
@@ -67,6 +70,7 @@ public Object compute(Map combinedAggregators)
return combinedAggregators.get(fieldName);
}
+ @Nullable
@Override
@JsonProperty
public String getName()
diff --git a/processing/src/main/java/org/apache/druid/query/groupby/GroupByQuery.java b/processing/src/main/java/org/apache/druid/query/groupby/GroupByQuery.java
index 0ba0f8d7bdd8..10f043c29f00 100644
--- a/processing/src/main/java/org/apache/druid/query/groupby/GroupByQuery.java
+++ b/processing/src/main/java/org/apache/druid/query/groupby/GroupByQuery.java
@@ -802,7 +802,7 @@ public GroupByQuery withQuerySegmentSpec(QuerySegmentSpec spec)
return new Builder(this).setQuerySegmentSpec(spec).build();
}
- public GroupByQuery withDimFilter(final DimFilter dimFilter)
+ public GroupByQuery withDimFilter(@Nullable final DimFilter dimFilter)
{
return new Builder(this).setDimFilter(dimFilter).build();
}
@@ -828,7 +828,7 @@ public GroupByQuery withAggregatorSpecs(final List aggregator
return new Builder(this).setAggregatorSpecs(aggregatorSpecs).build();
}
- public GroupByQuery withSubtotalsSpec(final List> subtotalsSpec)
+ public GroupByQuery withSubtotalsSpec(@Nullable final List> subtotalsSpec)
{
return new Builder(this).setSubtotalsSpec(subtotalsSpec).build();
}
@@ -1006,7 +1006,7 @@ public Builder setLimit(int limit)
return this;
}
- public Builder setSubtotalsSpec(List> subtotalsSpec)
+ public Builder setSubtotalsSpec(@Nullable List> subtotalsSpec)
{
this.subtotalsSpec = subtotalsSpec;
return this;
@@ -1017,7 +1017,7 @@ public Builder addOrderByColumn(String dimension)
return addOrderByColumn(dimension, null);
}
- public Builder addOrderByColumn(String dimension, OrderByColumnSpec.Direction direction)
+ public Builder addOrderByColumn(String dimension, @Nullable OrderByColumnSpec.Direction direction)
{
return addOrderByColumn(new OrderByColumnSpec(dimension, direction));
}
@@ -1059,7 +1059,7 @@ public Builder setQuerySegmentSpec(QuerySegmentSpec querySegmentSpec)
return this;
}
- public Builder setDimFilter(DimFilter dimFilter)
+ public Builder setDimFilter(@Nullable DimFilter dimFilter)
{
this.dimFilter = dimFilter;
return this;
diff --git a/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/ByteBufferHashTable.java b/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/ByteBufferHashTable.java
index 6ba201e1183d..b9d0c7cc8132 100644
--- a/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/ByteBufferHashTable.java
+++ b/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/ByteBufferHashTable.java
@@ -22,6 +22,8 @@
import org.apache.druid.java.util.common.IAE;
import org.apache.druid.java.util.common.ISE;
+import javax.annotation.Nullable;
+
import java.nio.ByteBuffer;
public class ByteBufferHashTable
@@ -74,7 +76,7 @@ public static int calculateTableArenaSizeWithFixedAdditionalSize(
// how many times the table buffer has filled/readjusted (through adjustTableWhenFull())
protected int growthCount;
-
+ @Nullable
protected BucketUpdateHandler bucketUpdateHandler;
public ByteBufferHashTable(
@@ -84,7 +86,7 @@ public ByteBufferHashTable(
ByteBuffer buffer,
int keySize,
int maxSizeForTesting,
- BucketUpdateHandler bucketUpdateHandler
+ @Nullable BucketUpdateHandler bucketUpdateHandler
)
{
this.maxLoadFactor = maxLoadFactor;
diff --git a/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/GroupByRowProcessor.java b/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/GroupByRowProcessor.java
index c1ac96622fcb..b33064aae56b 100644
--- a/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/GroupByRowProcessor.java
+++ b/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/GroupByRowProcessor.java
@@ -37,6 +37,7 @@
import org.apache.druid.query.groupby.resource.GroupByQueryResource;
import javax.annotation.Nullable;
+
import java.io.Closeable;
import java.io.File;
import java.nio.ByteBuffer;
diff --git a/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/ParallelCombiner.java b/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/ParallelCombiner.java
index 4444b9eb9ff5..af8a06958772 100644
--- a/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/ParallelCombiner.java
+++ b/processing/src/main/java/org/apache/druid/query/groupby/epinephelinae/ParallelCombiner.java
@@ -47,6 +47,8 @@
import org.apache.druid.segment.ObjectColumnSelector;
import org.apache.druid.segment.column.ColumnCapabilities;
+import javax.annotation.Nullable;
+
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
@@ -435,6 +437,7 @@ private static class SettableColumnSelectorFactory implements ColumnSelectorFact
private static final int UNKNOWN_COLUMN_INDEX = -1;
private final Object2IntMap columnIndexMap;
+ @Nullable
private Object[] values;
SettableColumnSelectorFactory(AggregatorFactory[] aggregatorFactories)
@@ -446,7 +449,7 @@ private static class SettableColumnSelectorFactory implements ColumnSelectorFact
}
}
- public void set(Object[] values)
+ public void set(@Nullable Object[] values)
{
this.values = values;
}
diff --git a/processing/src/main/java/org/apache/druid/segment/DimensionHandlerUtils.java b/processing/src/main/java/org/apache/druid/segment/DimensionHandlerUtils.java
index da4232dfe6b9..e9396c504372 100644
--- a/processing/src/main/java/org/apache/druid/segment/DimensionHandlerUtils.java
+++ b/processing/src/main/java/org/apache/druid/segment/DimensionHandlerUtils.java
@@ -67,7 +67,7 @@ private DimensionHandlerUtils()
public static DimensionHandler getHandlerFromCapabilities(
String dimensionName,
ColumnCapabilities capabilities,
- MultiValueHandling multiValueHandling
+ @Nullable MultiValueHandling multiValueHandling
)
{
if (capabilities == null) {
diff --git a/processing/src/main/java/org/apache/druid/segment/DimensionIndexer.java b/processing/src/main/java/org/apache/druid/segment/DimensionIndexer.java
index 0ddbba0856d6..06c27f7d7193 100644
--- a/processing/src/main/java/org/apache/druid/segment/DimensionIndexer.java
+++ b/processing/src/main/java/org/apache/druid/segment/DimensionIndexer.java
@@ -125,7 +125,7 @@ public interface DimensionIndexer
* @param reportParseExceptions
* @return An array containing an encoded representation of the input row value.
*/
- EncodedKeyComponentType processRowValsToUnsortedEncodedKeyComponent(Object dimValues, boolean reportParseExceptions);
+ EncodedKeyComponentType processRowValsToUnsortedEncodedKeyComponent(@Nullable Object dimValues, boolean reportParseExceptions);
/**
* Gives the estimated size in bytes for the given key
diff --git a/processing/src/main/java/org/apache/druid/segment/DoubleDimensionIndexer.java b/processing/src/main/java/org/apache/druid/segment/DoubleDimensionIndexer.java
index 55c0a2c2d110..3fc93d7dcac6 100644
--- a/processing/src/main/java/org/apache/druid/segment/DoubleDimensionIndexer.java
+++ b/processing/src/main/java/org/apache/druid/segment/DoubleDimensionIndexer.java
@@ -39,7 +39,7 @@ public class DoubleDimensionIndexer implements DimensionIndexer DOUBLE_COMPARATOR = Comparators.naturalNullsFirst();
@Override
- public Double processRowValsToUnsortedEncodedKeyComponent(Object dimValues, boolean reportParseExceptions)
+ public Double processRowValsToUnsortedEncodedKeyComponent(@Nullable Object dimValues, boolean reportParseExceptions)
{
if (dimValues instanceof List) {
throw new UnsupportedOperationException("Numeric columns do not support multivalue rows.");
diff --git a/processing/src/main/java/org/apache/druid/segment/FloatDimensionIndexer.java b/processing/src/main/java/org/apache/druid/segment/FloatDimensionIndexer.java
index d68856317345..bd7384c574c8 100644
--- a/processing/src/main/java/org/apache/druid/segment/FloatDimensionIndexer.java
+++ b/processing/src/main/java/org/apache/druid/segment/FloatDimensionIndexer.java
@@ -39,7 +39,7 @@ public class FloatDimensionIndexer implements DimensionIndexer FLOAT_COMPARATOR = Comparators.naturalNullsFirst();
@Override
- public Float processRowValsToUnsortedEncodedKeyComponent(Object dimValues, boolean reportParseExceptions)
+ public Float processRowValsToUnsortedEncodedKeyComponent(@Nullable Object dimValues, boolean reportParseExceptions)
{
if (dimValues instanceof List) {
throw new UnsupportedOperationException("Numeric columns do not support multivalue rows.");
diff --git a/processing/src/main/java/org/apache/druid/segment/IndexSpec.java b/processing/src/main/java/org/apache/druid/segment/IndexSpec.java
index 4de55b6609c6..5aa4aed5a385 100644
--- a/processing/src/main/java/org/apache/druid/segment/IndexSpec.java
+++ b/processing/src/main/java/org/apache/druid/segment/IndexSpec.java
@@ -29,6 +29,8 @@
import org.apache.druid.segment.data.CompressionStrategy;
import org.apache.druid.segment.data.ConciseBitmapSerdeFactory;
+import javax.annotation.Nullable;
+
import java.util.Arrays;
import java.util.Objects;
import java.util.Set;
@@ -90,10 +92,10 @@ public IndexSpec()
*/
@JsonCreator
public IndexSpec(
- @JsonProperty("bitmap") BitmapSerdeFactory bitmapSerdeFactory,
- @JsonProperty("dimensionCompression") CompressionStrategy dimensionCompression,
- @JsonProperty("metricCompression") CompressionStrategy metricCompression,
- @JsonProperty("longEncoding") CompressionFactory.LongEncodingStrategy longEncoding
+ @JsonProperty("bitmap") @Nullable BitmapSerdeFactory bitmapSerdeFactory,
+ @JsonProperty("dimensionCompression") @Nullable CompressionStrategy dimensionCompression,
+ @JsonProperty("metricCompression") @Nullable CompressionStrategy metricCompression,
+ @JsonProperty("longEncoding") @Nullable CompressionFactory.LongEncodingStrategy longEncoding
)
{
Preconditions.checkArgument(dimensionCompression == null || DIMENSION_COMPRESSION.contains(dimensionCompression),
diff --git a/processing/src/main/java/org/apache/druid/segment/LongDimensionIndexer.java b/processing/src/main/java/org/apache/druid/segment/LongDimensionIndexer.java
index c43945a9b772..bf01e4eddbf0 100644
--- a/processing/src/main/java/org/apache/druid/segment/LongDimensionIndexer.java
+++ b/processing/src/main/java/org/apache/druid/segment/LongDimensionIndexer.java
@@ -39,7 +39,7 @@ public class LongDimensionIndexer implements DimensionIndexer
public static final Comparator LONG_COMPARATOR = Comparators.naturalNullsFirst();
@Override
- public Long processRowValsToUnsortedEncodedKeyComponent(Object dimValues, boolean reportParseExceptions)
+ public Long processRowValsToUnsortedEncodedKeyComponent(@Nullable Object dimValues, boolean reportParseExceptions)
{
if (dimValues instanceof List) {
throw new UnsupportedOperationException("Numeric columns do not support multivalue rows.");
diff --git a/processing/src/main/java/org/apache/druid/segment/StringDimensionIndexer.java b/processing/src/main/java/org/apache/druid/segment/StringDimensionIndexer.java
index 332da92ad528..c4c01861948b 100644
--- a/processing/src/main/java/org/apache/druid/segment/StringDimensionIndexer.java
+++ b/processing/src/main/java/org/apache/druid/segment/StringDimensionIndexer.java
@@ -87,7 +87,7 @@ public DimensionDictionary()
valueToId.defaultReturnValue(-1);
}
- public int getId(String value)
+ public int getId(@Nullable String value)
{
lock.readLock().lock();
try {
@@ -245,7 +245,7 @@ public StringDimensionIndexer(MultiValueHandling multiValueHandling, boolean has
}
@Override
- public int[] processRowValsToUnsortedEncodedKeyComponent(Object dimValues, boolean reportParseExceptions)
+ public int[] processRowValsToUnsortedEncodedKeyComponent(@Nullable Object dimValues, boolean reportParseExceptions)
{
final int[] encodedDimensionValues;
final int oldDictSize = dimLookup.size();
diff --git a/processing/src/main/java/org/apache/druid/segment/data/GenericIndexedWriter.java b/processing/src/main/java/org/apache/druid/segment/data/GenericIndexedWriter.java
index 120b36bd903a..3974915b043d 100644
--- a/processing/src/main/java/org/apache/druid/segment/data/GenericIndexedWriter.java
+++ b/processing/src/main/java/org/apache/druid/segment/data/GenericIndexedWriter.java
@@ -284,7 +284,7 @@ public long getSerializedSize() throws IOException
}
@Override
- public void writeTo(WritableByteChannel channel, FileSmoosher smoosher) throws IOException
+ public void writeTo(WritableByteChannel channel, @Nullable FileSmoosher smoosher) throws IOException
{
if (requireMultipleFiles) {
writeToMultiFiles(channel, smoosher);
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 dc09a5633f8f..dbb6a6e759ee 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
@@ -996,7 +996,7 @@ public Iterator iterator()
return iterableWithPostAggregations(null, false).iterator();
}
- public Iterable iterableWithPostAggregations(final List postAggs, final boolean descending)
+ public Iterable iterableWithPostAggregations(@Nullable final List postAggs, final boolean descending)
{
return () -> {
final List dimensions = getDimensions();
diff --git a/server/src/main/java/org/apache/druid/server/coordination/ChangeRequestsSnapshot.java b/server/src/main/java/org/apache/druid/server/coordination/ChangeRequestsSnapshot.java
index bacd53a8c143..14113bed6b2f 100644
--- a/server/src/main/java/org/apache/druid/server/coordination/ChangeRequestsSnapshot.java
+++ b/server/src/main/java/org/apache/druid/server/coordination/ChangeRequestsSnapshot.java
@@ -23,6 +23,8 @@
import com.fasterxml.jackson.annotation.JsonProperty;
import com.google.common.base.Preconditions;
+import javax.annotation.Nullable;
+
import java.util.List;
/**
@@ -45,18 +47,21 @@ public static ChangeRequestsSnapshot fail(String resetCause)
private final boolean resetCounter;
/** cause for reset if {@link #resetCounter} is true */
+ @Nullable
private final String resetCause;
/** segments requests delta since counter, if {@link #resetCounter} if false */
+ @Nullable
private final ChangeRequestHistory.Counter counter;
+ @Nullable
private final List requests;
@JsonCreator
public ChangeRequestsSnapshot(
@JsonProperty("resetCounter") boolean resetCounter,
- @JsonProperty("resetCause") String resetCause,
- @JsonProperty("counter") ChangeRequestHistory.Counter counter,
- @JsonProperty("requests") List requests
+ @JsonProperty("resetCause") @Nullable String resetCause,
+ @JsonProperty("counter") @Nullable ChangeRequestHistory.Counter counter,
+ @JsonProperty("requests") @Nullable List requests
)
{
this.resetCounter = resetCounter;
@@ -76,18 +81,21 @@ public boolean isResetCounter()
return resetCounter;
}
+ @Nullable
@JsonProperty
public String getResetCause()
{
return resetCause;
}
+ @Nullable
@JsonProperty
public ChangeRequestHistory.Counter getCounter()
{
return counter;
}
+ @Nullable
@JsonProperty
public List getRequests()
{
diff --git a/server/src/main/java/org/apache/druid/server/coordination/DataSegmentChangeHandler.java b/server/src/main/java/org/apache/druid/server/coordination/DataSegmentChangeHandler.java
index f502545ef85e..cd2a8c3740f2 100644
--- a/server/src/main/java/org/apache/druid/server/coordination/DataSegmentChangeHandler.java
+++ b/server/src/main/java/org/apache/druid/server/coordination/DataSegmentChangeHandler.java
@@ -21,10 +21,12 @@
import org.apache.druid.timeline.DataSegment;
+import javax.annotation.Nullable;
+
/**
*/
public interface DataSegmentChangeHandler
{
- void addSegment(DataSegment segment, DataSegmentChangeCallback callback);
- void removeSegment(DataSegment segment, DataSegmentChangeCallback callback);
+ void addSegment(DataSegment segment, @Nullable DataSegmentChangeCallback callback);
+ void removeSegment(DataSegment segment, @Nullable DataSegmentChangeCallback callback);
}
diff --git a/server/src/main/java/org/apache/druid/server/coordination/DataSegmentChangeRequest.java b/server/src/main/java/org/apache/druid/server/coordination/DataSegmentChangeRequest.java
index d7962ce161ed..6a044aaf6bba 100644
--- a/server/src/main/java/org/apache/druid/server/coordination/DataSegmentChangeRequest.java
+++ b/server/src/main/java/org/apache/druid/server/coordination/DataSegmentChangeRequest.java
@@ -22,6 +22,8 @@
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import javax.annotation.Nullable;
+
/**
*/
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "action")
@@ -32,7 +34,7 @@
})
public interface DataSegmentChangeRequest
{
- void go(DataSegmentChangeHandler handler, DataSegmentChangeCallback callback);
+ void go(DataSegmentChangeHandler handler, @Nullable DataSegmentChangeCallback callback);
String asString();
}
diff --git a/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestDrop.java b/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestDrop.java
index 85c168346242..c4229a028806 100644
--- a/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestDrop.java
+++ b/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestDrop.java
@@ -25,6 +25,8 @@
import org.apache.druid.java.util.common.StringUtils;
import org.apache.druid.timeline.DataSegment;
+import javax.annotation.Nullable;
+
import java.util.Objects;
/**
@@ -49,7 +51,7 @@ public DataSegment getSegment()
}
@Override
- public void go(DataSegmentChangeHandler handler, DataSegmentChangeCallback callback)
+ public void go(DataSegmentChangeHandler handler, @Nullable DataSegmentChangeCallback callback)
{
handler.removeSegment(segment, callback);
}
diff --git a/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestLoad.java b/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestLoad.java
index 002b968256aa..097e02523032 100644
--- a/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestLoad.java
+++ b/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestLoad.java
@@ -25,6 +25,8 @@
import org.apache.druid.java.util.common.StringUtils;
import org.apache.druid.timeline.DataSegment;
+import javax.annotation.Nullable;
+
import java.util.Objects;
/**
@@ -42,7 +44,7 @@ public SegmentChangeRequestLoad(
}
@Override
- public void go(DataSegmentChangeHandler handler, DataSegmentChangeCallback callback)
+ public void go(DataSegmentChangeHandler handler, @Nullable DataSegmentChangeCallback callback)
{
handler.addSegment(segment, callback);
}
diff --git a/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestNoop.java b/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestNoop.java
index 4f902496bb41..3978bcf693c4 100644
--- a/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestNoop.java
+++ b/server/src/main/java/org/apache/druid/server/coordination/SegmentChangeRequestNoop.java
@@ -19,15 +19,19 @@
package org.apache.druid.server.coordination;
+import javax.annotation.Nullable;
+
/**
*/
public class SegmentChangeRequestNoop implements DataSegmentChangeRequest
{
@Override
- public void go(DataSegmentChangeHandler handler, DataSegmentChangeCallback callback)
+ public void go(DataSegmentChangeHandler handler, @Nullable DataSegmentChangeCallback callback)
{
// just execute the callback and do nothing else
- callback.execute();
+ if (callback != null) {
+ callback.execute();
+ }
}
@Override