KKcorps commented on a change in pull request #8304:
URL: https://github.com/apache/pinot/pull/8304#discussion_r829106046
##########
File path:
pinot-common/src/main/java/org/apache/pinot/common/function/scalar/ArithmeticFunctions.java
##########
@@ -104,4 +111,30 @@ public static double ln(double a) {
public static double sqrt(double a) {
return Math.sqrt(a);
}
+
+ @ScalarFunction
+ public static double sign(double a) {
+ return Math.signum(a);
+ }
+
+ @ScalarFunction
+ public static double pi() { return Math.PI; }
+
+ @ScalarFunction
+ public static double e() { return Math.E; }
+
+ @ScalarFunction
+ public static double power(double a, double b) {
+ return Math.pow(a, b);
+ }
+
+ @ScalarFunction
+ public static double log(double a) {
+ return Math.log10(a);
+ }
Review comment:
@mneedham I had discussion with @Jackie-Jiang in which he confirmed that
Pinot prioritises TransformFunctions first and if not found, it will use
ScalarFunctions. Both can have the same name. The following piece of code in
`TransformFunctionFactory` ensures this order.
```java
TransformFunction transformFunction;
Class<? extends TransformFunction> transformFunctionClass =
TRANSFORM_FUNCTION_MAP.get(functionName);
if (transformFunctionClass != null) {
// Transform function
try {
transformFunction = transformFunctionClass.newInstance();
} catch (Exception e) {
throw new RuntimeException("Caught exception while constructing
transform function: " + functionName, e);
}
} else {
// Scalar function
FunctionInfo functionInfo =
FunctionRegistry.getFunctionInfo(functionName, numArguments);
if (functionInfo == null) {
if (FunctionRegistry.containsFunction(functionName)) {
throw new BadQueryRequestException(
String.format("Unsupported function: %s with %d parameters",
functionName, numArguments));
} else {
throw new BadQueryRequestException(
String.format("Unsupported function: %s not found",
functionName));
}
}
transformFunction = new
ScalarTransformFunctionWrapper(functionInfo);
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]