You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by kh...@apache.org on 2022/03/26 14:00:13 UTC

[pinot] 02/02: Reuse result arrays if input length is less than existing array length

This is an automated email from the ASF dual-hosted git repository.

kharekartik pushed a commit to branch optimise_memory
in repository https://gitbox.apache.org/repos/asf/pinot.git

commit 6a98978f85a103820c29da80da9de826eba7cbf5
Author: KKcorps <kh...@gmail.com>
AuthorDate: Sat Mar 26 19:27:44 2022 +0530

    Reuse result arrays if input length is less than existing array length
---
 .../function/AdditionTransformFunction.java          |  2 +-
 .../function/ArrayAverageTransformFunction.java      |  2 +-
 .../function/ArrayLengthTransformFunction.java       |  2 +-
 .../function/ArrayMaxTransformFunction.java          | 10 +++++-----
 .../function/ArrayMinTransformFunction.java          | 10 +++++-----
 .../function/ArraySumTransformFunction.java          |  2 +-
 .../transform/function/CastTransformFunction.java    | 12 ++++++------
 .../DateTimeConversionTransformFunction.java         |  4 ++--
 .../function/DivisionTransformFunction.java          |  2 +-
 .../transform/function/InIdSetTransformFunction.java |  2 +-
 .../function/JsonExtractKeyTransformFunction.java    |  2 +-
 .../function/LogicalOperatorTransformFunction.java   |  2 +-
 .../function/MapValueTransformFunction.java          |  2 +-
 .../transform/function/ModuloTransformFunction.java  |  2 +-
 .../function/MultiplicationTransformFunction.java    |  2 +-
 .../function/ScalarTransformFunctionWrapper.java     | 20 ++++++++++----------
 .../function/SingleParamMathTransformFunction.java   |  2 +-
 .../function/SubtractionTransformFunction.java       |  2 +-
 .../function/TimeConversionTransformFunction.java    |  2 +-
 19 files changed, 42 insertions(+), 42 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 43a5da3..5ffd65a 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
