This is an automated email from the ASF dual-hosted git repository. jark pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/flink.git
commit d2085a18169da7bf84fdff98c5f743a8e75b34a7 Author: JingsongLi <lzljs3620...@aliyun.com> AuthorDate: Thu Aug 22 12:58:01 2019 +0200 [FLINK-13774][table-planner-blink] Remove unresolved expression in RexNodeConverter --- .../planner/expressions/RexNodeConverter.java | 58 ++-------------------- 1 file changed, 5 insertions(+), 53 deletions(-) diff --git a/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/expressions/RexNodeConverter.java b/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/expressions/RexNodeConverter.java index 68b7b7f..731d550 100644 --- a/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/expressions/RexNodeConverter.java +++ b/flink-table/flink-table-planner-blink/src/main/java/org/apache/flink/table/planner/expressions/RexNodeConverter.java @@ -31,8 +31,6 @@ import org.apache.flink.table.expressions.TableReferenceExpression; import org.apache.flink.table.expressions.TimeIntervalUnit; import org.apache.flink.table.expressions.TimePointUnit; import org.apache.flink.table.expressions.TypeLiteralExpression; -import org.apache.flink.table.expressions.UnresolvedCallExpression; -import org.apache.flink.table.expressions.UnresolvedReferenceExpression; import org.apache.flink.table.expressions.ValueLiteralExpression; import org.apache.flink.table.expressions.utils.ApiExpressionUtils; import org.apache.flink.table.functions.AggregateFunction; @@ -121,8 +119,8 @@ import static org.apache.flink.table.types.utils.TypeConversions.fromLegacyInfoT /** * Visit expression to generator {@link RexNode}. * - * <p>TODO actually we should use {@link ResolvedExpressionVisitor} here as it is the output of the API. - * we will update it after introduce Expression resolve in AggCodeGen. + * <p>TODO remove blink expressions(like {@link ResolvedAggInputReference}) and use + * {@link ResolvedExpressionVisitor}. */ public class RexNodeConverter implements ExpressionVisitor<RexNode> { @@ -356,7 +354,7 @@ public class RexNodeConverter implements ExpressionVisitor<RexNode> { FunctionDefinition def = call.getFunctionDefinition(); if (conversionsOfBuiltInFunc.containsKey(def)) { RexNodeConversion conversion = conversionsOfBuiltInFunc.get(def); - return conversion.convert(call); + return conversion.convert(call.getChildren()); } else { throw new UnsupportedOperationException(def.toString()); } @@ -877,16 +875,12 @@ public class RexNodeConverter implements ExpressionVisitor<RexNode> { @Override public RexNode visit(Expression other) { - if (other instanceof UnresolvedReferenceExpression) { - return visitUnresolvedReferenceExpression((UnresolvedReferenceExpression) other); - } else if (other instanceof ResolvedAggInputReference) { + if (other instanceof ResolvedAggInputReference) { return visitResolvedAggInputReference((ResolvedAggInputReference) other); } else if (other instanceof ResolvedAggLocalReference) { return visitResolvedAggLocalReference((ResolvedAggLocalReference) other); } else if (other instanceof ResolvedDistinctKeyReference) { return visitResolvedDistinctKeyReference((ResolvedDistinctKeyReference) other); - } else if (other instanceof UnresolvedCallExpression) { - return visit((UnresolvedCallExpression) other); } else if (other instanceof RexNodeExpression) { return ((RexNodeExpression) other).getRexNode(); } else { @@ -894,10 +888,6 @@ public class RexNodeConverter implements ExpressionVisitor<RexNode> { } } - private RexNode visitUnresolvedReferenceExpression(UnresolvedReferenceExpression field) { - return relBuilder.field(field.getName()); - } - private RexNode visitResolvedAggInputReference(ResolvedAggInputReference reference) { // using index to resolve field directly, name used in toString only return new RexInputRef( @@ -922,34 +912,6 @@ public class RexNodeConverter implements ExpressionVisitor<RexNode> { type); } - private RexNode visit(UnresolvedCallExpression call) { - FunctionDefinition func = call.getFunctionDefinition(); - switch (func.getKind()) { - case SCALAR: - if (func instanceof ScalarFunctionDefinition) { - ScalarFunction scalaFunc = ((ScalarFunctionDefinition) func).getScalarFunction(); - List<RexNode> child = convertCallChildren(call.getChildren()); - SqlFunction sqlFunction = UserDefinedFunctionUtils.createScalarSqlFunction( - scalaFunc.functionIdentifier(), - scalaFunc.toString(), - scalaFunc, - typeFactory); - return relBuilder.call(sqlFunction, child); - } else { - FunctionDefinition def = call.getFunctionDefinition(); - if (conversionsOfBuiltInFunc.containsKey(def)) { - RexNodeConversion conversion = conversionsOfBuiltInFunc.get(def); - return conversion.convert(call); - } else { - throw new UnsupportedOperationException(def.toString()); - } - } - - default: - throw new UnsupportedOperationException(); - } - } - private RexNode createCollation(RexNode node, RelFieldCollation.Direction direction, RelFieldCollation.NullDirection nullDirection, Set<SqlKind> kinds) { switch (node.getKind()) { @@ -1025,20 +987,10 @@ public class RexNodeConverter implements ExpressionVisitor<RexNode> { } /** - * RexNodeConversion to define how to convert a {@link CallExpression} or a {@link UnresolvedCallExpression} which + * RexNodeConversion to define how to convert a {@link CallExpression} which * has built-in FunctionDefinition to RexNode. */ private interface RexNodeConversion { - RexNode convert(List<Expression> children); - - default RexNode convert(CallExpression expression) { - return convert(expression.getChildren()); - } - - default RexNode convert(UnresolvedCallExpression unresolvedCallExpression) { - return convert(unresolvedCallExpression.getChildren()); - } } - }