|
19 | 19 | import com.amazon.opendistroforelasticsearch.sql.data.model.ExprValueUtils; |
20 | 20 | import com.amazon.opendistroforelasticsearch.sql.data.type.ExprType; |
21 | 21 | import com.amazon.opendistroforelasticsearch.sql.expression.aggregation.Aggregator; |
22 | | -import com.amazon.opendistroforelasticsearch.sql.expression.env.Environment; |
23 | 22 | import com.amazon.opendistroforelasticsearch.sql.expression.function.BuiltinFunctionName; |
24 | 23 | import com.amazon.opendistroforelasticsearch.sql.expression.function.BuiltinFunctionRepository; |
| 24 | +import com.amazon.opendistroforelasticsearch.sql.expression.function.FunctionName; |
25 | 25 | import java.util.Arrays; |
26 | 26 | import lombok.RequiredArgsConstructor; |
27 | 27 |
|
@@ -62,102 +62,124 @@ public static ReferenceExpression ref(String ref, ExprType type) { |
62 | 62 | } |
63 | 63 |
|
64 | 64 | public FunctionExpression abs(Expression... expressions) { |
65 | | - return (FunctionExpression) |
66 | | - repository.compile(BuiltinFunctionName.ABS.getName(), Arrays.asList(expressions)); |
| 65 | + return function(BuiltinFunctionName.ABS, expressions); |
| 66 | + } |
| 67 | + |
| 68 | + public FunctionExpression ceil(Expression... expressions) { |
| 69 | + return function(BuiltinFunctionName.CEIL, expressions); |
| 70 | + } |
| 71 | + |
| 72 | + public FunctionExpression ceiling(Expression... expressions) { |
| 73 | + return function(BuiltinFunctionName.CEILING, expressions); |
| 74 | + } |
| 75 | + |
| 76 | + public FunctionExpression exp(Expression... expressions) { |
| 77 | + return function(BuiltinFunctionName.EXP, expressions); |
| 78 | + } |
| 79 | + |
| 80 | + public FunctionExpression floor(Expression... expressions) { |
| 81 | + return function(BuiltinFunctionName.FLOOR, expressions); |
| 82 | + } |
| 83 | + |
| 84 | + public FunctionExpression ln(Expression... expressions) { |
| 85 | + return function(BuiltinFunctionName.LN, expressions); |
| 86 | + } |
| 87 | + |
| 88 | + public FunctionExpression log(Expression... expressions) { |
| 89 | + return function(BuiltinFunctionName.LOG, expressions); |
| 90 | + } |
| 91 | + |
| 92 | + public FunctionExpression log10(Expression... expressions) { |
| 93 | + return function(BuiltinFunctionName.LOG10, expressions); |
| 94 | + } |
| 95 | + |
| 96 | + public FunctionExpression log2(Expression... expressions) { |
| 97 | + return function(BuiltinFunctionName.LOG2, expressions); |
67 | 98 | } |
68 | 99 |
|
69 | 100 | public FunctionExpression add(Expression... expressions) { |
70 | | - return (FunctionExpression) |
71 | | - repository.compile(BuiltinFunctionName.ADD.getName(), Arrays.asList(expressions)); |
| 101 | + return function(BuiltinFunctionName.ADD, expressions); |
72 | 102 | } |
73 | 103 |
|
74 | 104 | public FunctionExpression subtract(Expression... expressions) { |
75 | | - return (FunctionExpression) |
76 | | - repository.compile(BuiltinFunctionName.SUBTRACT.getName(), Arrays.asList(expressions)); |
| 105 | + return function(BuiltinFunctionName.SUBTRACT, expressions); |
77 | 106 | } |
78 | 107 |
|
79 | 108 | public FunctionExpression multiply(Expression... expressions) { |
80 | | - return (FunctionExpression) |
81 | | - repository.compile(BuiltinFunctionName.MULTIPLY.getName(), Arrays.asList(expressions)); |
| 109 | + return function(BuiltinFunctionName.MULTIPLY, expressions); |
82 | 110 | } |
83 | 111 |
|
84 | 112 | public FunctionExpression divide(Expression... expressions) { |
85 | | - return (FunctionExpression) |
86 | | - repository.compile(BuiltinFunctionName.DIVIDE.getName(), Arrays.asList(expressions)); |
| 113 | + return function(BuiltinFunctionName.DIVIDE, expressions); |
87 | 114 | } |
88 | 115 |
|
89 | 116 | public FunctionExpression module(Expression... expressions) { |
90 | | - return (FunctionExpression) |
91 | | - repository.compile(BuiltinFunctionName.MODULES.getName(), Arrays.asList(expressions)); |
| 117 | + return function(BuiltinFunctionName.MODULES, expressions); |
92 | 118 | } |
93 | 119 |
|
94 | 120 | public FunctionExpression and(Expression... expressions) { |
95 | | - return (FunctionExpression) |
96 | | - repository.compile(BuiltinFunctionName.AND.getName(), Arrays.asList(expressions)); |
| 121 | + return function(BuiltinFunctionName.AND, expressions); |
97 | 122 | } |
98 | 123 |
|
99 | 124 | public FunctionExpression or(Expression... expressions) { |
100 | | - return (FunctionExpression) |
101 | | - repository.compile(BuiltinFunctionName.OR.getName(), Arrays.asList(expressions)); |
| 125 | + return function(BuiltinFunctionName.OR, expressions); |
102 | 126 | } |
103 | 127 |
|
104 | 128 | public FunctionExpression xor(Expression... expressions) { |
105 | | - return (FunctionExpression) |
106 | | - repository.compile(BuiltinFunctionName.XOR.getName(), Arrays.asList(expressions)); |
| 129 | + return function(BuiltinFunctionName.XOR, expressions); |
107 | 130 | } |
108 | 131 |
|
109 | 132 | public FunctionExpression not(Expression... expressions) { |
110 | | - return (FunctionExpression) |
111 | | - repository.compile(BuiltinFunctionName.NOT.getName(), Arrays.asList(expressions)); |
| 133 | + return function(BuiltinFunctionName.NOT, expressions); |
112 | 134 | } |
113 | 135 |
|
114 | 136 | public FunctionExpression equal(Expression... expressions) { |
115 | | - return (FunctionExpression) |
116 | | - repository.compile(BuiltinFunctionName.EQUAL.getName(), Arrays.asList(expressions)); |
| 137 | + return function(BuiltinFunctionName.EQUAL, expressions); |
117 | 138 | } |
118 | 139 |
|
119 | 140 | public FunctionExpression notequal(Expression... expressions) { |
120 | | - return (FunctionExpression) |
121 | | - repository.compile(BuiltinFunctionName.NOTEQUAL.getName(), Arrays.asList(expressions)); |
| 141 | + return function(BuiltinFunctionName.NOTEQUAL, expressions); |
122 | 142 | } |
123 | 143 |
|
124 | 144 | public FunctionExpression less(Expression... expressions) { |
125 | | - return (FunctionExpression) |
126 | | - repository.compile(BuiltinFunctionName.LESS.getName(), Arrays.asList(expressions)); |
| 145 | + return function(BuiltinFunctionName.LESS, expressions); |
127 | 146 | } |
128 | 147 |
|
129 | 148 | public FunctionExpression lte(Expression... expressions) { |
130 | | - return (FunctionExpression) |
131 | | - repository.compile(BuiltinFunctionName.LTE.getName(), Arrays.asList(expressions)); |
| 149 | + return function(BuiltinFunctionName.LTE, expressions); |
132 | 150 | } |
133 | 151 |
|
134 | 152 | public FunctionExpression greater(Expression... expressions) { |
135 | | - return (FunctionExpression) |
136 | | - repository.compile(BuiltinFunctionName.GREATER.getName(), Arrays.asList(expressions)); |
| 153 | + return function(BuiltinFunctionName.GREATER, expressions); |
137 | 154 | } |
138 | 155 |
|
139 | 156 | public FunctionExpression gte(Expression... expressions) { |
140 | | - return (FunctionExpression) |
141 | | - repository.compile(BuiltinFunctionName.GTE.getName(), Arrays.asList(expressions)); |
| 157 | + return function(BuiltinFunctionName.GTE, expressions); |
142 | 158 | } |
143 | 159 |
|
144 | 160 | public FunctionExpression like(Expression... expressions) { |
145 | | - return (FunctionExpression) |
146 | | - repository.compile(BuiltinFunctionName.LIKE.getName(), Arrays.asList(expressions)); |
| 161 | + return function(BuiltinFunctionName.LIKE, expressions); |
147 | 162 | } |
148 | 163 |
|
149 | 164 | public Aggregator avg(Expression... expressions) { |
150 | | - return (Aggregator) |
151 | | - repository.compile(BuiltinFunctionName.AVG.getName(), Arrays.asList(expressions)); |
| 165 | + return aggregate(BuiltinFunctionName.AVG, expressions); |
152 | 166 | } |
153 | 167 |
|
154 | 168 | public Aggregator sum(Expression... expressions) { |
155 | | - return (Aggregator) |
156 | | - repository.compile(BuiltinFunctionName.SUM.getName(), Arrays.asList(expressions)); |
| 169 | + return aggregate(BuiltinFunctionName.SUM, expressions); |
157 | 170 | } |
158 | 171 |
|
159 | 172 | public Aggregator count(Expression... expressions) { |
160 | | - return (Aggregator) |
161 | | - repository.compile(BuiltinFunctionName.COUNT.getName(), Arrays.asList(expressions)); |
| 173 | + return aggregate(BuiltinFunctionName.COUNT, expressions); |
| 174 | + } |
| 175 | + |
| 176 | + private FunctionExpression function(BuiltinFunctionName functionName, Expression... expressions) { |
| 177 | + return (FunctionExpression) repository.compile( |
| 178 | + functionName.getName(), Arrays.asList(expressions)); |
| 179 | + } |
| 180 | + |
| 181 | + private Aggregator aggregate(BuiltinFunctionName functionName, Expression... expressions) { |
| 182 | + return (Aggregator) repository.compile( |
| 183 | + functionName.getName(), Arrays.asList(expressions)); |
162 | 184 | } |
163 | 185 | } |
0 commit comments