You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by ja...@apache.org on 2023/03/31 22:28:39 UTC
[pinot] branch master updated: Allow ValueBlock length to increase in TransformFunction (#10515)
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 <17...@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-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org