This is an automated email from the ASF dual-hosted git repository.
xiangfu 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 7a3d89cb19 Add array functions to v2 fn registry (#11455)
7a3d89cb19 is described below
commit 7a3d89cb194977fde429ae34f2a121d27e5f89ec
Author: Saurabh Dubey <[email protected]>
AuthorDate: Wed Aug 30 11:23:28 2023 +0530
Add array functions to v2 fn registry (#11455)
* Add array functions to v2 fn registry
* Change sum data type
* Log10
* Remove log10 fix
---------
Co-authored-by: Saurabh Dubey <[email protected]>
---
.../pinot/common/function/FunctionRegistry.java | 25 ++++++++++++++++++++++
.../common/function/TransformFunctionType.java | 10 +++++----
2 files changed, 31 insertions(+), 4 deletions(-)
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/function/FunctionRegistry.java
b/pinot-common/src/main/java/org/apache/pinot/common/function/FunctionRegistry.java
index e4c3b251de..023d21ff0d 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/function/FunctionRegistry.java
+++
b/pinot-common/src/main/java/org/apache/pinot/common/function/FunctionRegistry.java
@@ -217,5 +217,30 @@ public class FunctionRegistry {
public static String arrayToMV(Object multiValue) {
throw new UnsupportedOperationException("Placeholder scalar function,
should not reach here");
}
+
+ @ScalarFunction(names = "arrayMin", isPlaceholder = true)
+ public static String arrayMin(Object multiValue) {
+ throw new UnsupportedOperationException("Placeholder scalar function,
should not reach here");
+ }
+
+ @ScalarFunction(names = "arrayMax", isPlaceholder = true)
+ public static String arrayMax(Object multiValue) {
+ throw new UnsupportedOperationException("Placeholder scalar function,
should not reach here");
+ }
+
+ @ScalarFunction(names = "arrayLength", isPlaceholder = true)
+ public static String arrayLength(Object multiValue) {
+ throw new UnsupportedOperationException("Placeholder scalar function,
should not reach here");
+ }
+
+ @ScalarFunction(names = "arrayAverage", isPlaceholder = true)
+ public static String arrayAverage(Object multiValue) {
+ throw new UnsupportedOperationException("Placeholder scalar function,
should not reach here");
+ }
+
+ @ScalarFunction(names = "arraySum", isPlaceholder = true)
+ public static String arraySum(Object multiValue) {
+ throw new UnsupportedOperationException("Placeholder scalar function,
should not reach here");
+ }
}
}
diff --git
a/pinot-common/src/main/java/org/apache/pinot/common/function/TransformFunctionType.java
b/pinot-common/src/main/java/org/apache/pinot/common/function/TransformFunctionType.java
index b27c6cd53b..a02a8c8277 100644
---
a/pinot-common/src/main/java/org/apache/pinot/common/function/TransformFunctionType.java
+++
b/pinot-common/src/main/java/org/apache/pinot/common/function/TransformFunctionType.java
@@ -163,10 +163,12 @@ public enum TransformFunctionType {
// The only column accepted by "cardinality" function is multi-value array,
thus putting "cardinality" as alias.
// TODO: once we support other types of multiset, we should make CARDINALITY
its own function
ARRAYLENGTH("arrayLength", "cardinality"),
- ARRAYAVERAGE("arrayAverage"),
- ARRAYMIN("arrayMin"),
- ARRAYMAX("arrayMax"),
- ARRAYSUM("arraySum"),
+ ARRAYAVERAGE("arrayAverage", ReturnTypes.DOUBLE,
OperandTypes.family(SqlTypeFamily.ARRAY)),
+ ARRAYMIN("arrayMin", ReturnTypes.cascade(opBinding ->
positionalComponentReturnType(opBinding, 0),
+ SqlTypeTransforms.FORCE_NULLABLE),
OperandTypes.family(SqlTypeFamily.ARRAY)),
+ ARRAYMAX("arrayMax", ReturnTypes.cascade(opBinding ->
positionalComponentReturnType(opBinding, 0),
+ SqlTypeTransforms.FORCE_NULLABLE),
OperandTypes.family(SqlTypeFamily.ARRAY)),
+ ARRAYSUM("arraySum", ReturnTypes.DOUBLE,
OperandTypes.family(SqlTypeFamily.ARRAY)),
VALUEIN("valueIn"),
MAPVALUE("mapValue", ReturnTypes.cascade(opBinding ->
opBinding.getOperandType(2).getComponentType(),
SqlTypeTransforms.FORCE_NULLABLE),
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]