Skip to content

Commit 7dfabce

Browse files
authored
Add scalar min/max to BuiltinFunctionName (#4967)
Signed-off-by: Lantao Jin <ltjin@amazon.com>
1 parent 129be49 commit 7dfabce

4 files changed

Lines changed: 14 additions & 7 deletions

File tree

core/src/main/java/org/opensearch/sql/calcite/CalciteRelNodeVisitor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2905,7 +2905,7 @@ private RelNode rankByColumnSplit(
29052905
*/
29062906
private AggCall buildAggCall(RelBuilder relBuilder, String aggFunctionName, RexNode node) {
29072907
BuiltinFunctionName aggFunction =
2908-
BuiltinFunctionName.of(aggFunctionName)
2908+
BuiltinFunctionName.ofAggregation(aggFunctionName)
29092909
.orElseThrow(
29102910
() ->
29112911
new IllegalArgumentException(

core/src/main/java/org/opensearch/sql/expression/function/BuiltinFunctionName.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@ public enum BuiltinFunctionName {
5858
SIN(FunctionName.of("sin")),
5959
TAN(FunctionName.of("tan")),
6060
SPAN(FunctionName.of("span")),
61+
SCALAR_MAX(FunctionName.of("scalar_max")),
62+
SCALAR_MIN(FunctionName.of("scalar_min")),
6163

6264
/** Binning Functions. */
6365
SPAN_BUCKET(FunctionName.of("span_bucket")),

core/src/main/java/org/opensearch/sql/expression/function/PPLFuncImpTable.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,8 @@
186186
import static org.opensearch.sql.expression.function.BuiltinFunctionName.RINT;
187187
import static org.opensearch.sql.expression.function.BuiltinFunctionName.ROUND;
188188
import static org.opensearch.sql.expression.function.BuiltinFunctionName.RTRIM;
189+
import static org.opensearch.sql.expression.function.BuiltinFunctionName.SCALAR_MAX;
190+
import static org.opensearch.sql.expression.function.BuiltinFunctionName.SCALAR_MIN;
189191
import static org.opensearch.sql.expression.function.BuiltinFunctionName.SECOND;
190192
import static org.opensearch.sql.expression.function.BuiltinFunctionName.SECOND_OF_MINUTE;
191193
import static org.opensearch.sql.expression.function.BuiltinFunctionName.SEC_TO_TIME;
@@ -868,9 +870,9 @@ void populate() {
868870
registerOperator(INTERNAL_REGEXP_REPLACE_5, SqlLibraryOperators.REGEXP_REPLACE_5);
869871
registerOperator(INTERNAL_TRANSLATE3, SqlLibraryOperators.TRANSLATE3);
870872

871-
// Register eval functions for PPL max() and min() calls
872-
registerOperator(MAX, PPLBuiltinOperators.SCALAR_MAX);
873-
registerOperator(MIN, PPLBuiltinOperators.SCALAR_MIN);
873+
// Register eval functions for PPL scalar max() and min() calls
874+
registerOperator(SCALAR_MAX, PPLBuiltinOperators.SCALAR_MAX);
875+
registerOperator(SCALAR_MIN, PPLBuiltinOperators.SCALAR_MIN);
874876

875877
// Register PPL UDF operator
876878
registerOperator(COSH, PPLBuiltinOperators.COSH);

ppl/src/main/java/org/opensearch/sql/ppl/parser/AstExpressionBuilder.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,15 @@ public class AstExpressionBuilder extends OpenSearchPPLParserBaseVisitor<Unresol
8282

8383
private static final int DEFAULT_TAKE_FUNCTION_SIZE_VALUE = 10;
8484

85-
/** The function name mapping between fronted and core engine. */
86-
private static final Map<String, String> FUNCTION_NAME_MAPPING =
85+
/** The eval function name mapping between fronted and core engine. */
86+
private static final Map<String, String> EVAL_FUNCTION_NAME_MAPPING =
8787
new ImmutableMap.Builder<String, String>()
8888
.put("isnull", IS_NULL.getName().getFunctionName())
8989
.put("isnotnull", IS_NOT_NULL.getName().getFunctionName())
9090
.put("regex_match", REGEXP_MATCH.getName().getFunctionName()) // compatible with old one
9191
.put("regexp_replace", REPLACE.getName().getFunctionName())
92+
.put("max", SCALAR_MAX.getName().getFunctionName()) // this is scalar max
93+
.put("min", SCALAR_MIN.getName().getFunctionName()) // this is scalar min
9294
.build();
9395

9496
private final AstBuilder astBuilder;
@@ -439,7 +441,8 @@ public UnresolvedExpression visitCaseFunctionCall(
439441
public UnresolvedExpression visitEvalFunctionCall(EvalFunctionCallContext ctx) {
440442
final String functionName = ctx.evalFunctionName().getText();
441443
final String mappedName =
442-
FUNCTION_NAME_MAPPING.getOrDefault(functionName.toLowerCase(Locale.ROOT), functionName);
444+
EVAL_FUNCTION_NAME_MAPPING.getOrDefault(
445+
functionName.toLowerCase(Locale.ROOT), functionName);
443446

444447
// Rewrite sum and avg functions to arithmetic expressions
445448
if (SUM.getName().getFunctionName().equalsIgnoreCase(mappedName)

0 commit comments

Comments
 (0)