forked from opendistro-for-elasticsearch/sql
-
Notifications
You must be signed in to change notification settings - Fork 0
/
BuiltinFunctionName.java
64 lines (55 loc) · 1.64 KB
/
BuiltinFunctionName.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package com.amazon.opendistroforelasticsearch.sql.expression.function;
import com.google.common.collect.ImmutableMap;
import java.util.Map;
import java.util.Optional;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
/**
* Builtin Function Name.
*/
@Getter
@RequiredArgsConstructor
public enum BuiltinFunctionName {
ABS(FunctionName.of("abs")),
TOSTRING(FunctionName.of("tostring")),
/**
* Arithmetic Operators.
*/
ADD(FunctionName.of("+")),
SUBTRACT(FunctionName.of("-")),
MULTIPLY(FunctionName.of("*")),
DIVIDE(FunctionName.of("/")),
MODULES(FunctionName.of("%")),
/**
* Boolean Operators.
*/
AND(FunctionName.of("and")),
OR(FunctionName.of("or")),
XOR(FunctionName.of("xor")),
NOT(FunctionName.of("not")),
EQUAL(FunctionName.of("=")),
NOTEQUAL(FunctionName.of("!=")),
LESS(FunctionName.of("<")),
LTE(FunctionName.of("<=")),
GREATER(FunctionName.of(">")),
GTE(FunctionName.of(">=")),
LIKE(FunctionName.of("like")),
/**
* Aggregation Function.
*/
AVG(FunctionName.of("avg")),
SUM(FunctionName.of("sum")),
COUNT(FunctionName.of("count"));
private final FunctionName name;
private static final Map<FunctionName, BuiltinFunctionName> ALL_NATIVE_FUNCTIONS;
static {
ImmutableMap.Builder<FunctionName, BuiltinFunctionName> builder = new ImmutableMap.Builder<>();
for (BuiltinFunctionName func : BuiltinFunctionName.values()) {
builder.put(func.getName(), func);
}
ALL_NATIVE_FUNCTIONS = builder.build();
}
public static Optional<BuiltinFunctionName> of(String str) {
return Optional.ofNullable(ALL_NATIVE_FUNCTIONS.getOrDefault(FunctionName.of(str), null));
}
}