This is an automated email from the ASF dual-hosted git repository. hui pushed a commit to branch lmh/TypeProviderOpt in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit babbe9c671a40524767cb1a57421c594a8c306a6 Author: Minghui Liu <[email protected]> AuthorDate: Tue Sep 6 10:55:47 2022 +0800 remove inferTypes in Expression --- .../iotdb/db/mpp/plan/expression/Expression.java | 21 --------- .../binary/ArithmeticBinaryExpression.java | 25 ----------- .../expression/binary/CompareBinaryExpression.java | 50 ---------------------- .../expression/binary/LogicBinaryExpression.java | 15 ------- .../mpp/plan/expression/leaf/ConstantOperand.java | 7 --- .../plan/expression/leaf/TimeSeriesOperand.java | 7 --- .../mpp/plan/expression/leaf/TimestampOperand.java | 8 ---- .../plan/expression/multi/FunctionExpression.java | 39 ----------------- .../plan/expression/ternary/BetweenExpression.java | 14 ------ .../db/mpp/plan/expression/unary/InExpression.java | 12 ------ .../plan/expression/unary/IsNullExpression.java | 12 ------ .../mpp/plan/expression/unary/LikeExpression.java | 14 ------ .../plan/expression/unary/LogicNotExpression.java | 14 ------ .../plan/expression/unary/NegationExpression.java | 20 --------- .../plan/expression/unary/RegularExpression.java | 14 ------ 15 files changed, 272 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/Expression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/Expression.java index 28d87a8ba2..0e00a37555 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/Expression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/Expression.java @@ -21,7 +21,6 @@ package org.apache.iotdb.db.mpp.plan.expression; import org.apache.iotdb.commons.path.PartialPath; import org.apache.iotdb.db.exception.query.LogicalOptimizeException; -import org.apache.iotdb.db.exception.sql.SemanticException; import org.apache.iotdb.db.mpp.plan.analyze.TypeProvider; import org.apache.iotdb.db.mpp.plan.expression.binary.AdditionExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.DivisionExpression; @@ -53,14 +52,12 @@ import org.apache.iotdb.db.mpp.plan.statement.StatementNode; import org.apache.iotdb.db.mpp.transformation.dag.memory.LayerMemoryAssigner; import org.apache.iotdb.db.mpp.transformation.dag.udf.UDTFExecutor; import org.apache.iotdb.db.qp.physical.crud.UDTFPlan; -import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; import java.io.DataOutputStream; import java.io.IOException; import java.nio.ByteBuffer; import java.time.ZoneId; -import java.util.Arrays; import java.util.Deque; import java.util.Iterator; import java.util.LinkedList; @@ -147,24 +144,6 @@ public abstract class Expression extends StatementNode { public abstract void constructUdfExecutors( Map<String, UDTFExecutor> expressionName2Executor, ZoneId zoneId); - ///////////////////////////////////////////////////////////////////////////////////////////////// - // type inference - ///////////////////////////////////////////////////////////////////////////////////////////////// - public abstract TSDataType inferTypes(TypeProvider typeProvider); - - protected static void checkInputExpressionDataType( - String expressionString, TSDataType actual, TSDataType... expected) { - for (TSDataType type : expected) { - if (actual.equals(type)) { - return; - } - } - throw new SemanticException( - String.format( - "Invalid input expression data type. expression: %s, actual data type: %s, expected data type(s): %s.", - expressionString, actual.name(), Arrays.toString(expected))); - } - ///////////////////////////////////////////////////////////////////////////////////////////////// // For expression evaluation DAG building ///////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/ArithmeticBinaryExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/ArithmeticBinaryExpression.java index cb7d7eacec..d2189e2e47 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/ArithmeticBinaryExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/ArithmeticBinaryExpression.java @@ -19,10 +19,8 @@ package org.apache.iotdb.db.mpp.plan.expression.binary; -import org.apache.iotdb.db.mpp.plan.analyze.TypeProvider; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; -import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import java.nio.ByteBuffer; @@ -36,29 +34,6 @@ public abstract class ArithmeticBinaryExpression extends BinaryExpression { super(byteBuffer); } - @Override - public final TSDataType inferTypes(TypeProvider typeProvider) { - final String expressionString = toString(); - if (!typeProvider.containsTypeInfoOf(expressionString)) { - checkInputExpressionDataType( - leftExpression.toString(), - leftExpression.inferTypes(typeProvider), - TSDataType.INT32, - TSDataType.INT64, - TSDataType.FLOAT, - TSDataType.DOUBLE); - checkInputExpressionDataType( - rightExpression.toString(), - rightExpression.inferTypes(typeProvider), - TSDataType.INT32, - TSDataType.INT64, - TSDataType.FLOAT, - TSDataType.DOUBLE); - typeProvider.setType(expressionString, TSDataType.DOUBLE); - } - return TSDataType.DOUBLE; - } - @Override public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) { return visitor.visitArithmeticBinaryExpression(this, context); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/CompareBinaryExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/CompareBinaryExpression.java index 850d89b3df..8a3f109c5e 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/CompareBinaryExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/CompareBinaryExpression.java @@ -19,10 +19,8 @@ package org.apache.iotdb.db.mpp.plan.expression.binary; -import org.apache.iotdb.db.mpp.plan.analyze.TypeProvider; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; -import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import java.nio.ByteBuffer; @@ -36,54 +34,6 @@ public abstract class CompareBinaryExpression extends BinaryExpression { super(byteBuffer); } - @Override - public TSDataType inferTypes(TypeProvider typeProvider) { - final String expressionString = toString(); - - if (!typeProvider.containsTypeInfoOf(expressionString)) { - final TSDataType leftExpressionDataType = leftExpression.inferTypes(typeProvider); - final TSDataType rightExpressionDataType = rightExpression.inferTypes(typeProvider); - - if (!leftExpressionDataType.equals(rightExpressionDataType)) { - final String leftExpressionString = leftExpression.toString(); - final String rightExpressionString = rightExpression.toString(); - - if (TSDataType.BOOLEAN.equals(leftExpressionDataType) - || TSDataType.BOOLEAN.equals(rightExpressionDataType)) { - checkInputExpressionDataType( - leftExpressionString, leftExpressionDataType, TSDataType.BOOLEAN); - checkInputExpressionDataType( - rightExpressionString, rightExpressionDataType, TSDataType.BOOLEAN); - } else if (TSDataType.TEXT.equals(leftExpressionDataType) - || TSDataType.TEXT.equals(rightExpressionDataType)) { - checkInputExpressionDataType( - leftExpressionString, leftExpressionDataType, TSDataType.TEXT); - checkInputExpressionDataType( - rightExpressionString, rightExpressionDataType, TSDataType.TEXT); - } else { - checkInputExpressionDataType( - leftExpressionString, - leftExpressionDataType, - TSDataType.INT32, - TSDataType.INT64, - TSDataType.FLOAT, - TSDataType.DOUBLE); - checkInputExpressionDataType( - rightExpressionString, - rightExpressionDataType, - TSDataType.INT32, - TSDataType.INT64, - TSDataType.FLOAT, - TSDataType.DOUBLE); - } - } - - typeProvider.setType(expressionString, TSDataType.BOOLEAN); - } - - return TSDataType.BOOLEAN; - } - @Override public boolean isCompareBinaryExpression() { return true; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LogicBinaryExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LogicBinaryExpression.java index 05bcd06fd2..e98ce86e82 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LogicBinaryExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/LogicBinaryExpression.java @@ -19,10 +19,8 @@ package org.apache.iotdb.db.mpp.plan.expression.binary; -import org.apache.iotdb.db.mpp.plan.analyze.TypeProvider; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; -import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import java.nio.ByteBuffer; @@ -36,19 +34,6 @@ public abstract class LogicBinaryExpression extends BinaryExpression { super(byteBuffer); } - @Override - public final TSDataType inferTypes(TypeProvider typeProvider) { - final String expressionString = toString(); - if (!typeProvider.containsTypeInfoOf(expressionString)) { - checkInputExpressionDataType( - leftExpression.toString(), leftExpression.inferTypes(typeProvider), TSDataType.BOOLEAN); - checkInputExpressionDataType( - rightExpression.toString(), rightExpression.inferTypes(typeProvider), TSDataType.BOOLEAN); - typeProvider.setType(expressionString, TSDataType.BOOLEAN); - } - return TSDataType.BOOLEAN; - } - @Override public <R, C> R accept(ExpressionVisitor<R, C> visitor, C context) { return visitor.visitLogicBinaryExpression(this, context); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/leaf/ConstantOperand.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/leaf/ConstantOperand.java index 8056c963a8..0d4801c3be 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/leaf/ConstantOperand.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/leaf/ConstantOperand.java @@ -20,7 +20,6 @@ package org.apache.iotdb.db.mpp.plan.expression.leaf; import org.apache.iotdb.commons.path.PartialPath; -import org.apache.iotdb.db.mpp.plan.analyze.TypeProvider; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; @@ -96,12 +95,6 @@ public class ConstantOperand extends LeafOperand { // Do nothing } - @Override - public TSDataType inferTypes(TypeProvider typeProvider) { - typeProvider.setType(toString(), dataType); - return dataType; - } - @Override public void bindInputLayerColumnIndexWithExpression(UDTFPlan udtfPlan) { // Do nothing diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/leaf/TimeSeriesOperand.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/leaf/TimeSeriesOperand.java index 7195dc992e..7d80257dd8 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/leaf/TimeSeriesOperand.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/leaf/TimeSeriesOperand.java @@ -22,14 +22,12 @@ package org.apache.iotdb.db.mpp.plan.expression.leaf; import org.apache.iotdb.commons.path.PartialPath; import org.apache.iotdb.db.exception.query.LogicalOptimizeException; import org.apache.iotdb.db.metadata.path.PathDeserializeUtil; -import org.apache.iotdb.db.mpp.plan.analyze.TypeProvider; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.InputLocation; import org.apache.iotdb.db.mpp.transformation.dag.memory.LayerMemoryAssigner; import org.apache.iotdb.db.qp.physical.crud.UDTFPlan; -import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import java.io.DataOutputStream; import java.io.IOException; @@ -90,11 +88,6 @@ public class TimeSeriesOperand extends LeafOperand { pathSet.add(path); } - @Override - public TSDataType inferTypes(TypeProvider typeProvider) { - return typeProvider.getType(toString()); - } - @Override public void bindInputLayerColumnIndexWithExpression(UDTFPlan udtfPlan) { inputColumnIndex = udtfPlan.getReaderIndexByExpressionName(toString()); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/leaf/TimestampOperand.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/leaf/TimestampOperand.java index 076d7594d2..496b599aa9 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/leaf/TimestampOperand.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/leaf/TimestampOperand.java @@ -21,14 +21,12 @@ package org.apache.iotdb.db.mpp.plan.expression.leaf; import org.apache.iotdb.commons.path.PartialPath; import org.apache.iotdb.db.exception.query.LogicalOptimizeException; -import org.apache.iotdb.db.mpp.plan.analyze.TypeProvider; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; import org.apache.iotdb.db.mpp.plan.planner.plan.parameter.InputLocation; import org.apache.iotdb.db.mpp.transformation.dag.memory.LayerMemoryAssigner; import org.apache.iotdb.db.qp.physical.crud.UDTFPlan; -import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import java.io.DataOutputStream; import java.io.IOException; @@ -77,12 +75,6 @@ public class TimestampOperand extends LeafOperand { pathSet.add(TIMESTAMP_PARTIAL_PATH); } - @Override - public TSDataType inferTypes(TypeProvider typeProvider) { - typeProvider.setType(toString(), TSDataType.INT64); - return TSDataType.INT64; - } - @Override public void bindInputLayerColumnIndexWithExpression(UDTFPlan udtfPlan) { // do nothing diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/FunctionExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/FunctionExpression.java index ca3a83f9b2..197fa1b41e 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/FunctionExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/FunctionExpression.java @@ -23,7 +23,6 @@ import org.apache.iotdb.commons.conf.IoTDBConstant; import org.apache.iotdb.commons.path.PartialPath; import org.apache.iotdb.commons.udf.builtin.BuiltinAggregationFunction; import org.apache.iotdb.db.exception.query.LogicalOptimizeException; -import org.apache.iotdb.db.exception.sql.SemanticException; import org.apache.iotdb.db.mpp.plan.analyze.TypeProvider; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; @@ -35,8 +34,6 @@ import org.apache.iotdb.db.mpp.transformation.dag.udf.UDTFExecutor; import org.apache.iotdb.db.mpp.transformation.dag.udf.UDTFInformationInferrer; import org.apache.iotdb.db.qp.physical.crud.UDTFPlan; import org.apache.iotdb.db.qp.strategy.optimizer.ConcatPathOptimizer; -import org.apache.iotdb.db.utils.TypeInferenceUtils; -import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; import org.apache.iotdb.udf.api.customizer.strategy.AccessStrategy; @@ -242,42 +239,6 @@ public class FunctionExpression extends Expression { expressionName2Executor.put(expressionString, new UDTFExecutor(functionName, zoneId)); } - @Override - public TSDataType inferTypes(TypeProvider typeProvider) { - final String expressionString = toString(); - - if (!typeProvider.containsTypeInfoOf(expressionString)) { - for (Expression expression : expressions) { - expression.inferTypes(typeProvider); - } - - if (!isBuiltInAggregationFunctionExpression()) { - typeProvider.setType( - expressionString, - new UDTFInformationInferrer(functionName) - .inferOutputType( - expressions.stream().map(Expression::toString).collect(Collectors.toList()), - expressions.stream() - .map(f -> typeProvider.getType(f.toString())) - .collect(Collectors.toList()), - functionAttributes)); - } else { - if (expressions.size() != 1) { - throw new SemanticException( - String.format( - "Builtin aggregation function only accepts 1 input expression. Actual %d input expressions.", - expressions.size())); - } - typeProvider.setType( - expressionString, - TypeInferenceUtils.getAggrDataType( - functionName, typeProvider.getType(expressions.get(0).toString()))); - } - } - - return typeProvider.getType(expressionString); - } - @Override public void bindInputLayerColumnIndexWithExpression(UDTFPlan udtfPlan) { for (Expression expression : expressions) { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ternary/BetweenExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ternary/BetweenExpression.java index 3f3be2e947..62e91a9348 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ternary/BetweenExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ternary/BetweenExpression.java @@ -21,11 +21,9 @@ package org.apache.iotdb.db.mpp.plan.expression.ternary; -import org.apache.iotdb.db.mpp.plan.analyze.TypeProvider; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; -import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; import java.io.DataOutputStream; @@ -64,18 +62,6 @@ public class BetweenExpression extends TernaryExpression { return "between"; } - @Override - public TSDataType inferTypes(TypeProvider typeProvider) { - final String expressionString = toString(); - if (!typeProvider.containsTypeInfoOf(expressionString)) { - firstExpression.inferTypes(typeProvider); - secondExpression.inferTypes(typeProvider); - thirdExpression.inferTypes(typeProvider); - typeProvider.setType(expressionString, TSDataType.BOOLEAN); - } - return TSDataType.BOOLEAN; - } - @Override protected String getExpressionStringInternal() { return firstExpression + " BETWEEN " + secondExpression + " AND " + thirdExpression; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/InExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/InExpression.java index 8de05ba5d7..c9278f632e 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/InExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/InExpression.java @@ -19,14 +19,12 @@ package org.apache.iotdb.db.mpp.plan.expression.unary; -import org.apache.iotdb.db.mpp.plan.analyze.TypeProvider; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; import org.apache.iotdb.db.mpp.plan.expression.leaf.ConstantOperand; import org.apache.iotdb.db.mpp.plan.expression.leaf.TimeSeriesOperand; import org.apache.iotdb.db.mpp.plan.expression.multi.FunctionExpression; import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; -import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; import java.io.DataOutputStream; @@ -64,16 +62,6 @@ public class InExpression extends UnaryExpression { return values; } - @Override - public TSDataType inferTypes(TypeProvider typeProvider) { - final String expressionString = toString(); - if (!typeProvider.containsTypeInfoOf(expressionString)) { - expression.inferTypes(typeProvider); - typeProvider.setType(expressionString, TSDataType.BOOLEAN); - } - return TSDataType.BOOLEAN; - } - @Override protected String getExpressionStringInternal() { StringBuilder stringBuilder = new StringBuilder(); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/IsNullExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/IsNullExpression.java index 57062b3531..ba6e4a9fcb 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/IsNullExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/IsNullExpression.java @@ -19,11 +19,9 @@ package org.apache.iotdb.db.mpp.plan.expression.unary; -import org.apache.iotdb.db.mpp.plan.analyze.TypeProvider; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; -import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; import java.io.DataOutputStream; @@ -47,16 +45,6 @@ public class IsNullExpression extends UnaryExpression { return isNot; } - @Override - public TSDataType inferTypes(TypeProvider typeProvider) { - final String expressionString = toString(); - if (!typeProvider.containsTypeInfoOf(expressionString)) { - expression.inferTypes(typeProvider); - typeProvider.setType(expressionString, TSDataType.BOOLEAN); - } - return TSDataType.BOOLEAN; - } - @Override protected String getExpressionStringInternal() { return expression + " IS " + (isNot ? "NOT " : "") + "NULL"; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/LikeExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/LikeExpression.java index 5d65547011..543af09d2b 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/LikeExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/LikeExpression.java @@ -19,12 +19,9 @@ package org.apache.iotdb.db.mpp.plan.expression.unary; -import org.apache.iotdb.db.exception.sql.SemanticException; -import org.apache.iotdb.db.mpp.plan.analyze.TypeProvider; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; -import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; import java.io.DataOutputStream; @@ -118,17 +115,6 @@ public class LikeExpression extends UnaryExpression { return stringBuilder.toString(); } - @Override - public TSDataType inferTypes(TypeProvider typeProvider) throws SemanticException { - final String expressionString = toString(); - if (!typeProvider.containsTypeInfoOf(expressionString)) { - checkInputExpressionDataType( - expression.toString(), expression.inferTypes(typeProvider), TSDataType.TEXT); - typeProvider.setType(expressionString, TSDataType.BOOLEAN); - } - return TSDataType.BOOLEAN; - } - @Override protected String getExpressionStringInternal() { return expression + " LIKE '" + pattern + "'"; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/LogicNotExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/LogicNotExpression.java index 05800326ae..00527cd785 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/LogicNotExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/LogicNotExpression.java @@ -19,15 +19,12 @@ package org.apache.iotdb.db.mpp.plan.expression.unary; -import org.apache.iotdb.db.exception.sql.SemanticException; -import org.apache.iotdb.db.mpp.plan.analyze.TypeProvider; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; import org.apache.iotdb.db.mpp.plan.expression.leaf.ConstantOperand; import org.apache.iotdb.db.mpp.plan.expression.leaf.TimeSeriesOperand; import org.apache.iotdb.db.mpp.plan.expression.multi.FunctionExpression; import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; -import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import java.nio.ByteBuffer; @@ -46,17 +43,6 @@ public class LogicNotExpression extends UnaryExpression { return new LogicNotExpression(childExpression); } - @Override - public TSDataType inferTypes(TypeProvider typeProvider) throws SemanticException { - final String expressionString = toString(); - if (!typeProvider.containsTypeInfoOf(expressionString)) { - Expression.checkInputExpressionDataType( - expression.toString(), expression.inferTypes(typeProvider), TSDataType.BOOLEAN); - typeProvider.setType(expressionString, TSDataType.BOOLEAN); - } - return TSDataType.BOOLEAN; - } - @Override public String getExpressionStringInternal() { return expression instanceof FunctionExpression diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/NegationExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/NegationExpression.java index 68f902e360..7f279cd626 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/NegationExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/NegationExpression.java @@ -19,15 +19,12 @@ package org.apache.iotdb.db.mpp.plan.expression.unary; -import org.apache.iotdb.db.exception.sql.SemanticException; -import org.apache.iotdb.db.mpp.plan.analyze.TypeProvider; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; import org.apache.iotdb.db.mpp.plan.expression.leaf.ConstantOperand; import org.apache.iotdb.db.mpp.plan.expression.leaf.TimeSeriesOperand; import org.apache.iotdb.db.mpp.plan.expression.multi.FunctionExpression; import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; -import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import java.nio.ByteBuffer; @@ -46,23 +43,6 @@ public class NegationExpression extends UnaryExpression { return new NegationExpression(childExpression); } - @Override - public TSDataType inferTypes(TypeProvider typeProvider) throws SemanticException { - final String expressionString = toString(); - if (!typeProvider.containsTypeInfoOf(expressionString)) { - TSDataType inputExpressionType = expression.inferTypes(typeProvider); - Expression.checkInputExpressionDataType( - expression.toString(), - inputExpressionType, - TSDataType.INT32, - TSDataType.INT64, - TSDataType.FLOAT, - TSDataType.DOUBLE); - typeProvider.setType(expressionString, inputExpressionType); - } - return typeProvider.getType(expressionString); - } - @Override public String getExpressionStringInternal() { return expression instanceof TimeSeriesOperand diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/RegularExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/RegularExpression.java index 579ffa0b2c..a67dfb0340 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/RegularExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/RegularExpression.java @@ -19,12 +19,9 @@ package org.apache.iotdb.db.mpp.plan.expression.unary; -import org.apache.iotdb.db.exception.sql.SemanticException; -import org.apache.iotdb.db.mpp.plan.analyze.TypeProvider; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.ExpressionType; import org.apache.iotdb.db.mpp.plan.expression.visitor.ExpressionVisitor; -import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils; import org.apache.commons.lang3.Validate; @@ -70,17 +67,6 @@ public class RegularExpression extends UnaryExpression { return new RegularExpression(childExpression, patternString, pattern); } - @Override - public TSDataType inferTypes(TypeProvider typeProvider) throws SemanticException { - final String expressionString = toString(); - if (!typeProvider.containsTypeInfoOf(expressionString)) { - checkInputExpressionDataType( - expression.toString(), expression.inferTypes(typeProvider), TSDataType.TEXT); - typeProvider.setType(expressionString, TSDataType.BOOLEAN); - } - return TSDataType.BOOLEAN; - } - @Override protected String getExpressionStringInternal() { return expression + " REGEXP '" + patternString + "'";
