Skip to content

Commit c8be912

Browse files
author
Guian Gumpac
committed
Resolved merge conflicts
Signed-off-by: Guian Gumpac <[email protected]>
2 parents ca03537 + 354e843 commit c8be912

File tree

78 files changed

+3315
-858
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+3315
-858
lines changed

core/src/main/java/org/opensearch/sql/analysis/AnalysisContext.java

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@
77
package org.opensearch.sql.analysis;
88

99
import java.util.ArrayList;
10-
import java.util.HashMap;
1110
import java.util.List;
12-
import java.util.Map;
1311
import java.util.Objects;
1412
import lombok.Getter;
15-
import org.opensearch.sql.expression.Expression;
1613
import org.opensearch.sql.expression.NamedExpression;
14+
import org.opensearch.sql.expression.function.FunctionProperties;
1715

1816
/**
1917
* The context used for Analyzer.
@@ -26,13 +24,8 @@ public class AnalysisContext {
2624
@Getter
2725
private final List<NamedExpression> namedParseExpressions;
2826

29-
/**
30-
* Storage for values of functions which return a constant value.
31-
* We are storing the values there to use it in sequential calls to those functions.
32-
* For example, `now` function should the same value during processing a query.
33-
*/
3427
@Getter
35-
private final Map<String, Expression> constantFunctionValues;
28+
private final FunctionProperties functionProperties;
3629

