1 | /* | |
2 | * Copyright OpenSearch Contributors | |
3 | * SPDX-License-Identifier: Apache-2.0 | |
4 | */ | |
5 | ||
6 | ||
7 | package org.opensearch.sql.ast; | |
8 | ||
9 | import org.opensearch.sql.ast.expression.AggregateFunction; | |
10 | import org.opensearch.sql.ast.expression.Alias; | |
11 | import org.opensearch.sql.ast.expression.AllFields; | |
12 | import org.opensearch.sql.ast.expression.And; | |
13 | import org.opensearch.sql.ast.expression.Argument; | |
14 | import org.opensearch.sql.ast.expression.AttributeList; | |
15 | import org.opensearch.sql.ast.expression.Case; | |
16 | import org.opensearch.sql.ast.expression.Cast; | |
17 | import org.opensearch.sql.ast.expression.Compare; | |
18 | import org.opensearch.sql.ast.expression.ConstantFunction; | |
19 | import org.opensearch.sql.ast.expression.EqualTo; | |
20 | import org.opensearch.sql.ast.expression.Field; | |
21 | import org.opensearch.sql.ast.expression.Function; | |
22 | import org.opensearch.sql.ast.expression.HighlightFunction; | |
23 | import org.opensearch.sql.ast.expression.In; | |
24 | import org.opensearch.sql.ast.expression.Interval; | |
25 | import org.opensearch.sql.ast.expression.Let; | |
26 | import org.opensearch.sql.ast.expression.Literal; | |
27 | import org.opensearch.sql.ast.expression.Map; | |
28 | import org.opensearch.sql.ast.expression.Not; | |
29 | import org.opensearch.sql.ast.expression.Or; | |
30 | import org.opensearch.sql.ast.expression.QualifiedName; | |
31 | import org.opensearch.sql.ast.expression.RelevanceFieldList; | |
32 | import org.opensearch.sql.ast.expression.Span; | |
33 | import org.opensearch.sql.ast.expression.UnresolvedArgument; | |
34 | import org.opensearch.sql.ast.expression.UnresolvedAttribute; | |
35 | import org.opensearch.sql.ast.expression.When; | |
36 | import org.opensearch.sql.ast.expression.WindowFunction; | |
37 | import org.opensearch.sql.ast.expression.Xor; | |
38 | import org.opensearch.sql.ast.tree.AD; | |
39 | import org.opensearch.sql.ast.tree.Aggregation; | |
40 | import org.opensearch.sql.ast.tree.Dedupe; | |
41 | import org.opensearch.sql.ast.tree.Eval; | |
42 | import org.opensearch.sql.ast.tree.Filter; | |
43 | import org.opensearch.sql.ast.tree.Head; | |
44 | import org.opensearch.sql.ast.tree.Kmeans; | |
45 | import org.opensearch.sql.ast.tree.Limit; | |
46 | import org.opensearch.sql.ast.tree.ML; | |
47 | import org.opensearch.sql.ast.tree.Parse; | |
48 | import org.opensearch.sql.ast.tree.Project; | |
49 | import org.opensearch.sql.ast.tree.RareTopN; | |
50 | import org.opensearch.sql.ast.tree.Relation; | |
51 | import org.opensearch.sql.ast.tree.RelationSubquery; | |
52 | import org.opensearch.sql.ast.tree.Rename; | |
53 | import org.opensearch.sql.ast.tree.Sort; | |
54 | import org.opensearch.sql.ast.tree.TableFunction; | |
55 | import org.opensearch.sql.ast.tree.Values; | |
56 | ||
57 | /** | |
58 | * AST nodes visitor Defines the traverse path. | |
59 | */ | |
60 | public abstract class AbstractNodeVisitor<T, C> { | |
61 | ||
62 | public T visit(Node node, C context) { | |
63 | return null; | |
64 | } | |
65 | ||
66 | /** | |
67 | * Visit child node. | |
68 | * @param node {@link Node} | |
69 | * @param context Context | |
70 | * @return Return Type. | |
71 | */ | |
72 | public T visitChildren(Node node, C context) { | |
73 | T result = defaultResult(); | |
74 | ||
75 | for (Node child : node.getChild()) { | |
76 | T childResult = child.accept(this, context); | |
77 | result = aggregateResult(result, childResult); | |
78 | } | |
79 |
1
1. visitChildren : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitChildren → SURVIVED |
return result; |
80 | } | |
81 | ||
82 | private T defaultResult() { | |
83 | return null; | |
84 | } | |
85 | ||
86 | private T aggregateResult(T aggregate, T nextResult) { | |
87 |
1
1. aggregateResult : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::aggregateResult → SURVIVED |
return nextResult; |
88 | } | |
89 | ||
90 | public T visitRelation(Relation node, C context) { | |
91 |
1
1. visitRelation : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitRelation → NO_COVERAGE |
return visitChildren(node, context); |
92 | } | |
93 | ||
94 | public T visitRelationSubquery(RelationSubquery node, C context) { | |
95 |
1
1. visitRelationSubquery : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitRelationSubquery → NO_COVERAGE |
return visitChildren(node, context); |
96 | } | |
97 | ||
98 | public T visitTableFunction(TableFunction node, C context) { | |
99 |
1
1. visitTableFunction : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitTableFunction → NO_COVERAGE |
return visitChildren(node, context); |
100 | } | |
101 | ||
102 | public T visitFilter(Filter node, C context) { | |
103 |
1
1. visitFilter : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitFilter → NO_COVERAGE |
return visitChildren(node, context); |
104 | } | |
105 | ||
106 | public T visitProject(Project node, C context) { | |
107 |
1
1. visitProject : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitProject → NO_COVERAGE |
return visitChildren(node, context); |
108 | } | |
109 | ||
110 | public T visitAggregation(Aggregation node, C context) { | |
111 |
1
1. visitAggregation : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitAggregation → NO_COVERAGE |
return visitChildren(node, context); |
112 | } | |
113 | ||
114 | public T visitEqualTo(EqualTo node, C context) { | |
115 |
1
1. visitEqualTo : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitEqualTo → NO_COVERAGE |
return visitChildren(node, context); |
116 | } | |
117 | ||
118 | public T visitLiteral(Literal node, C context) { | |
119 |
1
1. visitLiteral : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitLiteral → NO_COVERAGE |
return visitChildren(node, context); |
120 | } | |
121 | ||
122 | public T visitRelevanceFieldList(RelevanceFieldList node, C context) { | |
123 |
1
1. visitRelevanceFieldList : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitRelevanceFieldList → NO_COVERAGE |
return visitChildren(node, context); |
124 | } | |
125 | ||
126 | public T visitConstantFunction(ConstantFunction node, C context) { | |
127 |
1
1. visitConstantFunction : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitConstantFunction → NO_COVERAGE |
return visitChildren(node, context); |
128 | } | |
129 | ||
130 | public T visitUnresolvedAttribute(UnresolvedAttribute node, C context) { | |
131 |
1
1. visitUnresolvedAttribute : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitUnresolvedAttribute → NO_COVERAGE |
return visitChildren(node, context); |
132 | } | |
133 | ||
134 | public T visitAttributeList(AttributeList node, C context) { | |
135 |
1
1. visitAttributeList : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitAttributeList → NO_COVERAGE |
return visitChildren(node, context); |
136 | } | |
137 | ||
138 | public T visitMap(Map node, C context) { | |
139 |
1
1. visitMap : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitMap → NO_COVERAGE |
return visitChildren(node, context); |
140 | } | |
141 | ||
142 | public T visitNot(Not node, C context) { | |
143 |
1
1. visitNot : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitNot → NO_COVERAGE |
return visitChildren(node, context); |
144 | } | |
145 | ||
146 | public T visitOr(Or node, C context) { | |
147 |
1
1. visitOr : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitOr → NO_COVERAGE |
return visitChildren(node, context); |
148 | } | |
149 | ||
150 | public T visitAnd(And node, C context) { | |
151 |
1
1. visitAnd : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitAnd → NO_COVERAGE |
return visitChildren(node, context); |
152 | } | |
153 | ||
154 | public T visitXor(Xor node, C context) { | |
155 |
1
1. visitXor : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitXor → NO_COVERAGE |
return visitChildren(node, context); |
156 | } | |
157 | ||
158 | public T visitAggregateFunction(AggregateFunction node, C context) { | |
159 |
1
1. visitAggregateFunction : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitAggregateFunction → NO_COVERAGE |
return visitChildren(node, context); |
160 | } | |
161 | ||
162 | public T visitFunction(Function node, C context) { | |
163 |
1
1. visitFunction : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitFunction → NO_COVERAGE |
return visitChildren(node, context); |
164 | } | |
165 | ||
166 | public T visitWindowFunction(WindowFunction node, C context) { | |
167 |
1
1. visitWindowFunction : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitWindowFunction → NO_COVERAGE |
return visitChildren(node, context); |
168 | } | |
169 | ||
170 | public T visitIn(In node, C context) { | |
171 |
1
1. visitIn : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitIn → NO_COVERAGE |
return visitChildren(node, context); |
172 | } | |
173 | ||
174 | public T visitCompare(Compare node, C context) { | |
175 |
1
1. visitCompare : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitCompare → NO_COVERAGE |
return visitChildren(node, context); |
176 | } | |
177 | ||
178 | public T visitArgument(Argument node, C context) { | |
179 |
1
1. visitArgument : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitArgument → NO_COVERAGE |
return visitChildren(node, context); |
180 | } | |
181 | ||
182 | public T visitField(Field node, C context) { | |
183 |
1
1. visitField : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitField → SURVIVED |
return visitChildren(node, context); |
184 | } | |
185 | ||
186 | public T visitQualifiedName(QualifiedName node, C context) { | |
187 |
1
1. visitQualifiedName : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitQualifiedName → SURVIVED |
return visitChildren(node, context); |
188 | } | |
189 | ||
190 | public T visitRename(Rename node, C context) { | |
191 |
1
1. visitRename : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitRename → NO_COVERAGE |
return visitChildren(node, context); |
192 | } | |
193 | ||
194 | public T visitEval(Eval node, C context) { | |
195 |
1
1. visitEval : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitEval → NO_COVERAGE |
return visitChildren(node, context); |
196 | } | |
197 | ||
198 | public T visitParse(Parse node, C context) { | |
199 |
1
1. visitParse : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitParse → NO_COVERAGE |
return visitChildren(node, context); |
200 | } | |
201 | ||
202 | public T visitLet(Let node, C context) { | |
203 |
1
1. visitLet : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitLet → NO_COVERAGE |
return visitChildren(node, context); |
204 | } | |
205 | ||
206 | public T visitSort(Sort node, C context) { | |
207 |
1
1. visitSort : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitSort → NO_COVERAGE |
return visitChildren(node, context); |
208 | } | |
209 | ||
210 | public T visitDedupe(Dedupe node, C context) { | |
211 |
1
1. visitDedupe : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitDedupe → NO_COVERAGE |
return visitChildren(node, context); |
212 | } | |
213 | ||
214 | public T visitHead(Head node, C context) { | |
215 |
1
1. visitHead : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitHead → NO_COVERAGE |
return visitChildren(node, context); |
216 | } | |
217 | ||
218 | public T visitRareTopN(RareTopN node, C context) { | |
219 |
1
1. visitRareTopN : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitRareTopN → NO_COVERAGE |
return visitChildren(node, context); |
220 | } | |
221 | ||
222 | public T visitValues(Values node, C context) { | |
223 |
1
1. visitValues : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitValues → NO_COVERAGE |
return visitChildren(node, context); |
224 | } | |
225 | ||
226 | public T visitAlias(Alias node, C context) { | |
227 |
1
1. visitAlias : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitAlias → NO_COVERAGE |
return visitChildren(node, context); |
228 | } | |
229 | ||
230 | public T visitAllFields(AllFields node, C context) { | |
231 |
1
1. visitAllFields : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitAllFields → SURVIVED |
return visitChildren(node, context); |
232 | } | |
233 | ||
234 | public T visitInterval(Interval node, C context) { | |
235 |
1
1. visitInterval : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitInterval → NO_COVERAGE |
return visitChildren(node, context); |
236 | } | |
237 | ||
238 | public T visitCase(Case node, C context) { | |
239 |
1
1. visitCase : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitCase → NO_COVERAGE |
return visitChildren(node, context); |
240 | } | |
241 | ||
242 | public T visitWhen(When node, C context) { | |
243 |
1
1. visitWhen : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitWhen → NO_COVERAGE |
return visitChildren(node, context); |
244 | } | |
245 | ||
246 | public T visitCast(Cast node, C context) { | |
247 |
1
1. visitCast : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitCast → NO_COVERAGE |
return visitChildren(node, context); |
248 | } | |
249 | ||
250 | public T visitUnresolvedArgument(UnresolvedArgument node, C context) { | |
251 |
1
1. visitUnresolvedArgument : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitUnresolvedArgument → NO_COVERAGE |
return visitChildren(node, context); |
252 | } | |
253 | ||
254 | public T visitLimit(Limit node, C context) { | |
255 |
1
1. visitLimit : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitLimit → NO_COVERAGE |
return visitChildren(node, context); |
256 | } | |
257 | ||
258 | public T visitSpan(Span node, C context) { | |
259 |
1
1. visitSpan : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitSpan → NO_COVERAGE |
return visitChildren(node, context); |
260 | } | |
261 | ||
262 | public T visitKmeans(Kmeans node, C context) { | |
263 |
1
1. visitKmeans : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitKmeans → NO_COVERAGE |
return visitChildren(node, context); |
264 | } | |
265 | ||
266 | public T visitAD(AD node, C context) { | |
267 |
1
1. visitAD : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitAD → NO_COVERAGE |
return visitChildren(node, context); |
268 | } | |
269 | ||
270 | public T visitML(ML node, C context) { | |
271 |
1
1. visitML : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitML → NO_COVERAGE |
return visitChildren(node, context); |
272 | } | |
273 | ||
274 | public T visitHighlightFunction(HighlightFunction node, C context) { | |
275 |
1
1. visitHighlightFunction : replaced return value with null for org/opensearch/sql/ast/AbstractNodeVisitor::visitHighlightFunction → NO_COVERAGE |
return visitChildren(node, context); |
276 | } | |
277 | } | |
Mutations | ||
79 |
1.1 |
|
87 |
1.1 |
|
91 |
1.1 |
|
95 |
1.1 |
|
99 |
1.1 |
|
103 |
1.1 |
|
107 |
1.1 |
|
111 |
1.1 |
|
115 |
1.1 |
|
119 |
1.1 |
|
123 |
1.1 |
|
127 |
1.1 |
|
131 |
1.1 |
|
135 |
1.1 |
|
139 |
1.1 |
|
143 |
1.1 |
|
147 |
1.1 |
|
151 |
1.1 |
|
155 |
1.1 |
|
159 |
1.1 |
|
163 |
1.1 |
|
167 |
1.1 |
|
171 |
1.1 |
|
175 |
1.1 |
|
179 |
1.1 |
|
183 |
1.1 |
|
187 |
1.1 |
|
191 |
1.1 |
|
195 |
1.1 |
|
199 |
1.1 |
|
203 |
1.1 |
|
207 |
1.1 |
|
211 |
1.1 |
|
215 |
1.1 |
|
219 |
1.1 |
|
223 |
1.1 |
|
227 |
1.1 |
|
231 |
1.1 |
|
235 |
1.1 |
|
239 |
1.1 |
|
243 |
1.1 |
|
247 |
1.1 |
|
251 |
1.1 |
|
255 |
1.1 |
|
259 |
1.1 |
|
263 |
1.1 |
|
267 |
1.1 |
|
271 |
1.1 |
|
275 |
1.1 |