This is an automated email from the ASF dual-hosted git repository.
Jackie-Jiang 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 2630b03651d Add null-ignoring variants of array union, concat and push
scalar functions (#19981)
2630b03651d is described below
commit 2630b03651dcb240bd04666bb789ee10d085b049
Author: Xiaotian (Jackie) Jiang <[email protected]>
AuthorDate: Tue Oct 20 21:42:05 2026 -0700
Add null-ignoring variants of array union, concat and push scalar functions
(#19981)
---
.../common/function/scalar/ArrayFunctions.java | 188 +++++++++++++++++++++
.../core/data/function/ArrayFunctionsTest.java | 92 ++++++++++
.../resources/udf-test-results/all-functions.yaml | 68 ++++++++
3 files changed, 348 insertions(+)
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/ArrayFunctions.java
b/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/ArrayFunctions.java
index 67643d17dea..c6bb1104e94 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/ArrayFunctions.java
+++
b/pinot-common/src/main/java/org/apache/pinot/common/function/scalar/ArrayFunctions.java
@@ -26,6 +26,7 @@ import it.unimi.dsi.fastutil.objects.ObjectLinkedOpenHashSet;
import it.unimi.dsi.fastutil.objects.ObjectSet;
import java.math.BigDecimal;
import java.util.Arrays;
+import javax.annotation.Nullable;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.pinot.spi.annotations.ScalarFunction;
import org.apache.pinot.spi.utils.CommonConstants.NullValuePlaceHolder;
@@ -185,6 +186,28 @@ public class ArrayFunctions {
return set.toArray(new String[0]);
}
+ /// Same as [#arrayUnionInt], but ignores a `null` array instead of
returning `null`. Returns `null` only when both
+ /// arrays are `null`.
+ @Nullable
+ @ScalarFunction(nullableParameters = true)
+ public static int[] arrayUnionIntIgnoreNulls(@Nullable int[] values1,
@Nullable int[] values2) {
+ if (values1 == null) {
+ return values2 != null ? arrayDistinctInt(values2) : null;
+ }
+ return values2 != null ? arrayUnionInt(values1, values2) :
arrayDistinctInt(values1);
+ }
+
+ /// Same as [#arrayUnionString], but ignores a `null` array instead of
returning `null`. Returns `null` only when both
+ /// arrays are `null`.
+ @Nullable
+ @ScalarFunction(nullableParameters = true)
+ public static String[] arrayUnionStringIgnoreNulls(@Nullable String[]
values1, @Nullable String[] values2) {
+ if (values1 == null) {
+ return values2 != null ? arrayDistinctString(values2) : null;
+ }
+ return values2 != null ? arrayUnionString(values1, values2) :
arrayDistinctString(values1);
+ }
+
@ScalarFunction
public static int[] arrayConcatInt(int[] values1, int[] values2) {
return ArrayUtils.addAll(values1, values2);
@@ -210,6 +233,61 @@ public class ArrayFunctions {
return ArrayUtils.addAll(values1, values2);
}
+ /// Same as [#arrayConcatInt], but ignores a `null` array instead of
returning `null`. Returns `null` only when both
+ /// arrays are `null`.
+ @Nullable
+ @ScalarFunction(nullableParameters = true)
+ public static int[] arrayConcatIntIgnoreNulls(@Nullable int[] values1,
@Nullable int[] values2) {
+ if (values1 == null) {
+ return values2;
+ }
+ return values2 != null ? arrayConcatInt(values1, values2) : values1;
+ }
+
+ /// Same as [#arrayConcatLong], but ignores a `null` array instead of
returning `null`. Returns `null` only when both
+ /// arrays are `null`.
+ @Nullable
+ @ScalarFunction(nullableParameters = true)
+ public static long[] arrayConcatLongIgnoreNulls(@Nullable long[] values1,
@Nullable long[] values2) {
+ if (values1 == null) {
+ return values2;
+ }
+ return values2 != null ? arrayConcatLong(values1, values2) : values1;
+ }
+
+ /// Same as [#arrayConcatFloat], but ignores a `null` array instead of
returning `null`. Returns `null` only when both
+ /// arrays are `null`.
+ @Nullable
+ @ScalarFunction(nullableParameters = true)
+ public static float[] arrayConcatFloatIgnoreNulls(@Nullable float[] values1,
@Nullable float[] values2) {
+ if (values1 == null) {
+ return values2;
+ }
+ return values2 != null ? arrayConcatFloat(values1, values2) : values1;
+ }
+
+ /// Same as [#arrayConcatDouble], but ignores a `null` array instead of
returning `null`. Returns `null` only when
+ /// both arrays are `null`.
+ @Nullable
+ @ScalarFunction(nullableParameters = true)
+ public static double[] arrayConcatDoubleIgnoreNulls(@Nullable double[]
values1, @Nullable double[] values2) {
+ if (values1 == null) {
+ return values2;
+ }
+ return values2 != null ? arrayConcatDouble(values1, values2) : values1;
+ }
+
+ /// Same as [#arrayConcatString], but ignores a `null` array instead of
returning `null`. Returns `null` only when
+ /// both arrays are `null`.
+ @Nullable
+ @ScalarFunction(nullableParameters = true)
+ public static String[] arrayConcatStringIgnoreNulls(@Nullable String[]
values1, @Nullable String[] values2) {
+ if (values1 == null) {
+ return values2;
+ }
+ return values2 != null ? arrayConcatString(values1, values2) : values1;
+ }
+
@ScalarFunction
public static int[] arrayPushBackInt(int[] values, int element) {
return ArrayUtils.add(values, element);
@@ -235,6 +313,61 @@ public class ArrayFunctions {
return ArrayUtils.add(values, element);
}
+ /// Same as [#arrayPushBackInt], but ignores a `null` array or element
instead of returning `null`. Returns `null`
+ /// only when both are `null`.
+ @Nullable
+ @ScalarFunction(nullableParameters = true)
+ public static int[] arrayPushBackIntIgnoreNulls(@Nullable int[] values,
@Nullable Integer element) {
+ if (element == null) {
+ return values;
+ }
+ return values != null ? arrayPushBackInt(values, element) : new
int[]{element};
+ }
+
+ /// Same as [#arrayPushBackLong], but ignores a `null` array or element
instead of returning `null`. Returns `null`
+ /// only when both are `null`.
+ @Nullable
+ @ScalarFunction(nullableParameters = true)
+ public static long[] arrayPushBackLongIgnoreNulls(@Nullable long[] values,
@Nullable Long element) {
+ if (element == null) {
+ return values;
+ }
+ return values != null ? arrayPushBackLong(values, element) : new
long[]{element};
+ }
+
+ /// Same as [#arrayPushBackFloat], but ignores a `null` array or element
instead of returning `null`. Returns `null`
+ /// only when both are `null`.
+ @Nullable
+ @ScalarFunction(nullableParameters = true)
+ public static float[] arrayPushBackFloatIgnoreNulls(@Nullable float[]
values, @Nullable Float element) {
+ if (element == null) {
+ return values;
+ }
+ return values != null ? arrayPushBackFloat(values, element) : new
float[]{element};
+ }
+
+ /// Same as [#arrayPushBackDouble], but ignores a `null` array or element
instead of returning `null`. Returns `null`
+ /// only when both are `null`.
+ @Nullable
+ @ScalarFunction(nullableParameters = true)
+ public static double[] arrayPushBackDoubleIgnoreNulls(@Nullable double[]
values, @Nullable Double element) {
+ if (element == null) {
+ return values;
+ }
+ return values != null ? arrayPushBackDouble(values, element) : new
double[]{element};
+ }
+
+ /// Same as [#arrayPushBackString], but ignores a `null` array or element
instead of returning `null`. Returns `null`
+ /// only when both are `null`.
+ @Nullable
+ @ScalarFunction(nullableParameters = true)
+ public static String[] arrayPushBackStringIgnoreNulls(@Nullable String[]
values, @Nullable String element) {
+ if (element == null) {
+ return values;
+ }
+ return values != null ? arrayPushBackString(values, element) : new
String[]{element};
+ }
+
@ScalarFunction
public static int[] arrayPushFrontInt(int[] values, int element) {
return ArrayUtils.insert(0, values, element);
@@ -260,6 +393,61 @@ public class ArrayFunctions {
return ArrayUtils.insert(0, values, element);
}
+ /// Same as [#arrayPushFrontInt], but ignores a `null` array or element
instead of returning `null`. Returns `null`
+ /// only when both are `null`.
+ @Nullable
+ @ScalarFunction(nullableParameters = true)
+ public static int[] arrayPushFrontIntIgnoreNulls(@Nullable int[] values,
@Nullable Integer element) {
+ if (element == null) {
+ return values;
+ }
+ return values != null ? arrayPushFrontInt(values, element) : new
int[]{element};
+ }
+
+ /// Same as [#arrayPushFrontLong], but ignores a `null` array or element
instead of returning `null`. Returns `null`
+ /// only when both are `null`.
+ @Nullable
+ @ScalarFunction(nullableParameters = true)
+ public static long[] arrayPushFrontLongIgnoreNulls(@Nullable long[] values,
@Nullable Long element) {
+ if (element == null) {
+ return values;
+ }
+ return values != null ? arrayPushFrontLong(values, element) : new
long[]{element};
+ }
+
+ /// Same as [#arrayPushFrontFloat], but ignores a `null` array or element
instead of returning `null`. Returns `null`
+ /// only when both are `null`.
+ @Nullable
+ @ScalarFunction(nullableParameters = true)
+ public static float[] arrayPushFrontFloatIgnoreNulls(@Nullable float[]
values, @Nullable Float element) {
+ if (element == null) {
+ return values;
+ }
+ return values != null ? arrayPushFrontFloat(values, element) : new
float[]{element};
+ }
+
+ /// Same as [#arrayPushFrontDouble], but ignores a `null` array or element
instead of returning `null`. Returns `null`
+ /// only when both are `null`.
+ @Nullable
+ @ScalarFunction(nullableParameters = true)
+ public static double[] arrayPushFrontDoubleIgnoreNulls(@Nullable double[]
values, @Nullable Double element) {
+ if (element == null) {
+ return values;
+ }
+ return values != null ? arrayPushFrontDouble(values, element) : new
double[]{element};
+ }
+
+ /// Same as [#arrayPushFrontString], but ignores a `null` array or element
instead of returning `null`. Returns `null`
+ /// only when both are `null`.
+ @Nullable
+ @ScalarFunction(nullableParameters = true)
+ public static String[] arrayPushFrontStringIgnoreNulls(@Nullable String[]
values, @Nullable String element) {
+ if (element == null) {
+ return values;
+ }
+ return values != null ? arrayPushFrontString(values, element) : new
String[]{element};
+ }
+
@ScalarFunction
public static int arrayElementAtInt(int[] arr, int idx) {
return idx > 0 && idx <= arr.length ? arr[idx - 1] :
NullValuePlaceHolder.INT;
diff --git
a/pinot-core/src/test/java/org/apache/pinot/core/data/function/ArrayFunctionsTest.java
b/pinot-core/src/test/java/org/apache/pinot/core/data/function/ArrayFunctionsTest.java
index 02fd3c648eb..6542afc1d42 100644
---
a/pinot-core/src/test/java/org/apache/pinot/core/data/function/ArrayFunctionsTest.java
+++
b/pinot-core/src/test/java/org/apache/pinot/core/data/function/ArrayFunctionsTest.java
@@ -54,6 +54,10 @@ public class ArrayFunctionsTest {
row.putValue("longArray", new long[]{3L, 2L, 10L, 6L, 1L, 12L});
row.putValue("stringArray", new String[]{"3", "2", "10", "6", "1", "12"});
row.putValue("stringArrayWithNulls", new String[]{"3", "2", "10", "6",
"1", "12", "", null});
+ row.putValue("nullIntArray", null);
+ row.putValue("nullStringArray", null);
+ row.putValue("nullInt", null);
+ row.putValue("nullString", null);
inputs.add(new Object[]{
"array_reverse_int(intArray)", List.of("intArray"), row, new int[]{12,
1, 6, 10, 2, 3}
@@ -169,6 +173,29 @@ public class ArrayFunctionsTest {
"array_union_string(stringArray, stringArray)",
Lists.newArrayList("stringArray", "stringArray"), row,
new String[]{"3", "2", "10", "6", "1", "12"}
});
+ inputs.add(new Object[]{
+ "array_union_int_ignore_nulls(array_concat_int(intArray, intArray),
nullIntArray)",
+ List.of("intArray", "intArray", "nullIntArray"), row, new int[]{3, 2,
10, 6, 1, 12}
+ });
+ inputs.add(new Object[]{
+ "array_union_int_ignore_nulls(nullIntArray, intArray)",
List.of("nullIntArray", "intArray"), row,
+ new int[]{3, 2, 10, 6, 1, 12}
+ });
+ inputs.add(new Object[]{
+ "array_union_int_ignore_nulls(nullIntArray, nullIntArray)",
List.of("nullIntArray", "nullIntArray"), row, null
+ });
+ inputs.add(new Object[]{
+ "array_union_string_ignore_nulls(array_concat_string(stringArray,
stringArray), nullStringArray)",
+ List.of("stringArray", "stringArray", "nullStringArray"), row, new
String[]{"3", "2", "10", "6", "1", "12"}
+ });
+ inputs.add(new Object[]{
+ "array_union_string_ignore_nulls(nullStringArray, stringArray)",
List.of("nullStringArray", "stringArray"),
+ row, new String[]{"3", "2", "10", "6", "1", "12"}
+ });
+ inputs.add(new Object[]{
+ "array_union_string_ignore_nulls(nullStringArray, nullStringArray)",
+ List.of("nullStringArray", "nullStringArray"), row, null
+ });
inputs.add(new Object[]{
"array_concat_int(intArray, intArray)", Lists.newArrayList("intArray",
"intArray"), row,
@@ -182,6 +209,29 @@ public class ArrayFunctionsTest {
"array_concat_string(stringArray, stringArray)",
Lists.newArrayList("stringArray", "stringArray"), row,
new String[]{"3", "2", "10", "6", "1", "12", "3", "2", "10", "6", "1",
"12"}
});
+ inputs.add(new Object[]{
+ "array_concat_int_ignore_nulls(intArray, nullIntArray)",
List.of("intArray", "nullIntArray"), row,
+ new int[]{3, 2, 10, 6, 1, 12}
+ });
+ inputs.add(new Object[]{
+ "array_concat_int_ignore_nulls(nullIntArray, intArray)",
List.of("nullIntArray", "intArray"), row,
+ new int[]{3, 2, 10, 6, 1, 12}
+ });
+ inputs.add(new Object[]{
+ "array_concat_int_ignore_nulls(nullIntArray, nullIntArray)",
List.of("nullIntArray", "nullIntArray"), row, null
+ });
+ inputs.add(new Object[]{
+ "array_concat_string_ignore_nulls(stringArray, nullStringArray)",
List.of("stringArray", "nullStringArray"),
+ row, new String[]{"3", "2", "10", "6", "1", "12"}
+ });
+ inputs.add(new Object[]{
+ "array_concat_string_ignore_nulls(nullStringArray, stringArray)",
List.of("nullStringArray", "stringArray"),
+ row, new String[]{"3", "2", "10", "6", "1", "12"}
+ });
+ inputs.add(new Object[]{
+ "array_concat_string_ignore_nulls(nullStringArray, nullStringArray)",
+ List.of("nullStringArray", "nullStringArray"), row, null
+ });
inputs.add(new Object[]{
"array_push_back_int(intArray, 7)", List.of("intArray"), row,
new int[]{3, 2, 10, 6, 1, 12, 7}
@@ -190,6 +240,27 @@ public class ArrayFunctionsTest {
"array_push_back_string(stringArray, 'x')", List.of("stringArray"),
row,
new String[]{"3", "2", "10", "6", "1", "12", "x"}
});
+ inputs.add(new Object[]{
+ "array_push_back_int_ignore_nulls(intArray, nullInt)",
List.of("intArray", "nullInt"), row,
+ new int[]{3, 2, 10, 6, 1, 12}
+ });
+ inputs.add(new Object[]{
+ "array_push_back_int_ignore_nulls(nullIntArray, 7)",
List.of("nullIntArray"), row, new int[]{7}
+ });
+ inputs.add(new Object[]{
+ "array_push_back_int_ignore_nulls(nullIntArray, nullInt)",
List.of("nullIntArray", "nullInt"), row, null
+ });
+ inputs.add(new Object[]{
+ "array_push_back_string_ignore_nulls(stringArray, nullString)",
List.of("stringArray", "nullString"), row,
+ new String[]{"3", "2", "10", "6", "1", "12"}
+ });
+ inputs.add(new Object[]{
+ "array_push_back_string_ignore_nulls(nullStringArray, 'x')",
List.of("nullStringArray"), row, new String[]{"x"}
+ });
+ inputs.add(new Object[]{
+ "array_push_back_string_ignore_nulls(nullStringArray, nullString)",
List.of("nullStringArray", "nullString"),
+ row, null
+ });
inputs.add(new Object[]{
"array_push_front_int(intArray, 7)", List.of("intArray"), row,
new int[]{7, 3, 2, 10, 6, 1, 12}
@@ -198,6 +269,27 @@ public class ArrayFunctionsTest {
"array_push_front_string(stringArray, 'x')", List.of("stringArray"),
row,
new String[]{"x", "3", "2", "10", "6", "1", "12"}
});
+ inputs.add(new Object[]{
+ "array_push_front_int_ignore_nulls(intArray, nullInt)",
List.of("intArray", "nullInt"), row,
+ new int[]{3, 2, 10, 6, 1, 12}
+ });
+ inputs.add(new Object[]{
+ "array_push_front_int_ignore_nulls(nullIntArray, 7)",
List.of("nullIntArray"), row, new int[]{7}
+ });
+ inputs.add(new Object[]{
+ "array_push_front_int_ignore_nulls(nullIntArray, nullInt)",
List.of("nullIntArray", "nullInt"), row, null
+ });
+ inputs.add(new Object[]{
+ "array_push_front_string_ignore_nulls(stringArray, nullString)",
List.of("stringArray", "nullString"), row,
+ new String[]{"3", "2", "10", "6", "1", "12"}
+ });
+ inputs.add(new Object[]{
+ "array_push_front_string_ignore_nulls(nullStringArray, 'x')",
List.of("nullStringArray"), row, new String[]{"x"}
+ });
+ inputs.add(new Object[]{
+ "array_push_front_string_ignore_nulls(nullStringArray, nullString)",
List.of("nullStringArray", "nullString"),
+ row, null
+ });
inputs.add(new Object[]{
"array_to_string(stringArray, '::')", List.of("stringArray"), row,
"3::2::10::6::1::12"
diff --git
a/pinot-integration-tests/src/test/resources/udf-test-results/all-functions.yaml
b/pinot-integration-tests/src/test/resources/udf-test-results/all-functions.yaml
index 87028ae77b7..b1b2a7f7de2 100644
---
a/pinot-integration-tests/src/test/resources/udf-test-results/all-functions.yaml
+++
b/pinot-integration-tests/src/test/resources/udf-test-results/all-functions.yaml
@@ -66,22 +66,42 @@ arrayconcatdouble:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayConcatDouble}"
transform: null
udf: "org.apache.pinot.query.runtime.function.ArrayConcatDoubleUdf"
+arrayconcatdoubleignorenulls:
+ scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayConcatDoubleIgnoreNulls}"
+ transform: null
+ udf: null
arrayconcatfloat:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayConcatFloat}"
transform: null
udf: null
+arrayconcatfloatignorenulls:
+ scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayConcatFloatIgnoreNulls}"
+ transform: null
+ udf: null
arrayconcatint:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayConcatInt}"
transform: null
udf: null
+arrayconcatintignorenulls:
+ scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayConcatIntIgnoreNulls}"
+ transform: null
+ udf: null
arrayconcatlong:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayConcatLong}"
transform: null
udf: null
+arrayconcatlongignorenulls:
+ scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayConcatLongIgnoreNulls}"
+ transform: null
+ udf: null
arrayconcatstring:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayConcatString}"
transform: null
udf: null
+arrayconcatstringignorenulls:
+ scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayConcatStringIgnoreNulls}"
+ transform: null
+ udf: null
arraycontainsint:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayContainsInt}"
transform: null
@@ -162,42 +182,82 @@ arraypushbackdouble:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushBackDouble}"
transform: null
udf: null
+arraypushbackdoubleignorenulls:
+ scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushBackDoubleIgnoreNulls}"
+ transform: null
+ udf: null
arraypushbackfloat:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushBackFloat}"
transform: null
udf: null
+arraypushbackfloatignorenulls:
+ scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushBackFloatIgnoreNulls}"
+ transform: null
+ udf: null
arraypushbackint:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushBackInt}"
transform: null
udf: null
+arraypushbackintignorenulls:
+ scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushBackIntIgnoreNulls}"
+ transform: null
+ udf: null
arraypushbacklong:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushBackLong}"
transform: null
udf: null
+arraypushbacklongignorenulls:
+ scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushBackLongIgnoreNulls}"
+ transform: null
+ udf: null
arraypushbackstring:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushBackString}"
transform: null
udf: null
+arraypushbackstringignorenulls:
+ scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushBackStringIgnoreNulls}"
+ transform: null
+ udf: null
arraypushfrontdouble:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushFrontDouble}"
transform: null
udf: null
+arraypushfrontdoubleignorenulls:
+ scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushFrontDoubleIgnoreNulls}"
+ transform: null
+ udf: null
arraypushfrontfloat:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushFrontFloat}"
transform: null
udf: null
+arraypushfrontfloatignorenulls:
+ scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushFrontFloatIgnoreNulls}"
+ transform: null
+ udf: null
arraypushfrontint:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushFrontInt}"
transform: null
udf: null
+arraypushfrontintignorenulls:
+ scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushFrontIntIgnoreNulls}"
+ transform: null
+ udf: null
arraypushfrontlong:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushFrontLong}"
transform: null
udf: null
+arraypushfrontlongignorenulls:
+ scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushFrontLongIgnoreNulls}"
+ transform: null
+ udf: null
arraypushfrontstring:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushFrontString}"
transform: null
udf: null
+arraypushfrontstringignorenulls:
+ scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayPushFrontStringIgnoreNulls}"
+ transform: null
+ udf: null
arrayremoveint:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayRemoveInt}"
transform: null
@@ -255,10 +315,18 @@ arrayunionint:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayUnionInt}"
transform: null
udf: null
+arrayunionintignorenulls:
+ scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayUnionIntIgnoreNulls}"
+ transform: null
+ udf: null
arrayunionstring:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayUnionString}"
transform: null
udf: null
+arrayunionstringignorenulls:
+ scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayUnionStringIgnoreNulls}"
+ transform: null
+ udf: null
arrayvalueconstructor:
scalar:
"ArgumentCountBasedScalarFunction{org.apache.pinot.common.function.scalar.ArrayFunctions.arrayValueConstructor}"
transform: null
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]