3730
public AnalysisContext() {
3831
this(new TypeEnvironment(null));
@@ -45,7 +38,7 @@ public AnalysisContext() {
4538
public AnalysisContext(TypeEnvironment environment) {
4639
this.environment = environment;
4740
this.namedParseExpressions = new ArrayList<>();
48-
this.constantFunctionValues = new HashMap<>();
41+
this.functionProperties = new FunctionProperties();
4942
}
5043

5144
/**

core/src/main/java/org/opensearch/sql/analysis/Analyzer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ public LogicalPlan visitTableFunction(TableFunction node, AnalysisContext contex
196196
.map(unresolvedExpression -> this.expressionAnalyzer.analyze(unresolvedExpression, context))
197197
.collect(Collectors.toList());
198198
TableFunctionImplementation tableFunctionImplementation
199-
= (TableFunctionImplementation) repository.compile(
199+
= (TableFunctionImplementation) repository.compile(context.getFunctionProperties(),
200200
dataSourceSchemaIdentifierNameResolver.getDataSourceName(), functionName, arguments);
201201
context.push();
202202
TypeEnvironment curEnv = context.peek();

core/src/main/java/org/opensearch/sql/analysis/ExpressionAnalyzer.java

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525
import org.opensearch.sql.ast.expression.Case;
2626
import org.opensearch.sql.ast.expression.Cast;
2727
import org.opensearch.sql.ast.expression.Compare;
28-
import org.opensearch.sql.ast.expression.ConstantFunction;
2928
import org.opensearch.sql.ast.expression.EqualTo;
3029
import org.opensearch.sql.ast.expression.Field;
3130
import org.opensearch.sql.ast.expression.Function;
@@ -78,7 +77,8 @@ public class ExpressionAnalyzer extends AbstractNodeVisitor<Expression, Analysis
7877
public Expression visitCast(Cast node, AnalysisContext context) {
7978
final Expression expression = node.getExpression().accept(this, context);
8079
return (Expression) repository
81-
.compile(node.convertFunctionName(), Collections.singletonList(expression));
80+
.compile(context.getFunctionProperties(), node.convertFunctionName(),
81+
Collections.singletonList(expression));
8282
}
8383

8484
public ExpressionAnalyzer(
@@ -156,7 +156,7 @@ public Expression visitAggregateFunction(AggregateFunction node, AnalysisContext
156156
builder.add(arg.accept(this, context));
157157
}
158158
Aggregator aggregator = (Aggregator) repository.compile(
159-
builtinFunctionName.get().getName(), builder.build());
159+
context.getFunctionProperties(), builtinFunctionName.get().getName(), builder.build());
160160
aggregator.distinct(node.getDistinct());
161161
if (node.condition() != null) {
162162
aggregator.condition(analyze(node.condition(), context));
@@ -173,27 +173,15 @@ public Expression visitRelevanceFieldList(RelevanceFieldList node, AnalysisConte
173173
ImmutableMap.copyOf(node.getFieldList())));
174174
}
175175

176-
@Override
177-
public Expression visitConstantFunction(ConstantFunction node, AnalysisContext context) {
178-
var valueName = node.getFuncName();
179-
if (context.getConstantFunctionValues().containsKey(valueName)) {
180-
return context.getConstantFunctionValues().get(valueName);
181-
}
182-
183-
var value = visitFunction(node, context);
184-
value = DSL.literal(value.valueOf());
185-
context.getConstantFunctionValues().put(valueName, value);
186-
return value;
187-
}
188-
189176
@Override
190177
public Expression visitFunction(Function node, AnalysisContext context) {
191178
FunctionName functionName = FunctionName.of(node.getFuncName());
192179
List<Expression> arguments =
193180
node.getFuncArgs().stream()
194181
.map(unresolvedExpression -> analyze(unresolvedExpression, context))
195182
.collect(Collectors.toList());
196-
return (Expression) repository.compile(functionName, arguments);
183+
return (Expression) repository.compile(context.getFunctionProperties(),
184+
functionName, arguments);
197185
}
198186

199187
@SuppressWarnings("unchecked")
@@ -237,7 +225,8 @@ public Expression visitCompare(Compare node, AnalysisContext context) {
237225
Expression left = analyze(node.getLeft(), context);
238226
Expression right = analyze(node.getRight(), context);
239227
return (Expression)
240-
repository.compile(functionName, Arrays.asList(left, right));
228+
repository.compile(context.getFunctionProperties(),
229+
functionName, Arrays.asList(left, right));
241230
}
242231

243232
@Override

core/src/main/java/org/opensearch/sql/analysis/ExpressionReferenceOptimizer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,8 @@ public Expression visitFunction(FunctionExpression node, AnalysisContext context
7070
final List<Expression> args =
7171
node.getArguments().stream().map(expr -> expr.accept(this, context))
7272
.collect(Collectors.toList());
73-
return (Expression) repository.compile(node.getFunctionName(), args);
73+
return (Expression) repository.compile(context.getFunctionProperties(),
74+
node.getFunctionName(), args);
7475
}
7576
}
7677

core/src/main/java/org/opensearch/sql/ast/AbstractNodeVisitor.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import org.opensearch.sql.ast.expression.Case;
1616
import org.opensearch.sql.ast.expression.Cast;
1717
import org.opensearch.sql.ast.expression.Compare;
18-
import org.opensearch.sql.ast.expression.ConstantFunction;
1918
import org.opensearch.sql.ast.expression.EqualTo;
2019
import org.opensearch.sql.ast.expression.Field;
2120
import org.opensearch.sql.ast.expression.Function;
@@ -126,10 +125,6 @@ public T visitRelevanceFieldList(RelevanceFieldList node, C context) {
126125
return visitChildren(node, context);
127126
}
128127

129-
public T visitConstantFunction(ConstantFunction node, C context) {
130-
return visitChildren(node, context);
131-
}
132-
133128
public T visitUnresolvedAttribute(UnresolvedAttribute node, C context) {
134129
return visitChildren(node, context);
135130
}

core/src/main/java/org/opensearch/sql/ast/dsl/AstDSL.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import org.opensearch.sql.ast.expression.Case;
2020
import org.opensearch.sql.ast.expression.Cast;
2121
import org.opensearch.sql.ast.expression.Compare;
22-
import org.opensearch.sql.ast.expression.ConstantFunction;
2322
import org.opensearch.sql.ast.expression.DataType;
2423
import org.opensearch.sql.ast.expression.EqualTo;
2524
import org.opensearch.sql.ast.expression.Field;
@@ -246,10 +245,6 @@ public static Function function(String funcName, UnresolvedExpression... funcArg
246245
return new Function(funcName, Arrays.asList(funcArgs));
247246
}
248247

249-
public static Function constantFunction(String funcName, UnresolvedExpression... funcArgs) {
250-
return new ConstantFunction(funcName, Arrays.asList(funcArgs));
251-
}
252-
253248
/**
254249
* CASE
255250
* WHEN search_condition THEN result_expr

core/src/main/java/org/opensearch/sql/ast/expression/ConstantFunction.java

Lines changed: 0 additions & 28 deletions
This file was deleted.

0 commit comments

Comments
 (0)