This is an automated email from the ASF dual-hosted git repository. jackie pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/pinot.git
The following commit(s) were added to refs/heads/master by this push: new 60ee5eb0e8 Allow ValueBlock length to increase in TransformFunction (#10515) 60ee5eb0e8 is described below commit 60ee5eb0e8a2cf8276565ae8b20fb81292315843 Author: Xiaotian (Jackie) Jiang <17555551+jackie-ji...@users.noreply.github.com> AuthorDate: Fri Mar 31 15:28:33 2023 -0700 Allow ValueBlock length to increase in TransformFunction (#10515) * Allow ValueBlock length to increase in TransformFunction * Address comment --- .../function/AdditionTransformFunction.java | 8 +- .../function/ArrayAverageTransformFunction.java | 4 +- .../function/ArrayLengthTransformFunction.java | 4 +- .../function/ArrayMaxTransformFunction.java | 20 +-- .../function/ArrayMinTransformFunction.java | 20 +-- .../function/ArraySumTransformFunction.java | 4 +- .../transform/function/BaseTransformFunction.java | 197 ++++++++++++--------- .../function/BinaryOperatorTransformFunction.java | 4 +- .../transform/function/CaseTransformFunction.java | 28 +-- .../transform/function/CastTransformFunction.java | 40 ++--- .../function/CoalesceTransformFunction.java | 24 +-- .../DateTimeConversionTransformFunction.java | 8 +- .../function/DateTimeTransformFunction.java | 4 +- .../function/DateTruncTransformFunction.java | 4 +- .../function/DivisionTransformFunction.java | 8 +- .../function/ExtractTransformFunction.java | 4 +- .../function/GreatestTransformFunction.java | 24 +-- .../function/GroovyTransformFunction.java | 49 ++--- .../function/InIdSetTransformFunction.java | 4 +- .../transform/function/InTransformFunction.java | 8 +- .../function/IsNotNullTransformFunction.java | 4 +- .../function/IsNullTransformFunction.java | 5 +- .../function/JsonExtractKeyTransformFunction.java | 4 +- .../JsonExtractScalarTransformFunction.java | 55 ++---- .../transform/function/LeastTransformFunction.java | 24 +-- .../function/LogicalOperatorTransformFunction.java | 4 +- .../function/LookupTransformFunction.java | 55 ++---- .../function/MapValueTransformFunction.java | 2 +- .../function/ModuloTransformFunction.java | 4 +- .../function/MultiplicationTransformFunction.java | 8 +- .../function/NotOperatorTransformFunction.java | 4 +- .../transform/function/PowerTransformFunction.java | 4 +- .../function/RegexpExtractTransformFunction.java | 4 +- .../function/RoundDecimalTransformFunction.java | 4 +- .../function/ScalarTransformFunctionWrapper.java | 48 ++--- .../function/SingleParamMathTransformFunction.java | 8 +- .../function/SubtractionTransformFunction.java | 8 +- .../function/TimeConversionTransformFunction.java | 7 +- .../function/TrigonometricTransformFunctions.java | 7 +- .../function/TruncateDecimalTransformFunction.java | 11 +- .../function/ValueInTransformFunction.java | 32 ++-- 41 files changed, 259 insertions(+), 509 deletions(-) diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/AdditionTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/AdditionTransformFunction.java index fe5cbdfda3..101afec48f 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/AdditionTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/AdditionTransformFunction.java @@ -88,9 +88,7 @@ public class AdditionTransformFunction extends BaseTransformFunction { @Override public double[] transformToDoubleValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[length]; - } + initDoubleValuesSV(length); if (_resultDataType == DataType.BIG_DECIMAL) { BigDecimal[] values = transformToBigDecimalValuesSV(valueBlock); ArrayCopyUtils.copy(values, _doubleValuesSV, length); @@ -109,9 +107,7 @@ public class AdditionTransformFunction extends BaseTransformFunction { @Override public BigDecimal[] transformToBigDecimalValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_bigDecimalValuesSV == null) { - _bigDecimalValuesSV = new BigDecimal[length]; - } + initBigDecimalValuesSV(length); if (_resultDataType == DataType.DOUBLE) { double[] values = transformToDoubleValuesSV(valueBlock); ArrayCopyUtils.copy(values, _bigDecimalValuesSV, length); diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArrayAverageTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArrayAverageTransformFunction.java index 2815e76ad5..a798a8870d 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArrayAverageTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArrayAverageTransformFunction.java @@ -70,9 +70,7 @@ public class ArrayAverageTransformFunction extends BaseTransformFunction { @Override public double[] transformToDoubleValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[length]; - } + initDoubleValuesSV(length); switch (_argument.getResultMetadata().getDataType().getStoredType()) { case INT: int[][] intValuesMV = _argument.transformToIntValuesMV(valueBlock); diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArrayLengthTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArrayLengthTransformFunction.java index 8deb7fbb74..42890fd653 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArrayLengthTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArrayLengthTransformFunction.java @@ -67,9 +67,7 @@ public class ArrayLengthTransformFunction extends BaseTransformFunction { @Override public int[] transformToIntValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[length]; - } + initIntValuesSV(length); switch (_argument.getResultMetadata().getDataType().getStoredType()) { case INT: int[][] intValuesMV = _argument.transformToIntValuesMV(valueBlock); diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArrayMaxTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArrayMaxTransformFunction.java index 1a3cfd9126..246264934c 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArrayMaxTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArrayMaxTransformFunction.java @@ -74,9 +74,7 @@ public class ArrayMaxTransformFunction extends BaseTransformFunction { return super.transformToIntValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[length]; - } + initIntValuesSV(length); int[][] intValuesMV = _argument.transformToIntValuesMV(valueBlock); for (int i = 0; i < length; i++) { int maxRes = Integer.MIN_VALUE; @@ -94,9 +92,7 @@ public class ArrayMaxTransformFunction extends BaseTransformFunction { return super.transformToLongValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_longValuesSV == null) { - _longValuesSV = new long[length]; - } + initLongValuesSV(length); long[][] longValuesMV = _argument.transformToLongValuesMV(valueBlock); for (int i = 0; i < length; i++) { long maxRes = Long.MIN_VALUE; @@ -114,9 +110,7 @@ public class ArrayMaxTransformFunction extends BaseTransformFunction { return super.transformToFloatValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_floatValuesSV == null) { - _floatValuesSV = new float[length]; - } + initFloatValuesSV(length); float[][] floatValuesMV = _argument.transformToFloatValuesMV(valueBlock); for (int i = 0; i < length; i++) { float maxRes = Float.NEGATIVE_INFINITY; @@ -134,9 +128,7 @@ public class ArrayMaxTransformFunction extends BaseTransformFunction { return super.transformToDoubleValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[length]; - } + initDoubleValuesSV(length); double[][] doubleValuesMV = _argument.transformToDoubleValuesMV(valueBlock); for (int i = 0; i < length; i++) { double maxRes = Double.NEGATIVE_INFINITY; @@ -154,9 +146,7 @@ public class ArrayMaxTransformFunction extends BaseTransformFunction { return super.transformToStringValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_stringValuesSV == null) { - _stringValuesSV = new String[length]; - } + initStringValuesSV(length); String[][] stringValuesMV = _argument.transformToStringValuesMV(valueBlock); for (int i = 0; i < length; i++) { String maxRes = null; diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArrayMinTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArrayMinTransformFunction.java index c97fd3d529..0a970c535d 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArrayMinTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArrayMinTransformFunction.java @@ -74,9 +74,7 @@ public class ArrayMinTransformFunction extends BaseTransformFunction { return super.transformToIntValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[length]; - } + initIntValuesSV(length); int[][] intValuesMV = _argument.transformToIntValuesMV(valueBlock); for (int i = 0; i < length; i++) { int minRes = Integer.MAX_VALUE; @@ -94,9 +92,7 @@ public class ArrayMinTransformFunction extends BaseTransformFunction { return super.transformToLongValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_longValuesSV == null) { - _longValuesSV = new long[length]; - } + initLongValuesSV(length); long[][] longValuesMV = _argument.transformToLongValuesMV(valueBlock); for (int i = 0; i < length; i++) { long minRes = Long.MAX_VALUE; @@ -114,9 +110,7 @@ public class ArrayMinTransformFunction extends BaseTransformFunction { return super.transformToFloatValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_floatValuesSV == null) { - _floatValuesSV = new float[length]; - } + initFloatValuesSV(length); float[][] floatValuesMV = _argument.transformToFloatValuesMV(valueBlock); for (int i = 0; i < length; i++) { float minRes = Float.POSITIVE_INFINITY; @@ -134,9 +128,7 @@ public class ArrayMinTransformFunction extends BaseTransformFunction { return super.transformToDoubleValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[length]; - } + initDoubleValuesSV(length); double[][] doubleValuesMV = _argument.transformToDoubleValuesMV(valueBlock); for (int i = 0; i < length; i++) { double minRes = Double.POSITIVE_INFINITY; @@ -154,9 +146,7 @@ public class ArrayMinTransformFunction extends BaseTransformFunction { return super.transformToStringValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_stringValuesSV == null) { - _stringValuesSV = new String[length]; - } + initStringValuesSV(length); String[][] stringValuesMV = _argument.transformToStringValuesMV(valueBlock); for (int i = 0; i < length; i++) { String minRes = null; diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArraySumTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArraySumTransformFunction.java index 29c3a9c049..a5623a4f17 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArraySumTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ArraySumTransformFunction.java @@ -70,9 +70,7 @@ public class ArraySumTransformFunction extends BaseTransformFunction { @Override public double[] transformToDoubleValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[length]; - } + initDoubleValuesSV(length); double[][] doubleValuesMV = _argument.transformToDoubleValuesMV(valueBlock); for (int i = 0; i < length; i++) { double sumRes = 0; diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/BaseTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/BaseTransformFunction.java index 5d641a2658..3ba1420422 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/BaseTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/BaseTransformFunction.java @@ -19,6 +19,7 @@ package org.apache.pinot.core.operator.transform.function; import java.math.BigDecimal; +import java.util.Arrays; import java.util.List; import java.util.Map; import javax.annotation.Nullable; @@ -78,7 +79,6 @@ public abstract class BaseTransformFunction implements TransformFunction { new TransformResultMetadata(DataType.STRING, false, false); protected static final TransformResultMetadata JSON_MV_NO_DICTIONARY_METADATA = new TransformResultMetadata(DataType.JSON, false, false); - // TODO: Support MV BYTES protected static final TransformResultMetadata BYTES_MV_NO_DICTIONARY_METADATA = new TransformResultMetadata(DataType.BYTES, false, false); @@ -122,12 +122,24 @@ public abstract class BaseTransformFunction implements TransformFunction { throw new UnsupportedOperationException(); } + protected void initIntValuesSV(int length) { + if (_intValuesSV == null || _intValuesSV.length < length) { + _intValuesSV = new int[length]; + } + } + + protected void initZeroFillingIntValuesSV(int length) { + if (_intValuesSV == null || _intValuesSV.length < length) { + _intValuesSV = new int[length]; + } else { + Arrays.fill(_intValuesSV, 0, length, 0); + } + } + @Override public int[] transformToIntValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[length]; - } + initIntValuesSV(length); Dictionary dictionary = getDictionary(); if (dictionary != null) { int[] dictIds = transformToDictIdsSV(valueBlock); @@ -168,11 +180,10 @@ public abstract class BaseTransformFunction implements TransformFunction { return _intValuesSV; } + @Override public Pair<int[], RoaringBitmap> transformToIntValuesSVWithNull(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[length]; - } + initIntValuesSV(length); RoaringBitmap bitmap; DataType resultDataType = getResultMetadata().getDataType(); switch (resultDataType.getStoredType()) { @@ -219,12 +230,16 @@ public abstract class BaseTransformFunction implements TransformFunction { return ImmutablePair.of(_intValuesSV, bitmap); } + protected void initLongValuesSV(int length) { + if (_longValuesSV == null || _longValuesSV.length < length) { + _longValuesSV = new long[length]; + } + } + @Override public long[] transformToLongValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_longValuesSV == null) { - _longValuesSV = new long[length]; - } + initLongValuesSV(length); Dictionary dictionary = getDictionary(); if (dictionary != null) { int[] dictIds = transformToDictIdsSV(valueBlock); @@ -268,9 +283,7 @@ public abstract class BaseTransformFunction implements TransformFunction { @Override public Pair<long[], RoaringBitmap> transformToLongValuesSVWithNull(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_longValuesSV == null) { - _longValuesSV = new long[length]; - } + initLongValuesSV(length); RoaringBitmap bitmap; DataType resultDataType = getResultMetadata().getDataType(); switch (resultDataType.getStoredType()) { @@ -317,12 +330,16 @@ public abstract class BaseTransformFunction implements TransformFunction { return ImmutablePair.of(_longValuesSV, bitmap); } + protected void initFloatValuesSV(int length) { + if (_floatValuesSV == null || _floatValuesSV.length < length) { + _floatValuesSV = new float[length]; + } + } + @Override public float[] transformToFloatValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_floatValuesSV == null) { - _floatValuesSV = new float[length]; - } + initFloatValuesSV(length); Dictionary dictionary = getDictionary(); if (dictionary != null) { int[] dictIds = transformToDictIdsSV(valueBlock); @@ -366,9 +383,7 @@ public abstract class BaseTransformFunction implements TransformFunction { @Override public Pair<float[], RoaringBitmap> transformToFloatValuesSVWithNull(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_floatValuesSV == null) { - _floatValuesSV = new float[length]; - } + initFloatValuesSV(length); RoaringBitmap bitmap; DataType resultDataType = getResultMetadata().getDataType(); switch (resultDataType.getStoredType()) { @@ -415,12 +430,16 @@ public abstract class BaseTransformFunction implements TransformFunction { return ImmutablePair.of(_floatValuesSV, bitmap); } + protected void initDoubleValuesSV(int length) { + if (_doubleValuesSV == null || _doubleValuesSV.length < length) { + _doubleValuesSV = new double[length]; + } + } + @Override public double[] transformToDoubleValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[length]; - } + initDoubleValuesSV(length); Dictionary dictionary = getDictionary(); if (dictionary != null) { int[] dictIds = transformToDictIdsSV(valueBlock); @@ -464,9 +483,7 @@ public abstract class BaseTransformFunction implements TransformFunction { @Override public Pair<double[], RoaringBitmap> transformToDoubleValuesSVWithNull(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[length]; - } + initDoubleValuesSV(length); RoaringBitmap bitmap; DataType resultDataType = getResultMetadata().getDataType(); switch (resultDataType.getStoredType()) { @@ -513,12 +530,16 @@ public abstract class BaseTransformFunction implements TransformFunction { return ImmutablePair.of(_doubleValuesSV, bitmap); } + protected void initBigDecimalValuesSV(int length) { + if (_bigDecimalValuesSV == null || _bigDecimalValuesSV.length < length) { + _bigDecimalValuesSV = new BigDecimal[length]; + } + } + @Override public BigDecimal[] transformToBigDecimalValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_bigDecimalValuesSV == null) { - _bigDecimalValuesSV = new BigDecimal[length]; - } + initBigDecimalValuesSV(length); Dictionary dictionary = getDictionary(); if (dictionary != null) { int[] dictIds = transformToDictIdsSV(valueBlock); @@ -563,11 +584,10 @@ public abstract class BaseTransformFunction implements TransformFunction { return _bigDecimalValuesSV; } + @Override public Pair<BigDecimal[], RoaringBitmap> transformToBigDecimalValuesSVWithNull(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_bigDecimalValuesSV == null) { - _bigDecimalValuesSV = new BigDecimal[length]; - } + initBigDecimalValuesSV(length); RoaringBitmap bitmap; DataType resultDataType = getResultMetadata().getDataType(); switch (resultDataType.getStoredType()) { @@ -619,12 +639,16 @@ public abstract class BaseTransformFunction implements TransformFunction { return ImmutablePair.of(_bigDecimalValuesSV, bitmap); } + protected void initStringValuesSV(int length) { + if (_stringValuesSV == null || _stringValuesSV.length < length) { + _stringValuesSV = new String[length]; + } + } + @Override public String[] transformToStringValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_stringValuesSV == null) { - _stringValuesSV = new String[length]; - } + initStringValuesSV(length); Dictionary dictionary = getDictionary(); if (dictionary != null) { int[] dictIds = transformToDictIdsSV(valueBlock); @@ -669,11 +693,10 @@ public abstract class BaseTransformFunction implements TransformFunction { return _stringValuesSV; } + @Override public Pair<String[], RoaringBitmap> transformToStringValuesSVWithNull(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_stringValuesSV == null) { - _stringValuesSV = new String[length]; - } + initStringValuesSV(length); RoaringBitmap bitmap; DataType resultDataType = getResultMetadata().getDataType(); switch (resultDataType.getStoredType()) { @@ -725,12 +748,16 @@ public abstract class BaseTransformFunction implements TransformFunction { return ImmutablePair.of(_stringValuesSV, bitmap); } + protected void initBytesValuesSV(int length) { + if (_bytesValuesSV == null || _bytesValuesSV.length < length) { + _bytesValuesSV = new byte[length][]; + } + } + @Override public byte[][] transformToBytesValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_bytesValuesSV == null) { - _bytesValuesSV = new byte[length][]; - } + initBytesValuesSV(length); Dictionary dictionary = getDictionary(); if (dictionary != null) { int[] dictIds = transformToDictIdsSV(valueBlock); @@ -762,9 +789,7 @@ public abstract class BaseTransformFunction implements TransformFunction { @Override public Pair<byte[][], RoaringBitmap> transformToBytesValuesSVWithNull(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_bytesValuesSV == null) { - _bytesValuesSV = new byte[length][]; - } + initBytesValuesSV(length); RoaringBitmap bitmap; DataType resultDataType = getResultMetadata().getDataType(); switch (resultDataType.getStoredType()) { @@ -796,12 +821,16 @@ public abstract class BaseTransformFunction implements TransformFunction { return ImmutablePair.of(_bytesValuesSV, bitmap); } + protected void initIntValuesMV(int length) { + if (_intValuesMV == null || _intValuesMV.length < length) { + _intValuesMV = new int[length][]; + } + } + @Override public int[][] transformToIntValuesMV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_intValuesMV == null) { - _intValuesMV = new int[length][]; - } + initIntValuesMV(length); Dictionary dictionary = getDictionary(); if (dictionary != null) { int[][] dictIdsMV = transformToDictIdsMV(valueBlock); @@ -847,9 +876,7 @@ public abstract class BaseTransformFunction implements TransformFunction { @Override public Pair<int[][], RoaringBitmap> transformToIntValuesMVWithNull(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_intValuesMV == null) { - _intValuesMV = new int[length][]; - } + initIntValuesMV(length); RoaringBitmap bitmap; DataType resultDataType = getResultMetadata().getDataType(); switch (resultDataType.getStoredType()) { @@ -891,12 +918,16 @@ public abstract class BaseTransformFunction implements TransformFunction { return ImmutablePair.of(_intValuesMV, bitmap); } + protected void initLongValuesMV(int length) { + if (_longValuesMV == null || _longValuesMV.length < length) { + _longValuesMV = new long[length][]; + } + } + @Override public long[][] transformToLongValuesMV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_longValuesMV == null) { - _longValuesMV = new long[length][]; - } + initLongValuesMV(length); Dictionary dictionary = getDictionary(); if (dictionary != null) { int[][] dictIdsMV = transformToDictIdsMV(valueBlock); @@ -942,9 +973,7 @@ public abstract class BaseTransformFunction implements TransformFunction { @Override public Pair<long[][], RoaringBitmap> transformToLongValuesMVWithNull(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_longValuesMV == null) { - _longValuesMV = new long[length][]; - } + initLongValuesMV(length); RoaringBitmap bitmap; DataType resultDataType = getResultMetadata().getDataType(); switch (resultDataType.getStoredType()) { @@ -982,12 +1011,16 @@ public abstract class BaseTransformFunction implements TransformFunction { return ImmutablePair.of(_longValuesMV, bitmap); } + protected void initFloatValuesMV(int length) { + if (_floatValuesMV == null || _floatValuesMV.length < length) { + _floatValuesMV = new float[length][]; + } + } + @Override public float[][] transformToFloatValuesMV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_floatValuesMV == null) { - _floatValuesMV = new float[length][]; - } + initFloatValuesMV(length); Dictionary dictionary = getDictionary(); if (dictionary != null) { int[][] dictIdsMV = transformToDictIdsMV(valueBlock); @@ -1033,9 +1066,7 @@ public abstract class BaseTransformFunction implements TransformFunction { @Override public Pair<float[][], RoaringBitmap> transformToFloatValuesMVWithNull(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_floatValuesMV == null) { - _floatValuesMV = new float[length][]; - } + initFloatValuesMV(length); RoaringBitmap bitmap; DataType resultDataType = getResultMetadata().getDataType(); switch (resultDataType.getStoredType()) { @@ -1077,12 +1108,16 @@ public abstract class BaseTransformFunction implements TransformFunction { return ImmutablePair.of(_floatValuesMV, bitmap); } + protected void initDoubleValuesMV(int length) { + if (_doubleValuesMV == null || _doubleValuesMV.length < length) { + _doubleValuesMV = new double[length][]; + } + } + @Override public double[][] transformToDoubleValuesMV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_doubleValuesMV == null) { - _doubleValuesMV = new double[length][]; - } + initDoubleValuesMV(length); Dictionary dictionary = getDictionary(); if (dictionary != null) { int[][] dictIdsMV = transformToDictIdsMV(valueBlock); @@ -1125,11 +1160,10 @@ public abstract class BaseTransformFunction implements TransformFunction { return _doubleValuesMV; } + @Override public Pair<double[][], RoaringBitmap> transformToDoubleValuesMVWithNull(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_doubleValuesMV == null) { - _doubleValuesMV = new double[length][]; - } + initDoubleValuesMV(length); RoaringBitmap bitmap; DataType resultDataType = getResultMetadata().getDataType(); switch (resultDataType.getStoredType()) { @@ -1171,12 +1205,16 @@ public abstract class BaseTransformFunction implements TransformFunction { return ImmutablePair.of(_doubleValuesMV, bitmap); } + protected void initStringValuesMV(int length) { + if (_stringValuesMV == null || _stringValuesMV.length < length) { + _stringValuesMV = new String[length][]; + } + } + @Override public String[][] transformToStringValuesMV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_stringValuesMV == null) { - _stringValuesMV = new String[length][]; - } + initStringValuesMV(length); Dictionary dictionary = getDictionary(); if (dictionary != null) { int[][] dictIdsMV = transformToDictIdsMV(valueBlock); @@ -1219,11 +1257,10 @@ public abstract class BaseTransformFunction implements TransformFunction { return _stringValuesMV; } + @Override public Pair<String[][], RoaringBitmap> transformToStringValuesMVWithNull(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_stringValuesMV == null) { - _stringValuesMV = new String[length][]; - } + initStringValuesMV(length); RoaringBitmap bitmap; DataType resultDataType = getResultMetadata().getDataType(); switch (resultDataType) { @@ -1265,12 +1302,16 @@ public abstract class BaseTransformFunction implements TransformFunction { return ImmutablePair.of(_stringValuesMV, bitmap); } + protected void initBytesValuesMV(int length) { + if (_bytesValuesMV == null || _bytesValuesMV.length < length) { + _bytesValuesMV = new byte[length][][]; + } + } + @Override public byte[][][] transformToBytesValuesMV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_bytesValuesMV == null) { - _bytesValuesMV = new byte[length][][]; - } + initBytesValuesMV(length); Dictionary dictionary = getDictionary(); if (dictionary != null) { int[][] dictIdsMV = transformToDictIdsMV(valueBlock); @@ -1292,9 +1333,7 @@ public abstract class BaseTransformFunction implements TransformFunction { @Override public Pair<byte[][][], RoaringBitmap> transformToBytesValuesMVWithNull(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_bytesValuesMV == null) { - _bytesValuesMV = new byte[length][][]; - } + initBytesValuesMV(length); RoaringBitmap bitmap; DataType resultDataType = getResultMetadata().getDataType(); switch (resultDataType) { diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/BinaryOperatorTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/BinaryOperatorTransformFunction.java index e98f13b7e9..68965d5734 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/BinaryOperatorTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/BinaryOperatorTransformFunction.java @@ -112,9 +112,7 @@ public abstract class BinaryOperatorTransformFunction extends BaseTransformFunct private void fillResultArray(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[length]; - } + initIntValuesSV(length); switch (_leftStoredType) { case INT: fillResultInt(valueBlock, length); diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/CaseTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/CaseTransformFunction.java index b85215be93..b9578f4b84 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/CaseTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/CaseTransformFunction.java @@ -282,9 +282,7 @@ public class CaseTransformFunction extends BaseTransformFunction { } int[] selected = getSelectedArray(valueBlock); int numDocs = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[numDocs]; - } + initIntValuesSV(numDocs); int numElseThenStatements = _elseThenStatements.size(); for (int i = 0; i < numElseThenStatements; i++) { if (_selections[i]) { @@ -311,9 +309,7 @@ public class CaseTransformFunction extends BaseTransformFunction { } int[] selected = getSelectedArray(valueBlock); int numDocs = valueBlock.getNumDocs(); - if (_longValuesSV == null) { - _longValuesSV = new long[numDocs]; - } + initLongValuesSV(numDocs); int numElseThenStatements = _elseThenStatements.size(); for (int i = 0; i < numElseThenStatements; i++) { if (_selections[i]) { @@ -340,9 +336,7 @@ public class CaseTransformFunction extends BaseTransformFunction { } int[] selected = getSelectedArray(valueBlock); int numDocs = valueBlock.getNumDocs(); - if (_floatValuesSV == null) { - _floatValuesSV = new float[numDocs]; - } + initFloatValuesSV(numDocs); int numElseThenStatements = _elseThenStatements.size(); for (int i = 0; i < numElseThenStatements; i++) { if (_selections[i]) { @@ -369,9 +363,7 @@ public class CaseTransformFunction extends BaseTransformFunction { } int[] selected = getSelectedArray(valueBlock); int numDocs = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[numDocs]; - } + initDoubleValuesSV(numDocs); int numElseThenStatements = _elseThenStatements.size(); for (int i = 0; i < numElseThenStatements; i++) { if (_selections[i]) { @@ -398,9 +390,7 @@ public class CaseTransformFunction extends BaseTransformFunction { } int[] selected = getSelectedArray(valueBlock); int numDocs = valueBlock.getNumDocs(); - if (_bigDecimalValuesSV == null) { - _bigDecimalValuesSV = new BigDecimal[numDocs]; - } + initBigDecimalValuesSV(numDocs); int numElseThenStatements = _elseThenStatements.size(); for (int i = 0; i < numElseThenStatements; i++) { if (_selections[i]) { @@ -427,9 +417,7 @@ public class CaseTransformFunction extends BaseTransformFunction { } int[] selected = getSelectedArray(valueBlock); int numDocs = valueBlock.getNumDocs(); - if (_stringValuesSV == null) { - _stringValuesSV = new String[numDocs]; - } + initStringValuesSV(numDocs); int numElseThenStatements = _elseThenStatements.size(); for (int i = 0; i < numElseThenStatements; i++) { if (_selections[i]) { @@ -456,9 +444,7 @@ public class CaseTransformFunction extends BaseTransformFunction { } int[] selected = getSelectedArray(valueBlock); int numDocs = valueBlock.getNumDocs(); - if (_bytesValuesSV == null) { - _bytesValuesSV = new byte[numDocs][]; - } + initBytesValuesSV(numDocs); int numElseThenStatements = _elseThenStatements.size(); for (int i = 0; i < numElseThenStatements; i++) { if (_selections[i]) { diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/CastTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/CastTransformFunction.java index 8c1c2f1d5e..c5b56a4b81 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/CastTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/CastTransformFunction.java @@ -118,9 +118,7 @@ public class CastTransformFunction extends BaseTransformFunction { // TODO: Add it to the interface private int[] transformToBooleanValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[length]; - } + initIntValuesSV(length); switch (_sourceDataType.getStoredType()) { case INT: int[] intValues = _transformFunction.transformToIntValuesSV(valueBlock); @@ -168,9 +166,7 @@ public class CastTransformFunction extends BaseTransformFunction { private long[] transformToTimestampValuesSV(ValueBlock valueBlock) { if (_sourceDataType.getStoredType() == DataType.STRING) { int length = valueBlock.getNumDocs(); - if (_longValuesSV == null) { - _longValuesSV = new long[length]; - } + initLongValuesSV(length); String[] stringValues = _transformFunction.transformToStringValuesSV(valueBlock); ArrayCopyUtils.copyToTimestamp(stringValues, _longValuesSV, length); return _longValuesSV; @@ -213,17 +209,13 @@ public class CastTransformFunction extends BaseTransformFunction { switch (_sourceDataType) { case BOOLEAN: int length = valueBlock.getNumDocs(); - if (_stringValuesSV == null) { - _stringValuesSV = new String[length]; - } + initStringValuesSV(length); int[] intValues = _transformFunction.transformToIntValuesSV(valueBlock); ArrayCopyUtils.copyFromBoolean(intValues, _stringValuesSV, length); return _stringValuesSV; case TIMESTAMP: length = valueBlock.getNumDocs(); - if (_stringValuesSV == null) { - _stringValuesSV = new String[length]; - } + initStringValuesSV(length); long[] longValues = _transformFunction.transformToLongValuesSV(valueBlock); ArrayCopyUtils.copyFromTimestamp(longValues, _stringValuesSV, length); return _stringValuesSV; @@ -232,9 +224,7 @@ public class CastTransformFunction extends BaseTransformFunction { } } else { int length = valueBlock.getNumDocs(); - if (_stringValuesSV == null) { - _stringValuesSV = new String[length]; - } + initStringValuesSV(length); switch (resultDataType) { case INT: int[] intValues = _transformFunction.transformToIntValuesSV(valueBlock); @@ -290,9 +280,7 @@ public class CastTransformFunction extends BaseTransformFunction { // TODO: Add it to the interface private int[][] transformToBooleanValuesMV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_intValuesMV == null) { - _intValuesMV = new int[length][]; - } + initIntValuesMV(length); switch (_sourceDataType.getStoredType()) { case INT: int[][] intValuesMV = _transformFunction.transformToIntValuesMV(valueBlock); @@ -336,9 +324,7 @@ public class CastTransformFunction extends BaseTransformFunction { private long[][] transformToTimestampValuesMV(ValueBlock valueBlock) { if (_sourceDataType.getStoredType() == DataType.STRING) { int length = valueBlock.getNumDocs(); - if (_longValuesMV == null) { - _longValuesMV = new long[length][]; - } + initLongValuesMV(length); String[][] stringValuesMV = _transformFunction.transformToStringValuesMV(valueBlock); ArrayCopyUtils.copyToTimestamp(stringValuesMV, _longValuesMV, length); return _longValuesMV; @@ -372,17 +358,13 @@ public class CastTransformFunction extends BaseTransformFunction { switch (_sourceDataType) { case BOOLEAN: int length = valueBlock.getNumDocs(); - if (_stringValuesMV == null) { - _stringValuesMV = new String[length][]; - } + initStringValuesMV(length); int[][] intValuesMV = _transformFunction.transformToIntValuesMV(valueBlock); ArrayCopyUtils.copyFromBoolean(intValuesMV, _stringValuesMV, length); return _stringValuesMV; case TIMESTAMP: length = valueBlock.getNumDocs(); - if (_stringValuesMV == null) { - _stringValuesMV = new String[length][]; - } + initStringValuesMV(length); long[][] longValuesMV = _transformFunction.transformToLongValuesMV(valueBlock); ArrayCopyUtils.copyFromTimestamp(longValuesMV, _stringValuesMV, length); return _stringValuesMV; @@ -391,9 +373,7 @@ public class CastTransformFunction extends BaseTransformFunction { } } else { int length = valueBlock.getNumDocs(); - if (_stringValuesMV == null) { - _stringValuesMV = new String[length][]; - } + initStringValuesMV(length); switch (resultDataType) { case INT: int[][] intValuesMV = _transformFunction.transformToIntValuesMV(valueBlock); diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/CoalesceTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/CoalesceTransformFunction.java index d8e512b584..322119f824 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/CoalesceTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/CoalesceTransformFunction.java @@ -112,9 +112,7 @@ public class CoalesceTransformFunction extends BaseTransformFunction { */ private int[] getIntTransformResults(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[length]; - } + initIntValuesSV(length); int width = _transformFunctions.length; RoaringBitmap[] nullBitMaps = getNullBitMaps(valueBlock, _transformFunctions); int[][] data = new int[width][length]; @@ -146,9 +144,7 @@ public class CoalesceTransformFunction extends BaseTransformFunction { */ private long[] getLongTransformResults(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_longValuesSV == null) { - _longValuesSV = new long[length]; - } + initLongValuesSV(length); int width = _transformFunctions.length; RoaringBitmap[] nullBitMaps = getNullBitMaps(valueBlock, _transformFunctions); long[][] data = new long[width][length]; @@ -180,9 +176,7 @@ public class CoalesceTransformFunction extends BaseTransformFunction { */ private float[] getFloatTransformResults(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_floatValuesSV == null) { - _floatValuesSV = new float[length]; - } + initFloatValuesSV(length); int width = _transformFunctions.length; RoaringBitmap[] nullBitMaps = getNullBitMaps(valueBlock, _transformFunctions); float[][] data = new float[width][length]; @@ -214,9 +208,7 @@ public class CoalesceTransformFunction extends BaseTransformFunction { */ private double[] getDoubleTransformResults(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[length]; - } + initDoubleValuesSV(length); int width = _transformFunctions.length; RoaringBitmap[] nullBitMaps = getNullBitMaps(valueBlock, _transformFunctions); double[][] data = new double[width][length]; @@ -248,9 +240,7 @@ public class CoalesceTransformFunction extends BaseTransformFunction { */ private BigDecimal[] getBigDecimalTransformResults(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_bigDecimalValuesSV == null) { - _bigDecimalValuesSV = new BigDecimal[length]; - } + initBigDecimalValuesSV(length); int width = _transformFunctions.length; RoaringBitmap[] nullBitMaps = getNullBitMaps(valueBlock, _transformFunctions); BigDecimal[][] data = new BigDecimal[width][length]; @@ -282,9 +272,7 @@ public class CoalesceTransformFunction extends BaseTransformFunction { */ private String[] getStringTransformResults(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_stringValuesSV == null) { - _stringValuesSV = new String[length]; - } + initStringValuesSV(length); int width = _transformFunctions.length; RoaringBitmap[] nullBitMaps = getNullBitMaps(valueBlock, _transformFunctions); String[][] data = new String[width][length]; diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DateTimeConversionTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DateTimeConversionTransformFunction.java index 7aa7594d3c..d2e5308716 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DateTimeConversionTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DateTimeConversionTransformFunction.java @@ -127,9 +127,7 @@ public class DateTimeConversionTransformFunction extends BaseTransformFunction { return super.transformToLongValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_longValuesSV == null) { - _longValuesSV = new long[length]; - } + initLongValuesSV(length); if (_dateTimeTransformer instanceof EpochToEpochTransformer) { EpochToEpochTransformer dateTimeTransformer = (EpochToEpochTransformer) _dateTimeTransformer; dateTimeTransformer.transform(_mainTransformFunction.transformToLongValuesSV(valueBlock), _longValuesSV, @@ -148,9 +146,7 @@ public class DateTimeConversionTransformFunction extends BaseTransformFunction { return super.transformToStringValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_stringValuesSV == null) { - _stringValuesSV = new String[length]; - } + initStringValuesSV(length); if (_dateTimeTransformer instanceof EpochToSDFTransformer) { EpochToSDFTransformer dateTimeTransformer = (EpochToSDFTransformer) _dateTimeTransformer; dateTimeTransformer.transform(_mainTransformFunction.transformToLongValuesSV(valueBlock), _stringValuesSV, diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DateTimeTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DateTimeTransformFunction.java index 3f1a2030d6..0f72c39ff4 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DateTimeTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DateTimeTransformFunction.java @@ -72,9 +72,7 @@ public abstract class DateTimeTransformFunction extends BaseTransformFunction { @Override public int[] transformToIntValuesSV(ValueBlock valueBlock) { int numDocs = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[numDocs]; - } + initIntValuesSV(numDocs); long[] timestamps = _timestampsFunction.transformToLongValuesSV(valueBlock); convert(timestamps, numDocs, _intValuesSV); return _intValuesSV; diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DateTruncTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DateTruncTransformFunction.java index 95bda82cc4..83d488038e 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DateTruncTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DateTruncTransformFunction.java @@ -129,9 +129,7 @@ public class DateTruncTransformFunction extends BaseTransformFunction { @Override public long[] transformToLongValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_longValuesSV == null) { - _longValuesSV = new long[length]; - } + initLongValuesSV(length); long[] input = _mainTransformFunction.transformToLongValuesSV(valueBlock); for (int i = 0; i < length; i++) { _longValuesSV[i] = diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DivisionTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DivisionTransformFunction.java index 9b6422dfc9..658e24e1dd 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DivisionTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/DivisionTransformFunction.java @@ -98,9 +98,7 @@ public class DivisionTransformFunction extends BaseTransformFunction { @Override public double[] transformToDoubleValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[length]; - } + initDoubleValuesSV(length); if (_resultDataType == DataType.BIG_DECIMAL) { BigDecimal[] values = transformToBigDecimalValuesSV(valueBlock); ArrayCopyUtils.copy(values, _doubleValuesSV, length); @@ -128,9 +126,7 @@ public class DivisionTransformFunction extends BaseTransformFunction { @Override public BigDecimal[] transformToBigDecimalValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_bigDecimalValuesSV == null) { - _bigDecimalValuesSV = new BigDecimal[length]; - } + initBigDecimalValuesSV(length); if (_resultDataType == DataType.DOUBLE) { double[] values = transformToDoubleValuesSV(valueBlock); ArrayCopyUtils.copy(values, _bigDecimalValuesSV, length); diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ExtractTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ExtractTransformFunction.java index 3b97416ecd..9ea960b6e1 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ExtractTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ExtractTransformFunction.java @@ -61,9 +61,7 @@ public class ExtractTransformFunction extends BaseTransformFunction { @Override public int[] transformToIntValuesSV(ValueBlock valueBlock) { int numDocs = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[numDocs]; - } + initIntValuesSV(numDocs); long[] timestamps = _mainTransformFunction.transformToLongValuesSV(valueBlock); convert(timestamps, numDocs, _intValuesSV); return _intValuesSV; diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/GreatestTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/GreatestTransformFunction.java index a37b3921e2..9a515d9ca8 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/GreatestTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/GreatestTransformFunction.java @@ -32,9 +32,7 @@ public class GreatestTransformFunction extends SelectTupleElementTransformFuncti @Override public int[] transformToIntValuesSV(ValueBlock valueBlock) { int numDocs = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[numDocs]; - } + initIntValuesSV(numDocs); int[] values = _arguments.get(0).transformToIntValuesSV(valueBlock); System.arraycopy(values, 0, _intValuesSV, 0, numDocs); for (int i = 1; i < _arguments.size(); i++) { @@ -49,9 +47,7 @@ public class GreatestTransformFunction extends SelectTupleElementTransformFuncti @Override public long[] transformToLongValuesSV(ValueBlock valueBlock) { int numDocs = valueBlock.getNumDocs(); - if (_longValuesSV == null) { - _longValuesSV = new long[numDocs]; - } + initLongValuesSV(numDocs); long[] values = _arguments.get(0).transformToLongValuesSV(valueBlock); System.arraycopy(values, 0, _longValuesSV, 0, numDocs); for (int i = 1; i < _arguments.size(); i++) { @@ -66,9 +62,7 @@ public class GreatestTransformFunction extends SelectTupleElementTransformFuncti @Override public float[] transformToFloatValuesSV(ValueBlock valueBlock) { int numDocs = valueBlock.getNumDocs(); - if (_floatValuesSV == null) { - _floatValuesSV = new float[numDocs]; - } + initFloatValuesSV(numDocs); float[] values = _arguments.get(0).transformToFloatValuesSV(valueBlock); System.arraycopy(values, 0, _floatValuesSV, 0, numDocs); for (int i = 1; i < _arguments.size(); i++) { @@ -83,9 +77,7 @@ public class GreatestTransformFunction extends SelectTupleElementTransformFuncti @Override public double[] transformToDoubleValuesSV(ValueBlock valueBlock) { int numDocs = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[numDocs]; - } + initDoubleValuesSV(numDocs); double[] values = _arguments.get(0).transformToDoubleValuesSV(valueBlock); System.arraycopy(values, 0, _doubleValuesSV, 0, numDocs); for (int i = 1; i < _arguments.size(); i++) { @@ -100,9 +92,7 @@ public class GreatestTransformFunction extends SelectTupleElementTransformFuncti @Override public BigDecimal[] transformToBigDecimalValuesSV(ValueBlock valueBlock) { int numDocs = valueBlock.getNumDocs(); - if (_bigDecimalValuesSV == null) { - _bigDecimalValuesSV = new BigDecimal[numDocs]; - } + initBigDecimalValuesSV(numDocs); BigDecimal[] values = _arguments.get(0).transformToBigDecimalValuesSV(valueBlock); System.arraycopy(values, 0, _bigDecimalValuesSV, 0, numDocs); for (int i = 1; i < _arguments.size(); i++) { @@ -117,9 +107,7 @@ public class GreatestTransformFunction extends SelectTupleElementTransformFuncti @Override public String[] transformToStringValuesSV(ValueBlock valueBlock) { int numDocs = valueBlock.getNumDocs(); - if (_stringValuesSV == null) { - _stringValuesSV = new String[numDocs]; - } + initStringValuesSV(numDocs); String[] values = _arguments.get(0).transformToStringValuesSV(valueBlock); System.arraycopy(values, 0, _stringValuesSV, 0, numDocs); for (int i = 1; i < _arguments.size(); i++) { diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/GroovyTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/GroovyTransformFunction.java index f20a1f40bb..6aba7ff0cd 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/GroovyTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/GroovyTransformFunction.java @@ -35,7 +35,6 @@ import org.apache.commons.lang3.EnumUtils; import org.apache.pinot.core.operator.ColumnContext; import org.apache.pinot.core.operator.blocks.ValueBlock; import org.apache.pinot.core.operator.transform.TransformResultMetadata; -import org.apache.pinot.core.plan.DocIdSetPlanNode; import org.apache.pinot.segment.local.function.GroovyFunctionEvaluator; import org.apache.pinot.spi.data.FieldSpec.DataType; import org.apache.pinot.spi.utils.JsonUtils; @@ -222,9 +221,7 @@ public class GroovyTransformFunction extends BaseTransformFunction { @Override public int[] transformToIntValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[length]; - } + initIntValuesSV(length); for (int i = 0; i < _numGroovyArgs; i++) { _sourceArrays[i] = _transformToValuesFunctions[i].apply(_groovyArguments[i], valueBlock); } @@ -240,9 +237,7 @@ public class GroovyTransformFunction extends BaseTransformFunction { @Override public long[] transformToLongValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_longValuesSV == null) { - _longValuesSV = new long[length]; - } + initLongValuesSV(length); for (int i = 0; i < _numGroovyArgs; i++) { _sourceArrays[i] = _transformToValuesFunctions[i].apply(_groovyArguments[i], valueBlock); } @@ -258,9 +253,7 @@ public class GroovyTransformFunction extends BaseTransformFunction { @Override public float[] transformToFloatValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_floatValuesSV == null) { - _floatValuesSV = new float[length]; - } + initFloatValuesSV(length); for (int i = 0; i < _numGroovyArgs; i++) { _sourceArrays[i] = _transformToValuesFunctions[i].apply(_groovyArguments[i], valueBlock); } @@ -275,13 +268,11 @@ public class GroovyTransformFunction extends BaseTransformFunction { @Override public double[] transformToDoubleValuesSV(ValueBlock valueBlock) { - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[DocIdSetPlanNode.MAX_DOC_PER_CALL]; - } + int length = valueBlock.getNumDocs(); + initDoubleValuesSV(length); for (int i = 0; i < _numGroovyArgs; i++) { _sourceArrays[i] = _transformToValuesFunctions[i].apply(_groovyArguments[i], valueBlock); } - int length = valueBlock.getNumDocs(); for (int i = 0; i < length; i++) { for (int j = 0; j < _numGroovyArgs; j++) { _bindingValues[j] = _fetchElementFunctions[j].apply(_sourceArrays[j], i); @@ -294,9 +285,7 @@ public class GroovyTransformFunction extends BaseTransformFunction { @Override public BigDecimal[] transformToBigDecimalValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_bigDecimalValuesSV == null) { - _bigDecimalValuesSV = new BigDecimal[length]; - } + initBigDecimalValuesSV(length); for (int i = 0; i < _numGroovyArgs; i++) { _sourceArrays[i] = _transformToValuesFunctions[i].apply(_groovyArguments[i], valueBlock); } @@ -312,9 +301,7 @@ public class GroovyTransformFunction extends BaseTransformFunction { @Override public String[] transformToStringValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_stringValuesSV == null) { - _stringValuesSV = new String[length]; - } + initStringValuesSV(length); for (int i = 0; i < _numGroovyArgs; i++) { _sourceArrays[i] = _transformToValuesFunctions[i].apply(_groovyArguments[i], valueBlock); } @@ -330,9 +317,7 @@ public class GroovyTransformFunction extends BaseTransformFunction { @Override public int[][] transformToIntValuesMV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_intValuesMV == null) { - _intValuesMV = new int[length][]; - } + initIntValuesMV(length); for (int i = 0; i < _numGroovyArgs; i++) { _sourceArrays[i] = _transformToValuesFunctions[i].apply(_groovyArguments[i], valueBlock); } @@ -355,9 +340,7 @@ public class GroovyTransformFunction extends BaseTransformFunction { @Override public long[][] transformToLongValuesMV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_longValuesMV == null) { - _longValuesMV = new long[length][]; - } + initLongValuesMV(length); for (int i = 0; i < _numGroovyArgs; i++) { _sourceArrays[i] = _transformToValuesFunctions[i].apply(_groovyArguments[i], valueBlock); } @@ -380,9 +363,7 @@ public class GroovyTransformFunction extends BaseTransformFunction { @Override public float[][] transformToFloatValuesMV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_floatValuesMV == null) { - _floatValuesMV = new float[length][]; - } + initFloatValuesMV(length); for (int i = 0; i < _numGroovyArgs; i++) { _sourceArrays[i] = _transformToValuesFunctions[i].apply(_groovyArguments[i], valueBlock); } @@ -405,9 +386,7 @@ public class GroovyTransformFunction extends BaseTransformFunction { @Override public double[][] transformToDoubleValuesMV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_doubleValuesMV == null) { - _doubleValuesMV = new double[length][]; - } + initDoubleValuesMV(length); for (int i = 0; i < _numGroovyArgs; i++) { _sourceArrays[i] = _transformToValuesFunctions[i].apply(_groovyArguments[i], valueBlock); } @@ -429,13 +408,11 @@ public class GroovyTransformFunction extends BaseTransformFunction { @Override public String[][] transformToStringValuesMV(ValueBlock valueBlock) { - if (_stringValuesMV == null) { - _stringValuesMV = new String[DocIdSetPlanNode.MAX_DOC_PER_CALL][]; - } + int length = valueBlock.getNumDocs(); + initStringValuesMV(length); for (int i = 0; i < _numGroovyArgs; i++) { _sourceArrays[i] = _transformToValuesFunctions[i].apply(_groovyArguments[i], valueBlock); } - int length = valueBlock.getNumDocs(); for (int i = 0; i < length; i++) { for (int j = 0; j < _numGroovyArgs; j++) { _bindingValues[j] = _fetchElementFunctions[j].apply(_sourceArrays[j], i); diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/InIdSetTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/InIdSetTransformFunction.java index 7d5401e0b7..a1cd65f95d 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/InIdSetTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/InIdSetTransformFunction.java @@ -74,9 +74,7 @@ public class InIdSetTransformFunction extends BaseTransformFunction { @Override public int[] transformToIntValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[length]; - } + initIntValuesSV(length); DataType storedType = _transformFunction.getResultMetadata().getDataType().getStoredType(); switch (storedType) { case INT: diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/InTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/InTransformFunction.java index 1fd881a5a6..b828a82f70 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/InTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/InTransformFunction.java @@ -139,13 +139,7 @@ public class InTransformFunction extends BaseTransformFunction { @Override public int[] transformToIntValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - - if (_intValuesSV == null) { - _intValuesSV = new int[length]; - } else { - Arrays.fill(_intValuesSV, 0); - } - + initZeroFillingIntValuesSV(length); TransformResultMetadata mainFunctionMetadata = _mainFunction.getResultMetadata(); DataType storedType = mainFunctionMetadata.getDataType().getStoredType(); if (_valueSet != null) { diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/IsNotNullTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/IsNotNullTransformFunction.java index 1cfbf4dafc..538576dd51 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/IsNotNullTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/IsNotNullTransformFunction.java @@ -64,9 +64,7 @@ public class IsNotNullTransformFunction extends BaseTransformFunction { @Override public int[] transformToIntValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[length]; - } + initIntValuesSV(length); Arrays.fill(_intValuesSV, 1); int[] docIds = valueBlock.getDocIds(); assert docIds != null; diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/IsNullTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/IsNullTransformFunction.java index fa4afc3851..13c28cb981 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/IsNullTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/IsNullTransformFunction.java @@ -64,10 +64,7 @@ public class IsNullTransformFunction extends BaseTransformFunction { @Override public int[] transformToIntValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[length]; - } - Arrays.fill(_intValuesSV, 0); + initZeroFillingIntValuesSV(length); int[] docIds = valueBlock.getDocIds(); assert docIds != null; if (_nullValueVectorIterator != null) { diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/JsonExtractKeyTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/JsonExtractKeyTransformFunction.java index e98fd15d16..08a3d5f765 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/JsonExtractKeyTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/JsonExtractKeyTransformFunction.java @@ -86,9 +86,7 @@ public class JsonExtractKeyTransformFunction extends BaseTransformFunction { @Override public String[][] transformToStringValuesMV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_stringValuesMV == null) { - _stringValuesMV = new String[length][]; - } + initStringValuesMV(length); String[] jsonStrings = _jsonFieldTransformFunction.transformToStringValuesSV(valueBlock); for (int i = 0; i < length; i++) { List<String> values = JSON_PARSER_CONTEXT.parse(jsonStrings[i]).read(_jsonPath); diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/JsonExtractScalarTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/JsonExtractScalarTransformFunction.java index b9ef7f0e11..718eca8be1 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/JsonExtractScalarTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/JsonExtractScalarTransformFunction.java @@ -127,10 +127,7 @@ public class JsonExtractScalarTransformFunction extends BaseTransformFunction { @Override public int[] transformToIntValuesSV(ValueBlock valueBlock) { - int numDocs = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[numDocs]; - } + initIntValuesSV(valueBlock.getNumDocs()); if (_jsonFieldTransformFunction instanceof PushDownTransformFunction && valueBlock instanceof ProjectionBlock) { ((PushDownTransformFunction) _jsonFieldTransformFunction).transformToIntValuesSV((ProjectionBlock) valueBlock, _jsonPathEvaluator, _intValuesSV); @@ -170,10 +167,7 @@ public class JsonExtractScalarTransformFunction extends BaseTransformFunction { @Override public long[] transformToLongValuesSV(ValueBlock valueBlock) { - int numDocs = valueBlock.getNumDocs(); - if (_longValuesSV == null) { - _longValuesSV = new long[numDocs]; - } + initLongValuesSV(valueBlock.getNumDocs()); if (_jsonFieldTransformFunction instanceof PushDownTransformFunction && valueBlock instanceof ProjectionBlock) { ((PushDownTransformFunction) _jsonFieldTransformFunction).transformToLongValuesSV((ProjectionBlock) valueBlock, _jsonPathEvaluator, _longValuesSV); @@ -213,10 +207,7 @@ public class JsonExtractScalarTransformFunction extends BaseTransformFunction { @Override public float[] transformToFloatValuesSV(ValueBlock valueBlock) { - int numDocs = valueBlock.getNumDocs(); - if (_floatValuesSV == null) { - _floatValuesSV = new float[numDocs]; - } + initFloatValuesSV(valueBlock.getNumDocs()); if (_jsonFieldTransformFunction instanceof PushDownTransformFunction && valueBlock instanceof ProjectionBlock) { ((PushDownTransformFunction) _jsonFieldTransformFunction).transformToFloatValuesSV((ProjectionBlock) valueBlock, _jsonPathEvaluator, _floatValuesSV); @@ -255,10 +246,7 @@ public class JsonExtractScalarTransformFunction extends BaseTransformFunction { @Override public double[] transformToDoubleValuesSV(ValueBlock valueBlock) { - int numDocs = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[numDocs]; - } + initDoubleValuesSV(valueBlock.getNumDocs()); if (_jsonFieldTransformFunction instanceof PushDownTransformFunction && valueBlock instanceof ProjectionBlock) { ((PushDownTransformFunction) _jsonFieldTransformFunction).transformToDoubleValuesSV((ProjectionBlock) valueBlock, _jsonPathEvaluator, _doubleValuesSV); @@ -297,10 +285,7 @@ public class JsonExtractScalarTransformFunction extends BaseTransformFunction { @Override public BigDecimal[] transformToBigDecimalValuesSV(ValueBlock valueBlock) { - int numDocs = valueBlock.getNumDocs(); - if (_bigDecimalValuesSV == null) { - _bigDecimalValuesSV = new BigDecimal[numDocs]; - } + initBigDecimalValuesSV(valueBlock.getNumDocs()); if (_jsonFieldTransformFunction instanceof PushDownTransformFunction && valueBlock instanceof ProjectionBlock) { ((PushDownTransformFunction) _jsonFieldTransformFunction).transformToBigDecimalValuesSV( (ProjectionBlock) valueBlock, _jsonPathEvaluator, _bigDecimalValuesSV); @@ -339,10 +324,7 @@ public class JsonExtractScalarTransformFunction extends BaseTransformFunction { @Override public String[] transformToStringValuesSV(ValueBlock valueBlock) { - int numDocs = valueBlock.getNumDocs(); - if (_stringValuesSV == null) { - _stringValuesSV = new String[numDocs]; - } + initStringValuesSV(valueBlock.getNumDocs()); if (_jsonFieldTransformFunction instanceof PushDownTransformFunction && valueBlock instanceof ProjectionBlock) { ((PushDownTransformFunction) _jsonFieldTransformFunction).transformToStringValuesSV((ProjectionBlock) valueBlock, _jsonPathEvaluator, _stringValuesSV); @@ -381,10 +363,7 @@ public class JsonExtractScalarTransformFunction extends BaseTransformFunction { @Override public int[][] transformToIntValuesMV(ValueBlock valueBlock) { - int numDocs = valueBlock.getNumDocs(); - if (_intValuesMV == null) { - _intValuesMV = new int[numDocs][]; - } + initIntValuesMV(valueBlock.getNumDocs()); if (_jsonFieldTransformFunction instanceof PushDownTransformFunction && valueBlock instanceof ProjectionBlock) { ((PushDownTransformFunction) _jsonFieldTransformFunction).transformToIntValuesMV((ProjectionBlock) valueBlock, _jsonPathEvaluator, _intValuesMV); @@ -420,10 +399,7 @@ public class JsonExtractScalarTransformFunction extends BaseTransformFunction { @Override public long[][] transformToLongValuesMV(ValueBlock valueBlock) { - int numDocs = valueBlock.getNumDocs(); - if (_longValuesMV == null) { - _longValuesMV = new long[numDocs][]; - } + initLongValuesMV(valueBlock.getNumDocs()); if (_jsonFieldTransformFunction instanceof PushDownTransformFunction && valueBlock instanceof ProjectionBlock) { ((PushDownTransformFunction) _jsonFieldTransformFunction).transformToLongValuesMV((ProjectionBlock) valueBlock, _jsonPathEvaluator, _longValuesMV); @@ -459,10 +435,7 @@ public class JsonExtractScalarTransformFunction extends BaseTransformFunction { @Override public float[][] transformToFloatValuesMV(ValueBlock valueBlock) { - int numDocs = valueBlock.getNumDocs(); - if (_floatValuesMV == null) { - _floatValuesMV = new float[numDocs][]; - } + initFloatValuesMV(valueBlock.getNumDocs()); if (_jsonFieldTransformFunction instanceof PushDownTransformFunction && valueBlock instanceof ProjectionBlock) { ((PushDownTransformFunction) _jsonFieldTransformFunction).transformToFloatValuesMV((ProjectionBlock) valueBlock, _jsonPathEvaluator, _floatValuesMV); @@ -498,10 +471,7 @@ public class JsonExtractScalarTransformFunction extends BaseTransformFunction { @Override public double[][] transformToDoubleValuesMV(ValueBlock valueBlock) { - int numDocs = valueBlock.getNumDocs(); - if (_doubleValuesMV == null) { - _doubleValuesMV = new double[numDocs][]; - } + initDoubleValuesMV(valueBlock.getNumDocs()); if (_jsonFieldTransformFunction instanceof PushDownTransformFunction && valueBlock instanceof ProjectionBlock) { ((PushDownTransformFunction) _jsonFieldTransformFunction).transformToDoubleValuesMV((ProjectionBlock) valueBlock, _jsonPathEvaluator, _doubleValuesMV); @@ -537,10 +507,7 @@ public class JsonExtractScalarTransformFunction extends BaseTransformFunction { @Override public String[][] transformToStringValuesMV(ValueBlock valueBlock) { - int numDocs = valueBlock.getNumDocs(); - if (_stringValuesMV == null || _stringValuesMV.length < numDocs) { - _stringValuesMV = new String[numDocs][]; - } + initStringValuesMV(valueBlock.getNumDocs()); if (_jsonFieldTransformFunction instanceof PushDownTransformFunction && valueBlock instanceof ProjectionBlock) { ((PushDownTransformFunction) _jsonFieldTransformFunction).transformToStringValuesMV((ProjectionBlock) valueBlock, _jsonPathEvaluator, _stringValuesMV); diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/LeastTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/LeastTransformFunction.java index 4ce42672e4..8891e2928b 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/LeastTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/LeastTransformFunction.java @@ -32,9 +32,7 @@ public class LeastTransformFunction extends SelectTupleElementTransformFunction @Override public int[] transformToIntValuesSV(ValueBlock valueBlock) { int numDocs = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[numDocs]; - } + initIntValuesSV(numDocs); int[] values = _arguments.get(0).transformToIntValuesSV(valueBlock); System.arraycopy(values, 0, _intValuesSV, 0, numDocs); for (int i = 1; i < _arguments.size(); i++) { @@ -49,9 +47,7 @@ public class LeastTransformFunction extends SelectTupleElementTransformFunction @Override public long[] transformToLongValuesSV(ValueBlock valueBlock) { int numDocs = valueBlock.getNumDocs(); - if (_longValuesSV == null) { - _longValuesSV = new long[numDocs]; - } + initLongValuesSV(numDocs); long[] values = _arguments.get(0).transformToLongValuesSV(valueBlock); System.arraycopy(values, 0, _longValuesSV, 0, numDocs); for (int i = 1; i < _arguments.size(); i++) { @@ -66,9 +62,7 @@ public class LeastTransformFunction extends SelectTupleElementTransformFunction @Override public float[] transformToFloatValuesSV(ValueBlock valueBlock) { int numDocs = valueBlock.getNumDocs(); - if (_floatValuesSV == null) { - _floatValuesSV = new float[numDocs]; - } + initFloatValuesSV(numDocs); float[] values = _arguments.get(0).transformToFloatValuesSV(valueBlock); System.arraycopy(values, 0, _floatValuesSV, 0, numDocs); for (int i = 1; i < _arguments.size(); i++) { @@ -83,9 +77,7 @@ public class LeastTransformFunction extends SelectTupleElementTransformFunction @Override public double[] transformToDoubleValuesSV(ValueBlock valueBlock) { int numDocs = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[numDocs]; - } + initDoubleValuesSV(numDocs); double[] values = _arguments.get(0).transformToDoubleValuesSV(valueBlock); System.arraycopy(values, 0, _doubleValuesSV, 0, numDocs); for (int i = 1; i < _arguments.size(); i++) { @@ -100,9 +92,7 @@ public class LeastTransformFunction extends SelectTupleElementTransformFunction @Override public BigDecimal[] transformToBigDecimalValuesSV(ValueBlock valueBlock) { int numDocs = valueBlock.getNumDocs(); - if (_bigDecimalValuesSV == null) { - _bigDecimalValuesSV = new BigDecimal[numDocs]; - } + initBigDecimalValuesSV(numDocs); BigDecimal[] values = _arguments.get(0).transformToBigDecimalValuesSV(valueBlock); System.arraycopy(values, 0, _bigDecimalValuesSV, 0, numDocs); for (int i = 1; i < _arguments.size(); i++) { @@ -117,9 +107,7 @@ public class LeastTransformFunction extends SelectTupleElementTransformFunction @Override public String[] transformToStringValuesSV(ValueBlock valueBlock) { int numDocs = valueBlock.getNumDocs(); - if (_stringValuesSV == null) { - _stringValuesSV = new String[numDocs]; - } + initStringValuesSV(numDocs); String[] values = _arguments.get(0).transformToStringValuesSV(valueBlock); System.arraycopy(values, 0, _stringValuesSV, 0, numDocs); for (int i = 1; i < _arguments.size(); i++) { diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/LogicalOperatorTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/LogicalOperatorTransformFunction.java index a7bb06597d..a7e8606028 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/LogicalOperatorTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/LogicalOperatorTransformFunction.java @@ -59,9 +59,7 @@ public abstract class LogicalOperatorTransformFunction extends BaseTransformFunc @Override public int[] transformToIntValuesSV(ValueBlock valueBlock) { int numDocs = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[numDocs]; - } + initIntValuesSV(numDocs); System.arraycopy(_arguments.get(0).transformToIntValuesSV(valueBlock), 0, _intValuesSV, 0, numDocs); int numArguments = _arguments.size(); for (int i = 1; i < numArguments; i++) { diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/LookupTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/LookupTransformFunction.java index f67b24fe1d..74e516ba34 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/LookupTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/LookupTransformFunction.java @@ -229,10 +229,7 @@ public class LookupTransformFunction extends BaseTransformFunction { if (_lookupColumnFieldSpec.getDataType().getStoredType() != DataType.INT) { return super.transformToIntValuesSV(valueBlock); } - int numDocs = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[numDocs]; - } + initIntValuesSV(valueBlock.getNumDocs()); lookup(valueBlock, this::setIntSV); return _intValuesSV; } @@ -242,10 +239,7 @@ public class LookupTransformFunction extends BaseTransformFunction { if (_lookupColumnFieldSpec.getDataType().getStoredType() != DataType.LONG) { return super.transformToLongValuesSV(valueBlock); } - int numDocs = valueBlock.getNumDocs(); - if (_longValuesSV == null) { - _longValuesSV = new long[numDocs]; - } + initLongValuesSV(valueBlock.getNumDocs()); lookup(valueBlock, this::setLongSV); return _longValuesSV; } @@ -255,10 +249,7 @@ public class LookupTransformFunction extends BaseTransformFunction { if (_lookupColumnFieldSpec.getDataType().getStoredType() != DataType.FLOAT) { return super.transformToFloatValuesSV(valueBlock); } - int numDocs = valueBlock.getNumDocs(); - if (_floatValuesSV == null) { - _floatValuesSV = new float[numDocs]; - } + initFloatValuesSV(valueBlock.getNumDocs()); lookup(valueBlock, this::setFloatSV); return _floatValuesSV; } @@ -268,10 +259,7 @@ public class LookupTransformFunction extends BaseTransformFunction { if (_lookupColumnFieldSpec.getDataType().getStoredType() != DataType.DOUBLE) { return super.transformToDoubleValuesSV(valueBlock); } - int numDocs = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[numDocs]; - } + initDoubleValuesSV(valueBlock.getNumDocs()); lookup(valueBlock, this::setDoubleSV); return _doubleValuesSV; } @@ -281,10 +269,7 @@ public class LookupTransformFunction extends BaseTransformFunction { if (_lookupColumnFieldSpec.getDataType().getStoredType() != DataType.STRING) { return super.transformToStringValuesSV(valueBlock); } - int numDocs = valueBlock.getNumDocs(); - if (_stringValuesSV == null) { - _stringValuesSV = new String[numDocs]; - } + initStringValuesSV(valueBlock.getNumDocs()); lookup(valueBlock, this::setStringSV); return _stringValuesSV; } @@ -294,10 +279,7 @@ public class LookupTransformFunction extends BaseTransformFunction { if (_lookupColumnFieldSpec.getDataType().getStoredType() != DataType.BYTES) { return super.transformToBytesValuesSV(valueBlock); } - int numDocs = valueBlock.getNumDocs(); - if (_bytesValuesSV == null) { - _bytesValuesSV = new byte[numDocs][]; - } + initBytesValuesSV(valueBlock.getNumDocs()); lookup(valueBlock, this::setBytesSV); return _bytesValuesSV; } @@ -307,10 +289,7 @@ public class LookupTransformFunction extends BaseTransformFunction { if (_lookupColumnFieldSpec.getDataType().getStoredType() != DataType.INT) { return super.transformToIntValuesMV(valueBlock); } - int numDocs = valueBlock.getNumDocs(); - if (_intValuesMV == null) { - _intValuesMV = new int[numDocs][]; - } + initIntValuesMV(valueBlock.getNumDocs()); lookup(valueBlock, this::setIntMV); return _intValuesMV; } @@ -320,10 +299,7 @@ public class LookupTransformFunction extends BaseTransformFunction { if (_lookupColumnFieldSpec.getDataType().getStoredType() != DataType.LONG) { return super.transformToLongValuesMV(valueBlock); } - int numDocs = valueBlock.getNumDocs(); - if (_longValuesMV == null) { - _longValuesMV = new long[numDocs][]; - } + initLongValuesMV(valueBlock.getNumDocs()); lookup(valueBlock, this::setLongMV); return _longValuesMV; } @@ -333,10 +309,7 @@ public class LookupTransformFunction extends BaseTransformFunction { if (_lookupColumnFieldSpec.getDataType().getStoredType() != DataType.FLOAT) { return super.transformToFloatValuesMV(valueBlock); } - int numDocs = valueBlock.getNumDocs(); - if (_floatValuesMV == null) { - _floatValuesMV = new float[numDocs][]; - } + initFloatValuesMV(valueBlock.getNumDocs()); lookup(valueBlock, this::setFloatMV); return _floatValuesMV; } @@ -346,10 +319,7 @@ public class LookupTransformFunction extends BaseTransformFunction { if (_lookupColumnFieldSpec.getDataType().getStoredType() != DataType.DOUBLE) { return super.transformToDoubleValuesMV(valueBlock); } - int numDocs = valueBlock.getNumDocs(); - if (_doubleValuesMV == null) { - _doubleValuesMV = new double[numDocs][]; - } + initDoubleValuesMV(valueBlock.getNumDocs()); lookup(valueBlock, this::setDoubleMV); return _doubleValuesMV; } @@ -359,10 +329,7 @@ public class LookupTransformFunction extends BaseTransformFunction { if (_lookupColumnFieldSpec.getDataType().getStoredType() != DataType.STRING) { return super.transformToStringValuesMV(valueBlock); } - int numDocs = valueBlock.getNumDocs(); - if (_stringValuesMV == null) { - _stringValuesMV = new String[numDocs][]; - } + initStringValuesMV(valueBlock.getNumDocs()); lookup(valueBlock, this::setStringMV); return _stringValuesMV; } diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/MapValueTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/MapValueTransformFunction.java index f171435d70..1ead2aa6aa 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/MapValueTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/MapValueTransformFunction.java @@ -97,7 +97,7 @@ public class MapValueTransformFunction extends BaseTransformFunction { @Override public int[] transformToDictIdsSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_dictIds == null) { + if (_dictIds == null || _dictIds.length < length) { _dictIds = new int[length]; } int[][] keyDictIdsMV = _keyColumnFunction.transformToDictIdsMV(valueBlock); diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ModuloTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ModuloTransformFunction.java index 53d1b701e4..73413be7c4 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ModuloTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ModuloTransformFunction.java @@ -75,9 +75,7 @@ public class ModuloTransformFunction extends BaseTransformFunction { @Override public double[] transformToDoubleValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[length]; - } + initDoubleValuesSV(length); if (_firstTransformFunction == null) { Arrays.fill(_doubleValuesSV, 0, length, _firstLiteral); } else { diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/MultiplicationTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/MultiplicationTransformFunction.java index 2413e2e8c1..d62cc1ef9d 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/MultiplicationTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/MultiplicationTransformFunction.java @@ -88,9 +88,7 @@ public class MultiplicationTransformFunction extends BaseTransformFunction { @Override public double[] transformToDoubleValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[length]; - } + initDoubleValuesSV(length); if (_resultDataType == DataType.BIG_DECIMAL) { BigDecimal[] values = transformToBigDecimalValuesSV(valueBlock); ArrayCopyUtils.copy(values, _doubleValuesSV, length); @@ -109,9 +107,7 @@ public class MultiplicationTransformFunction extends BaseTransformFunction { @Override public BigDecimal[] transformToBigDecimalValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_bigDecimalValuesSV == null) { - _bigDecimalValuesSV = new BigDecimal[length]; - } + initBigDecimalValuesSV(length); if (_resultDataType == DataType.DOUBLE) { double[] values = transformToDoubleValuesSV(valueBlock); ArrayCopyUtils.copy(values, _bigDecimalValuesSV, length); diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/NotOperatorTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/NotOperatorTransformFunction.java index e62769d7ba..1e9a123566 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/NotOperatorTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/NotOperatorTransformFunction.java @@ -70,9 +70,7 @@ public class NotOperatorTransformFunction extends BaseTransformFunction { @Override public int[] transformToIntValuesSV(ValueBlock valueBlock) { int numDocs = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[numDocs]; - } + initIntValuesSV(numDocs); int[] intValues = _argument.transformToIntValuesSV(valueBlock); for (int i = 0; i < numDocs; i++) { _intValuesSV[i] = getLogicalNegate(intValues[i]); diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/PowerTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/PowerTransformFunction.java index fb69c2ad81..f597447524 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/PowerTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/PowerTransformFunction.java @@ -65,9 +65,7 @@ public class PowerTransformFunction extends BaseTransformFunction { @Override public double[] transformToDoubleValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[length]; - } + initDoubleValuesSV(length); double[] leftValues = _leftTransformFunction.transformToDoubleValuesSV(valueBlock); if (_fixedExponent) { for (int i = 0; i < length; i++) { diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/RegexpExtractTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/RegexpExtractTransformFunction.java index 885a3d7955..5670f92b76 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/RegexpExtractTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/RegexpExtractTransformFunction.java @@ -97,9 +97,7 @@ public class RegexpExtractTransformFunction extends BaseTransformFunction { @Override public String[] transformToStringValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_stringValuesSV == null) { - _stringValuesSV = new String[length]; - } + initStringValuesSV(length); String[] valuesSV = _valueFunction.transformToStringValuesSV(valueBlock); for (int i = 0; i < length; i++) { Matcher matcher = _regexp.matcher(valuesSV[i]); diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/RoundDecimalTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/RoundDecimalTransformFunction.java index cffa1993ef..d19bdf0664 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/RoundDecimalTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/RoundDecimalTransformFunction.java @@ -85,9 +85,7 @@ public class RoundDecimalTransformFunction extends BaseTransformFunction { @Override public double[] transformToDoubleValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[length]; - } + initDoubleValuesSV(length); double[] leftValues = _leftTransformFunction.transformToDoubleValuesSV(valueBlock); if (_fixedScale) { for (int i = 0; i < length; i++) { diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ScalarTransformFunctionWrapper.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ScalarTransformFunctionWrapper.java index 8c3e93e4e6..522d8e902a 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ScalarTransformFunctionWrapper.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ScalarTransformFunctionWrapper.java @@ -113,9 +113,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction { return super.transformToIntValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_intValuesSV == null) { - _intValuesSV = new int[length]; - } + initIntValuesSV(length); getNonLiteralValues(valueBlock); for (int i = 0; i < length; i++) { for (int j = 0; j < _numNonLiteralArguments; j++) { @@ -132,9 +130,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction { return super.transformToLongValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_longValuesSV == null) { - _longValuesSV = new long[length]; - } + initLongValuesSV(length); getNonLiteralValues(valueBlock); for (int i = 0; i < length; i++) { for (int j = 0; j < _numNonLiteralArguments; j++) { @@ -151,9 +147,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction { return super.transformToFloatValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_floatValuesSV == null) { - _floatValuesSV = new float[length]; - } + initFloatValuesSV(length); getNonLiteralValues(valueBlock); for (int i = 0; i < length; i++) { for (int j = 0; j < _numNonLiteralArguments; j++) { @@ -170,9 +164,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction { return super.transformToDoubleValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[length]; - } + initDoubleValuesSV(length); getNonLiteralValues(valueBlock); for (int i = 0; i < length; i++) { for (int j = 0; j < _numNonLiteralArguments; j++) { @@ -189,9 +181,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction { return super.transformToBigDecimalValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_bigDecimalValuesSV == null) { - _bigDecimalValuesSV = new BigDecimal[length]; - } + initBigDecimalValuesSV(length); getNonLiteralValues(valueBlock); for (int i = 0; i < length; i++) { for (int j = 0; j < _numNonLiteralArguments; j++) { @@ -208,9 +198,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction { return super.transformToStringValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_stringValuesSV == null) { - _stringValuesSV = new String[length]; - } + initStringValuesSV(length); getNonLiteralValues(valueBlock); for (int i = 0; i < length; i++) { for (int j = 0; j < _numNonLiteralArguments; j++) { @@ -229,9 +217,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction { return super.transformToBytesValuesSV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_bytesValuesSV == null) { - _bytesValuesSV = new byte[length][]; - } + initBytesValuesSV(length); getNonLiteralValues(valueBlock); for (int i = 0; i < length; i++) { for (int j = 0; j < _numNonLiteralArguments; j++) { @@ -248,9 +234,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction { return super.transformToIntValuesMV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_intValuesMV == null) { - _intValuesMV = new int[length][]; - } + initIntValuesMV(length); getNonLiteralValues(valueBlock); for (int i = 0; i < length; i++) { for (int j = 0; j < _numNonLiteralArguments; j++) { @@ -267,9 +251,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction { return super.transformToLongValuesMV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_longValuesMV == null) { - _longValuesMV = new long[length][]; - } + initLongValuesMV(length); getNonLiteralValues(valueBlock); for (int i = 0; i < length; i++) { for (int j = 0; j < _numNonLiteralArguments; j++) { @@ -286,9 +268,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction { return super.transformToFloatValuesMV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_floatValuesMV == null) { - _floatValuesMV = new float[length][]; - } + initFloatValuesMV(length); getNonLiteralValues(valueBlock); for (int i = 0; i < length; i++) { for (int j = 0; j < _numNonLiteralArguments; j++) { @@ -305,9 +285,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction { return super.transformToDoubleValuesMV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_doubleValuesMV == null) { - _doubleValuesMV = new double[length][]; - } + initDoubleValuesMV(length); getNonLiteralValues(valueBlock); for (int i = 0; i < length; i++) { for (int j = 0; j < _numNonLiteralArguments; j++) { @@ -324,9 +302,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction { return super.transformToStringValuesMV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_stringValuesMV == null) { - _stringValuesMV = new String[length][]; - } + initStringValuesMV(length); getNonLiteralValues(valueBlock); for (int i = 0; i < length; i++) { for (int j = 0; j < _numNonLiteralArguments; j++) { diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/SingleParamMathTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/SingleParamMathTransformFunction.java index 770fc5374d..737aeb338a 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/SingleParamMathTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/SingleParamMathTransformFunction.java @@ -72,9 +72,7 @@ public abstract class SingleParamMathTransformFunction extends BaseTransformFunc @Override public double[] transformToDoubleValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[length]; - } + initDoubleValuesSV(length); if (_resultDataType == DataType.BIG_DECIMAL) { BigDecimal[] values = transformToBigDecimalValuesSV(valueBlock); ArrayCopyUtils.copy(values, _doubleValuesSV, length); @@ -88,9 +86,7 @@ public abstract class SingleParamMathTransformFunction extends BaseTransformFunc @Override public BigDecimal[] transformToBigDecimalValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_bigDecimalValuesSV == null) { - _bigDecimalValuesSV = new BigDecimal[length]; - } + initBigDecimalValuesSV(length); if (_resultDataType == DataType.DOUBLE) { double[] values = transformToDoubleValuesSV(valueBlock); ArrayCopyUtils.copy(values, _bigDecimalValuesSV, length); diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/SubtractionTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/SubtractionTransformFunction.java index 6cea63d5c9..b9325c3dd6 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/SubtractionTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/SubtractionTransformFunction.java @@ -97,9 +97,7 @@ public class SubtractionTransformFunction extends BaseTransformFunction { @Override public double[] transformToDoubleValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[length]; - } + initDoubleValuesSV(length); if (_resultDataType == DataType.BIG_DECIMAL) { BigDecimal[] values = transformToBigDecimalValuesSV(valueBlock); ArrayCopyUtils.copy(values, _doubleValuesSV, length); @@ -127,9 +125,7 @@ public class SubtractionTransformFunction extends BaseTransformFunction { @Override public BigDecimal[] transformToBigDecimalValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_bigDecimalValuesSV == null) { - _bigDecimalValuesSV = new BigDecimal[length]; - } + initBigDecimalValuesSV(length); if (_resultDataType == DataType.DOUBLE) { double[] values = transformToDoubleValuesSV(valueBlock); ArrayCopyUtils.copy(values, _bigDecimalValuesSV, length); diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TimeConversionTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TimeConversionTransformFunction.java index 1620d2f2c5..9e238c6cff 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TimeConversionTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TimeConversionTransformFunction.java @@ -67,11 +67,8 @@ public class TimeConversionTransformFunction extends BaseTransformFunction { @Override public long[] transformToLongValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_longValuesSV == null) { - _longValuesSV = new long[length]; - } - _timeUnitTransformer.transform(_mainTransformFunction.transformToLongValuesSV(valueBlock), _longValuesSV, - length); + initLongValuesSV(length); + _timeUnitTransformer.transform(_mainTransformFunction.transformToLongValuesSV(valueBlock), _longValuesSV, length); return _longValuesSV; } } diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TrigonometricTransformFunctions.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TrigonometricTransformFunctions.java index 980b6dc8ce..9fb4a5dacd 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TrigonometricTransformFunctions.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TrigonometricTransformFunctions.java @@ -59,17 +59,12 @@ public class TrigonometricTransformFunctions { @Override public double[] transformToDoubleValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - - if (_doubleValuesSV == null || _doubleValuesSV.length < length) { - _doubleValuesSV = new double[length]; - } - + initDoubleValuesSV(length); double[] leftValues = _leftTransformFunction.transformToDoubleValuesSV(valueBlock); double[] rightValues = _rightTransformFunction.transformToDoubleValuesSV(valueBlock); for (int i = 0; i < length; i++) { _doubleValuesSV[i] = Math.atan2(leftValues[i], rightValues[i]); } - return _doubleValuesSV; } } diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TruncateDecimalTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TruncateDecimalTransformFunction.java index 5aca41b4eb..a68fc990e5 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TruncateDecimalTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/TruncateDecimalTransformFunction.java @@ -83,20 +83,17 @@ public class TruncateDecimalTransformFunction extends BaseTransformFunction { @Override public double[] transformToDoubleValuesSV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); - if (_doubleValuesSV == null) { - _doubleValuesSV = new double[length]; - } + initDoubleValuesSV(length); double[] leftValues = _leftTransformFunction.transformToDoubleValuesSV(valueBlock); if (_fixedScale) { for (int i = 0; i < length; i++) { - _doubleValuesSV[i] = BigDecimal.valueOf(leftValues[i]) - .setScale(_scale, RoundingMode.DOWN).doubleValue(); + _doubleValuesSV[i] = BigDecimal.valueOf(leftValues[i]).setScale(_scale, RoundingMode.DOWN).doubleValue(); } } else if (_rightTransformFunction != null) { int[] rightValues = _rightTransformFunction.transformToIntValuesSV(valueBlock); for (int i = 0; i < length; i++) { - _doubleValuesSV[i] = BigDecimal.valueOf(leftValues[i]) - .setScale(rightValues[i], RoundingMode.DOWN).doubleValue(); + _doubleValuesSV[i] = + BigDecimal.valueOf(leftValues[i]).setScale(rightValues[i], RoundingMode.DOWN).doubleValue(); } } else { for (int i = 0; i < length; i++) { diff --git a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ValueInTransformFunction.java b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ValueInTransformFunction.java index ba0fcfc917..3c6e2f2eaa 100644 --- a/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ValueInTransformFunction.java +++ b/pinot-core/src/main/java/org/apache/pinot/core/operator/transform/function/ValueInTransformFunction.java @@ -55,7 +55,7 @@ public class ValueInTransformFunction extends BaseTransformFunction { private Dictionary _dictionary; private IntSet _dictIdSet; - private int[][] _dictIds; + private int[][] _dictIdsMV; private IntSet _intValueSet; private LongSet _longValueSet; private FloatSet _floatValueSet; @@ -106,6 +106,9 @@ public class ValueInTransformFunction extends BaseTransformFunction { @Override public int[][] transformToDictIdsMV(ValueBlock valueBlock) { int length = valueBlock.getNumDocs(); + if (_dictIdsMV == null || _dictIdsMV.length < length) { + _dictIdsMV = new int[length][]; + } if (_dictIdSet == null) { _dictIdSet = new IntOpenHashSet(); assert _dictionary != null; @@ -115,15 +118,12 @@ public class ValueInTransformFunction extends BaseTransformFunction { _dictIdSet.add(dictId); } } - if (_dictIds == null) { - _dictIds = new int[length][]; - } } int[][] unFilteredDictIds = _mainTransformFunction.transformToDictIdsMV(valueBlock); for (int i = 0; i < length; i++) { - _dictIds[i] = filterInts(_dictIdSet, unFilteredDictIds[i]); + _dictIdsMV[i] = filterInts(_dictIdSet, unFilteredDictIds[i]); } - return _dictIds; + return _dictIdsMV; } @Override @@ -132,14 +132,12 @@ public class ValueInTransformFunction extends BaseTransformFunction { return super.transformToIntValuesMV(valueBlock); } int length = valueBlock.getNumDocs(); + initIntValuesMV(length); if (_intValueSet == null) { _intValueSet = new IntOpenHashSet(); for (String inValue : _stringValueSet) { _intValueSet.add(Integer.parseInt(inValue)); } - if (_intValuesMV == null) { - _intValuesMV = new int[length][]; - } } int[][] unFilteredIntValues = _mainTransformFunction.transformToIntValuesMV(valueBlock); for (int i = 0; i < length; i++) { @@ -154,14 +152,12 @@ public class ValueInTransformFunction extends BaseTransformFunction { return super.transformToLongValuesMV(valueBlock); } int length = valueBlock.getNumDocs(); + initLongValuesMV(length); if (_longValueSet == null) { _longValueSet = new LongOpenHashSet(); for (String inValue : _stringValueSet) { _longValueSet.add(Long.parseLong(inValue)); } - if (_longValuesMV == null) { - _longValuesMV = new long[length][]; - } } long[][] unFilteredLongValues = _mainTransformFunction.transformToLongValuesMV(valueBlock); for (int i = 0; i < length; i++) { @@ -176,14 +172,12 @@ public class ValueInTransformFunction extends BaseTransformFunction { return super.transformToFloatValuesMV(valueBlock); } int length = valueBlock.getNumDocs(); + initFloatValuesMV(length); if (_floatValueSet == null) { _floatValueSet = new FloatOpenHashSet(); for (String inValue : _stringValueSet) { _floatValueSet.add(Float.parseFloat(inValue)); } - if (_floatValuesMV == null) { - _floatValuesMV = new float[length][]; - } } float[][] unFilteredFloatValues = _mainTransformFunction.transformToFloatValuesMV(valueBlock); for (int i = 0; i < length; i++) { @@ -198,14 +192,12 @@ public class ValueInTransformFunction extends BaseTransformFunction { return super.transformToDoubleValuesMV(valueBlock); } int length = valueBlock.getNumDocs(); + initDoubleValuesMV(length); if (_doubleValueSet == null) { _doubleValueSet = new DoubleOpenHashSet(); for (String inValue : _stringValueSet) { _doubleValueSet.add(Double.parseDouble(inValue)); } - if (_doubleValuesMV == null) { - _doubleValuesMV = new double[length][]; - } } double[][] unFilteredDoubleValues = _mainTransformFunction.transformToDoubleValuesMV(valueBlock); for (int i = 0; i < length; i++) { @@ -220,9 +212,7 @@ public class ValueInTransformFunction extends BaseTransformFunction { return super.transformToStringValuesMV(valueBlock); } int length = valueBlock.getNumDocs(); - if (_stringValuesMV == null) { - _stringValuesMV = new String[length][]; - } + initStringValuesMV(length); String[][] unFilteredStringValues = _mainTransformFunction.transformToStringValuesMV(valueBlock); for (int i = 0; i < length; i++) { _stringValuesMV[i] = filterStrings(_stringValueSet, unFilteredStringValues[i]); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org For additional commands, e-mail: commits-h...@pinot.apache.org