@@ -68,7 +68,7 @@ public class AdditionTransformFunction extends BaseTransformFunction {
   public double[] transformToDoubleValuesSV(ProjectionBlock projectionBlock) {
     int length = projectionBlock.getNumDocs();
 
-    if (_sums == null) {
+    if (_sums == null || _sums.length < length) {
       _sums = new double[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 e712656..8c389dc 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
@@ -73,7 +73,7 @@ public class ArrayAverageTransformFunction extends BaseTransformFunction {
   public double[] transformToDoubleValuesSV(ProjectionBlock projectionBlock) {
     int numDocs = projectionBlock.getNumDocs();
 
-    if (_results == null) {
+    if (_results == null || _results.length < numDocs) {
       _results = new double[numDocs];
     }
 
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 9285337..21fc21f 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
@@ -70,7 +70,7 @@ public class ArrayLengthTransformFunction extends BaseTransformFunction {
   public int[] transformToIntValuesSV(ProjectionBlock projectionBlock) {
     int numDocs = projectionBlock.getNumDocs();
 
-    if (_results == null) {
+    if (_results == null || _results.length < numDocs) {
       _results = new int[numDocs];
     }
 
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 b93aebc..46d0fea 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
@@ -82,7 +82,7 @@ public class ArrayMaxTransformFunction extends BaseTransformFunction {
 
     int length = projectionBlock.getNumDocs();
 
-    if (_intValuesSV == null) {
+    if (_intValuesSV == null || _intValuesSV.length < length) {
       _intValuesSV = new int[length];
     }
     int[][] intValuesMV = _argument.transformToIntValuesMV(projectionBlock);
@@ -104,7 +104,7 @@ public class ArrayMaxTransformFunction extends BaseTransformFunction {
 
     int length = projectionBlock.getNumDocs();
 
-    if (_longValuesSV == null) {
+    if (_longValuesSV == null || _longValuesSV.length < length) {
       _longValuesSV = new long[length];
     }
     long[][] longValuesMV = _argument.transformToLongValuesMV(projectionBlock);
@@ -126,7 +126,7 @@ public class ArrayMaxTransformFunction extends BaseTransformFunction {
 
     int length = projectionBlock.getNumDocs();
 
-    if (_floatValuesSV == null) {
+    if (_floatValuesSV == null || _floatValuesSV.length < length) {
       _floatValuesSV = new float[length];
     }
     float[][] floatValuesMV = _argument.transformToFloatValuesMV(projectionBlock);
@@ -148,7 +148,7 @@ public class ArrayMaxTransformFunction extends BaseTransformFunction {
 
     int length = projectionBlock.getNumDocs();
 
-    if (_doubleValuesSV == null) {
+    if (_doubleValuesSV == null || _doubleValuesSV.length < length) {
       _doubleValuesSV = new double[length];
     }
     double[][] doubleValuesMV = _argument.transformToDoubleValuesMV(projectionBlock);
@@ -170,7 +170,7 @@ public class ArrayMaxTransformFunction extends BaseTransformFunction {
 
     int length = projectionBlock.getNumDocs();
 
-    if (_stringValuesSV == null) {
+    if (_stringValuesSV == null || _stringValuesSV.length < length) {
       _stringValuesSV = new String[length];
     }
     String[][] stringValuesMV = _argument.transformToStringValuesMV(projectionBlock);
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 f2be2f9..bc3a95b 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
@@ -82,7 +82,7 @@ public class ArrayMinTransformFunction extends BaseTransformFunction {
 
     int length = projectionBlock.getNumDocs();
 
-    if (_intValuesSV == null) {
+    if (_intValuesSV == null || _intValuesSV.length < length) {
       _intValuesSV = new int[length];
     }
     int[][] intValuesMV = _argument.transformToIntValuesMV(projectionBlock);
@@ -104,7 +104,7 @@ public class ArrayMinTransformFunction extends BaseTransformFunction {
 
     int length = projectionBlock.getNumDocs();
 
-    if (_longValuesSV == null) {
+    if (_longValuesSV == null || _longValuesSV.length < length) {
       _longValuesSV = new long[length];
     }
 
@@ -127,7 +127,7 @@ public class ArrayMinTransformFunction extends BaseTransformFunction {
 
     int length = projectionBlock.getNumDocs();
 
-    if (_floatValuesSV == null) {
+    if (_floatValuesSV == null || _floatValuesSV.length < length) {
       _floatValuesSV = new float[length];
     }
 
@@ -150,7 +150,7 @@ public class ArrayMinTransformFunction extends BaseTransformFunction {
 
     int length = projectionBlock.getNumDocs();
 
-    if (_doubleValuesSV == null) {
+    if (_doubleValuesSV == null || _doubleValuesSV.length < length) {
       _doubleValuesSV = new double[length];
     }
 
@@ -173,7 +173,7 @@ public class ArrayMinTransformFunction extends BaseTransformFunction {
 
     int length = projectionBlock.getNumDocs();
 
-    if (_stringValuesSV == null) {
+    if (_stringValuesSV == null || _stringValuesSV.length < length) {
       _stringValuesSV = new String[length];
     }
 
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 85c86ce..92804ee 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
@@ -73,7 +73,7 @@ public class ArraySumTransformFunction extends BaseTransformFunction {
   public double[] transformToDoubleValuesSV(ProjectionBlock projectionBlock) {
     int length = projectionBlock.getNumDocs();
 
-    if (_results == null) {
+    if (_results == null || _results.length < length) {
       _results = new double[length];
     }
 
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 eb361ca..94dfbf3 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
@@ -101,7 +101,7 @@ public class CastTransformFunction extends BaseTransformFunction {
     } else {
       int numDocs = projectionBlock.getNumDocs();
       
-      if (_intValuesSV == null) {
+      if (_intValuesSV == null || _intValuesSV.length < numDocs) {
         _intValuesSV = new int[numDocs];
       }
       switch (resultStoredType) {
@@ -137,7 +137,7 @@ public class CastTransformFunction extends BaseTransformFunction {
     } else {
       int numDocs = projectionBlock.getNumDocs();
 
-      if (_longValuesSV == null) {
+      if (_longValuesSV == null || _longValuesSV.length < numDocs) {
         _longValuesSV = new long[numDocs];
       }
       switch (resultStoredType) {
@@ -173,7 +173,7 @@ public class CastTransformFunction extends BaseTransformFunction {
     } else {
       int numDocs = projectionBlock.getNumDocs();
 
-      if (_floatValuesSV == null) {
+      if (_floatValuesSV == null || _floatValuesSV.length < numDocs) {
         _floatValuesSV = new float[numDocs];
       }
       switch (resultStoredType) {
@@ -209,7 +209,7 @@ public class CastTransformFunction extends BaseTransformFunction {
     } else {
       int numDocs = projectionBlock.getNumDocs();
 
-      if (_doubleValuesSV == null) {
+      if (_doubleValuesSV == null || _doubleValuesSV.length < numDocs) {
         _doubleValuesSV = new double[numDocs];
       }
       switch (resultStoredType) {
@@ -246,7 +246,7 @@ public class CastTransformFunction extends BaseTransformFunction {
       // Specialize BOOlEAN and TIMESTAMP when casting to STRING
       DataType inputDataType = _transformFunction.getResultMetadata().getDataType();
       if (inputDataType.getStoredType() != inputDataType) {
-        if (_stringValuesSV == null) {
+        if (_stringValuesSV == null || _stringValuesSV.length < numDocs) {
           _stringValuesSV = new String[numDocs];
         }
         if (inputDataType == DataType.BOOLEAN) {
@@ -266,7 +266,7 @@ public class CastTransformFunction extends BaseTransformFunction {
         return _transformFunction.transformToStringValuesSV(projectionBlock);
       }
     } else {
-      if (_stringValuesSV == null) {
+      if (_stringValuesSV == null || _stringValuesSV.length < numDocs) {
         _stringValuesSV = new String[numDocs];
       }
       switch (resultDataType) {
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 d895387..e40435a 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
@@ -129,7 +129,7 @@ public class DateTimeConversionTransformFunction extends BaseTransformFunction {
     if (_resultMetadata == LONG_SV_NO_DICTIONARY_METADATA) {
       int length = projectionBlock.getNumDocs();
 
-      if (_longOutputTimes == null) {
+      if (_longOutputTimes == null || _longOutputTimes.length < length) {
         _longOutputTimes = new long[length];
       }
 
@@ -153,7 +153,7 @@ public class DateTimeConversionTransformFunction extends BaseTransformFunction {
     if (_resultMetadata == STRING_SV_NO_DICTIONARY_METADATA) {
       int length = projectionBlock.getNumDocs();
 
-      if (_stringOutputTimes == null) {
+      if (_stringOutputTimes == null || _stringOutputTimes.length < length) {
         _stringOutputTimes = new String[length];
       }
 
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 c04cb5d..eb40612 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
@@ -79,7 +79,7 @@ public class DivisionTransformFunction extends BaseTransformFunction {
   public double[] transformToDoubleValuesSV(ProjectionBlock projectionBlock) {
     int length = projectionBlock.getNumDocs();
 
-    if (_quotients == null) {
+    if (_quotients == null || _quotients.length < length) {
       _quotients = new double[length];
     }
 
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 9938c65..cc44d9f 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
@@ -77,7 +77,7 @@ public class InIdSetTransformFunction extends BaseTransformFunction {
   public int[] transformToIntValuesSV(ProjectionBlock projectionBlock) {
     int length = projectionBlock.getNumDocs();
 
-    if (_results == null) {
+    if (_results == null || _results.length < length) {
       _results = new int[length];
     }
 
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 df00077..0463788 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
@@ -88,7 +88,7 @@ public class JsonExtractKeyTransformFunction extends BaseTransformFunction {
   public String[][] transformToStringValuesMV(ProjectionBlock projectionBlock) {
     int numDocs = projectionBlock.getNumDocs();
 
-    if (_stringValuesMV == null) {
+    if (_stringValuesMV == null || _stringValuesSV.length < numDocs) {
       _stringValuesMV = new String[numDocs][];
     }
 
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 7818245..a6496da 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
@@ -62,7 +62,7 @@ public abstract class LogicalOperatorTransformFunction extends BaseTransformFunc
   public int[] transformToIntValuesSV(ProjectionBlock projectionBlock) {
     int numDocs = projectionBlock.getNumDocs();
 
-    if (_results == null) {
+    if (_results == null || _results.length < numDocs) {
       _results = new int[numDocs];
     }
     ArrayCopyUtils.copy(_arguments.get(0).transformToIntValuesSV(projectionBlock), _results, numDocs);
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 bdb6b39..45d14a4 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
@@ -99,7 +99,7 @@ public class MapValueTransformFunction extends BaseTransformFunction {
   public int[] transformToDictIdsSV(ProjectionBlock projectionBlock) {
     int length = projectionBlock.getNumDocs();
 
-    if (_dictIds == null) {
+    if (_dictIds == null || _dictIds.length < length) {
       _dictIds = new int[length];
     }
 
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 68cb165..ea1c3e1 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
@@ -79,7 +79,7 @@ public class ModuloTransformFunction extends BaseTransformFunction {
   public double[] transformToDoubleValuesSV(ProjectionBlock projectionBlock) {
     int length = projectionBlock.getNumDocs();
 
-    if (_modulos == null) {
+    if (_modulos == null || _modulos.length < length) {
       _modulos = new double[length];
     }
 
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 df24e8c..73db62d 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
@@ -68,7 +68,7 @@ public class MultiplicationTransformFunction extends BaseTransformFunction {
   public double[] transformToDoubleValuesSV(ProjectionBlock projectionBlock) {
     int length = projectionBlock.getNumDocs();
 
-    if (_products == null) {
+    if (_products == null || _products.length < length) {
       _products = new double[length];
     }
 
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 518776d..74e1fa3 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
@@ -127,7 +127,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction {
     }
     int length = projectionBlock.getNumDocs();
 
-    if (_intResults == null) {
+    if (_intResults == null || _intResults.length < length) {
       _intResults = new int[length];
     }
     getNonLiteralValues(projectionBlock);
@@ -147,7 +147,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction {
     }
     int length = projectionBlock.getNumDocs();
 
-    if (_longResults == null) {
+    if (_longResults == null || _longResults.length < length) {
       _longResults = new long[length];
     }
     getNonLiteralValues(projectionBlock);
@@ -167,7 +167,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction {
     }
     int length = projectionBlock.getNumDocs();
 
-    if (_floatResults == null) {
+    if (_floatResults == null || _floatResults.length < length) {
       _floatResults = new float[length];
     }
     getNonLiteralValues(projectionBlock);
@@ -187,7 +187,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction {
     }
     int length = projectionBlock.getNumDocs();
 
-    if (_doubleResults == null) {
+    if (_doubleResults == null || _doubleResults.length < length) {
       _doubleResults = new double[length];
     }
     getNonLiteralValues(projectionBlock);
@@ -207,7 +207,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction {
     }
     int length = projectionBlock.getNumDocs();
 
-    if (_stringResults == null) {
+    if (_stringResults == null || _stringResults.length < length) {
       _stringResults = new String[length];
     }
     getNonLiteralValues(projectionBlock);
@@ -229,7 +229,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction {
     }
     int length = projectionBlock.getNumDocs();
 
-    if (_bytesResults == null) {
+    if (_bytesResults == null || _bytesResults.length < length) {
       _bytesResults = new byte[length][];
     }
     getNonLiteralValues(projectionBlock);
@@ -269,7 +269,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction {
     }
     int length = projectionBlock.getNumDocs();
 
-    if (_longMVResults == null) {
+    if (_longMVResults == null || _longMVResults.length < length) {
       _longMVResults = new long[length][];
     }
     getNonLiteralValues(projectionBlock);
@@ -289,7 +289,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction {
     }
     int length = projectionBlock.getNumDocs();
 
-    if (_floatMVResults == null) {
+    if (_floatMVResults == null || _floatMVResults.length < length) {
       _floatMVResults = new float[length][];
     }
     getNonLiteralValues(projectionBlock);
@@ -309,7 +309,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction {
     }
     int length = projectionBlock.getNumDocs();
 
-    if (_doubleMVResults == null) {
+    if (_doubleMVResults == null || _doubleMVResults.length < length) {
       _doubleMVResults = new double[length][];
     }
     getNonLiteralValues(projectionBlock);
@@ -329,7 +329,7 @@ public class ScalarTransformFunctionWrapper extends BaseTransformFunction {
     }
     int length = projectionBlock.getNumDocs();
 
-    if (_stringMVResults == null) {
+    if (_stringMVResults == null || _stringMVResults.length < length) {
       _stringMVResults = new String[length][];
     }
     getNonLiteralValues(projectionBlock);
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 e667078..d4d3408 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
@@ -56,7 +56,7 @@ public abstract class SingleParamMathTransformFunction extends BaseTransformFunc
   public double[] transformToDoubleValuesSV(ProjectionBlock projectionBlock) {
     int length = projectionBlock.getNumDocs();
 
-    if (_doubleValuesSV == null) {
+    if (_doubleValuesSV == null || _doubleValuesMV.length < length) {
       _doubleValuesSV = new double[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 f1a9540..383eb5d 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
@@ -79,7 +79,7 @@ public class SubtractionTransformFunction extends BaseTransformFunction {
   public double[] transformToDoubleValuesSV(ProjectionBlock projectionBlock) {
     int length = projectionBlock.getNumDocs();
 
-    if (_differences == null) {
+    if (_differences == null || _differences.length < length) {
       _differences = new double[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 a32546d..94a2f6e 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
@@ -70,7 +70,7 @@ public class TimeConversionTransformFunction extends BaseTransformFunction {
   public long[] transformToLongValuesSV(ProjectionBlock projectionBlock) {
     int length = projectionBlock.getNumDocs();
 
-    if (_outputTimes == null) {
+    if (_outputTimes == null || _outputTimes.length < length) {
       _outputTimes = new long[length];
     }
 

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org