This is an automated email from the ASF dual-hosted git repository. hui pushed a commit to branch lmh/fixSonar in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit fa03b7dc40bf88bac4d52e06d256ca277ecb8e1a Author: Minghui Liu <[email protected]> AuthorDate: Tue Jun 20 11:16:07 2023 +0800 fix sonar (expression) --- .../iotdb/db/mpp/plan/expression/Expression.java | 3 +- .../db/mpp/plan/expression/ExpressionFactory.java | 4 ++ .../db/mpp/plan/expression/ExpressionType.java | 8 +-- .../plan/expression/multi/FunctionExpression.java | 6 +- .../BuiltInScalarFunctionHelperFactory.java | 5 ++ .../multi/builtin/helper/CastFunctionHelper.java | 22 +++--- .../BindTypeForTimeSeriesOperandVisitor.java | 3 +- .../visitor/ColumnTransformerVisitor.java | 9 ++- .../visitor/CompleteMeasurementSchemaVisitor.java | 17 ++--- .../visitor/IntermediateLayerVisitor.java | 3 +- .../visitor/TransformToViewExpressionVisitor.java | 81 +++++++++------------- .../cartesian/BindSchemaForExpressionVisitor.java | 19 +++-- 12 files changed, 88 insertions(+), 92 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 1369e16fcd9..431c412e914 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 @@ -65,6 +65,7 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.NoSuchElementException; import java.util.Objects; /** A skeleton class for expression */ @@ -402,7 +403,7 @@ public abstract class Expression extends StatementNode { @Override public Expression next() { if (!hasNext()) { - return null; + throw new NoSuchElementException(); } Expression current = queue.pop(); if (current != null) { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ExpressionFactory.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ExpressionFactory.java index dfd2f054445..30474bf5d9d 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ExpressionFactory.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ExpressionFactory.java @@ -41,6 +41,10 @@ import java.util.LinkedHashMap; public class ExpressionFactory { + private ExpressionFactory() { + // forbidden construction + } + public static PartialPath path(String pathStr) throws IllegalPathException { return new PartialPath(pathStr); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ExpressionType.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ExpressionType.java index c49a674fff7..1d37bab2ea9 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ExpressionType.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ExpressionType.java @@ -62,16 +62,16 @@ public enum ExpressionType { WHEN_THEN((short) 22, (short) 1000), // priority not sure ; - private final short expressionType; + private final short type; private final short priority; - ExpressionType(short expressionType, short priority) { - this.expressionType = expressionType; + ExpressionType(short type, short priority) { + this.type = type; this.priority = priority; } public short getExpressionTypeInShortEnum() { - return expressionType; + return type; } public short getPriority() { 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 daa8aad6b9c..75c5cbc104c 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 @@ -100,10 +100,10 @@ public class FunctionExpression extends Expression { } private void initializeFunctionType() { - final String functionName = this.functionName.toLowerCase(); - if (BuiltinAggregationFunction.getNativeFunctionNames().contains(functionName)) { + final String lowerCaseFunctionName = this.functionName.toLowerCase(); + if (BuiltinAggregationFunction.getNativeFunctionNames().contains(lowerCaseFunctionName)) { functionType = FunctionType.AGGREGATION_FUNCTION; - } else if (BuiltinScalarFunction.getNativeFunctionNames().contains(functionName)) { + } else if (BuiltinScalarFunction.getNativeFunctionNames().contains(lowerCaseFunctionName)) { functionType = FunctionType.BUILT_IN_SCALAR_FUNCTION; } else { functionType = FunctionType.UDF; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/builtin/BuiltInScalarFunctionHelperFactory.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/builtin/BuiltInScalarFunctionHelperFactory.java index 4726c88a2c3..acef8984307 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/builtin/BuiltInScalarFunctionHelperFactory.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/builtin/BuiltInScalarFunctionHelperFactory.java @@ -26,6 +26,11 @@ import org.apache.iotdb.db.mpp.plan.expression.multi.builtin.helper.RoundFunctio import org.apache.iotdb.db.mpp.plan.expression.multi.builtin.helper.SubStringFunctionHelper; public class BuiltInScalarFunctionHelperFactory { + + private BuiltInScalarFunctionHelperFactory() { + // forbidden instantiation + } + public static BuiltInScalarFunctionHelper createHelper(String functionName) { functionName = functionName.toUpperCase(); switch (functionName) { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/builtin/helper/CastFunctionHelper.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/builtin/helper/CastFunctionHelper.java index ff6a5e85db0..316fbc8e2ad 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/builtin/helper/CastFunctionHelper.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/multi/builtin/helper/CastFunctionHelper.java @@ -37,7 +37,9 @@ import static org.apache.iotdb.db.constant.SqlConstant.CAST_TYPE; public class CastFunctionHelper implements BuiltInScalarFunctionHelper { @Override public void checkBuiltInScalarFunctionInputDataType(TSDataType tsDataType) - throws SemanticException {} + throws SemanticException { + // needn't check + } @Override public TSDataType getBuiltInScalarFunctionReturnType(FunctionExpression functionExpression) { @@ -73,7 +75,7 @@ public class CastFunctionHelper implements BuiltInScalarFunctionHelper { public static int castLongToInt(long value) { if (value > Integer.MAX_VALUE || value < Integer.MIN_VALUE) { - throw new RuntimeException( + throw new SemanticException( String.format("long value %d is out of range of integer value.", value)); } return (int) value; @@ -81,7 +83,7 @@ public class CastFunctionHelper implements BuiltInScalarFunctionHelper { public static int castFloatToInt(float value) { if (value > Integer.MAX_VALUE || value < Integer.MIN_VALUE) { - throw new RuntimeException( + throw new SemanticException( String.format("Float value %f is out of range of integer value.", value)); } return Math.round(value); @@ -89,7 +91,7 @@ public class CastFunctionHelper implements BuiltInScalarFunctionHelper { public static long castFloatToLong(float value) { if (value > Long.MAX_VALUE || value < Long.MIN_VALUE) { - throw new RuntimeException( + throw new SemanticException( String.format("Float value %f is out of range of long value.", value)); } return Math.round((double) value); @@ -97,7 +99,7 @@ public class CastFunctionHelper implements BuiltInScalarFunctionHelper { public static int castDoubleToInt(double value) { if (value > Integer.MAX_VALUE || value < Integer.MIN_VALUE) { - throw new RuntimeException( + throw new SemanticException( String.format("Double value %f is out of range of integer value.", value)); } return Math.round((float) value); @@ -105,7 +107,7 @@ public class CastFunctionHelper implements BuiltInScalarFunctionHelper { public static long castDoubleToLong(double value) { if (value > Long.MAX_VALUE || value < Long.MIN_VALUE) { - throw new RuntimeException( + throw new SemanticException( String.format("Double value %f is out of range of long value.", value)); } return Math.round(value); @@ -113,7 +115,7 @@ public class CastFunctionHelper implements BuiltInScalarFunctionHelper { public static float castDoubleToFloat(double value) { if (value > Float.MAX_VALUE || value < -Float.MAX_VALUE) { - throw new RuntimeException( + throw new SemanticException( String.format("Double value %f is out of range of float value.", value)); } return (float) value; @@ -122,7 +124,7 @@ public class CastFunctionHelper implements BuiltInScalarFunctionHelper { public static float castTextToFloat(String value) { float f = Float.parseFloat(value); if (f == Float.POSITIVE_INFINITY || f == Float.NEGATIVE_INFINITY) { - throw new RuntimeException( + throw new SemanticException( String.format("Text value %s is out of range of float value.", value)); } return f; @@ -131,7 +133,7 @@ public class CastFunctionHelper implements BuiltInScalarFunctionHelper { public static Double castTextToDouble(String value) { double d = Double.parseDouble(value); if (d == Double.POSITIVE_INFINITY || d == Double.NEGATIVE_INFINITY) { - throw new RuntimeException( + throw new SemanticException( String.format("Text value %s is out of range of double value.", value)); } return d; @@ -144,7 +146,7 @@ public class CastFunctionHelper implements BuiltInScalarFunctionHelper { } else if (lowerCase.equals("false")) { return false; } else { - throw new RuntimeException(String.format("Invalid text input for boolean type: %s", value)); + throw new SemanticException(String.format("Invalid text input for boolean type: %s", value)); } } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/BindTypeForTimeSeriesOperandVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/BindTypeForTimeSeriesOperandVisitor.java index 2b7d7c8f099..8f3e8bbdb41 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/BindTypeForTimeSeriesOperandVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/BindTypeForTimeSeriesOperandVisitor.java @@ -58,7 +58,8 @@ public class BindTypeForTimeSeriesOperandVisitor extends ReconstructVisitor<List return reconstructTimeSeriesOperand( predicate, new MeasurementPath(columnHeader.getColumnName(), columnHeader.getColumnType())); - } catch (IllegalPathException ignored) { + } catch (IllegalPathException e) { + throw new SemanticException(e); } } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/ColumnTransformerVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/ColumnTransformerVisitor.java index 61406fb57dc..ec8b1b4ee27 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/ColumnTransformerVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/ColumnTransformerVisitor.java @@ -84,6 +84,8 @@ public class ColumnTransformerVisitor extends ExpressionVisitor< ColumnTransformer, ColumnTransformerVisitor.ColumnTransformerVisitorContext> { + private static final String UNSUPPORTED_EXPRESSION_TYPE = "Unsupported expression type: "; + @Override public ColumnTransformer visitExpression( Expression expression, ColumnTransformerVisitorContext context) { @@ -436,7 +438,7 @@ public class ColumnTransformerVisitor returnType, childColumnTransformer, regularExpression.getPattern()); default: throw new UnsupportedOperationException( - "Unsupported Expression Type: " + expression.getExpressionType()); + UNSUPPORTED_EXPRESSION_TYPE + expression.getExpressionType()); } } @@ -487,7 +489,7 @@ public class ColumnTransformerVisitor returnType, leftColumnTransformer, rightColumnTransformer); default: throw new UnsupportedOperationException( - "Unsupported Expression Type: " + expression.getExpressionType()); + UNSUPPORTED_EXPRESSION_TYPE + expression.getExpressionType()); } } @@ -507,7 +509,7 @@ public class ColumnTransformerVisitor betweenExpression.isNotBetween()); } else { throw new UnsupportedOperationException( - "Unsupported Expression Type: " + expression.getExpressionType()); + UNSUPPORTED_EXPRESSION_TYPE + expression.getExpressionType()); } } @@ -537,6 +539,7 @@ public class ColumnTransformerVisitor int originSize; + @SuppressWarnings("squid:S107") public ColumnTransformerVisitorContext( UDTFContext udtfContext, Map<NodeRef<Expression>, TSDataType> expressionTypes, diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/CompleteMeasurementSchemaVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/CompleteMeasurementSchemaVisitor.java index d7bf53d9827..7712d37fbaf 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/CompleteMeasurementSchemaVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/CompleteMeasurementSchemaVisitor.java @@ -22,6 +22,7 @@ package org.apache.iotdb.db.mpp.plan.expression.visitor; import org.apache.iotdb.commons.path.MeasurementPath; import org.apache.iotdb.commons.path.PartialPath; import org.apache.iotdb.db.exception.metadata.view.BrokenViewException; +import org.apache.iotdb.db.exception.sql.SemanticException; import org.apache.iotdb.db.mpp.common.schematree.ISchemaTree; import org.apache.iotdb.db.mpp.plan.expression.Expression; import org.apache.iotdb.db.mpp.plan.expression.binary.BinaryExpression; @@ -90,17 +91,13 @@ public class CompleteMeasurementSchemaVisitor extends ExpressionVisitor<Expressi TimeSeriesOperand timeSeriesOperand, ISchemaTree schemaTree) { PartialPath path = timeSeriesOperand.getPath(); try { - try { - path.getMeasurementSchema(); - } catch (Exception notAMeasurementPath) { - List<MeasurementPath> actualPaths = schemaTree.searchMeasurementPaths(path).left; - if (actualPaths.size() != 1) { - throw new BrokenViewException(path.getFullPath(), actualPaths); - } - return new TimeSeriesOperand(actualPaths.get(0)); + path.getMeasurementSchema(); + } catch (Exception notAMeasurementPath) { + List<MeasurementPath> actualPaths = schemaTree.searchMeasurementPaths(path).left; + if (actualPaths.size() != 1) { + throw new SemanticException(new BrokenViewException(path.getFullPath(), actualPaths)); } - } catch (Exception e) { - throw new RuntimeException(e); + return new TimeSeriesOperand(actualPaths.get(0)); } return timeSeriesOperand; } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/IntermediateLayerVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/IntermediateLayerVisitor.java index 753589884af..432cb85d1d1 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/IntermediateLayerVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/IntermediateLayerVisitor.java @@ -426,8 +426,7 @@ public class IntermediateLayerVisitor } private IntermediateLayer constructUdfInputIntermediateLayer( - FunctionExpression functionExpression, IntermediateLayerVisitorContext context) - throws QueryProcessException, IOException { + FunctionExpression functionExpression, IntermediateLayerVisitorContext context) { List<IntermediateLayer> intermediateLayers = new ArrayList<>(); for (Expression expression : functionExpression.getExpressions()) { intermediateLayers.add(this.process(expression, context)); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/TransformToViewExpressionVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/TransformToViewExpressionVisitor.java index 5c4ec716075..b74a625bb12 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/TransformToViewExpressionVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/TransformToViewExpressionVisitor.java @@ -204,52 +204,47 @@ public class TransformToViewExpressionVisitor extends ExpressionVisitor<ViewExpr public ViewExpression visitArithmeticBinaryExpression( ArithmeticBinaryExpression arithmeticBinaryExpression, Void context) { if (arithmeticBinaryExpression instanceof AdditionExpression) { - return this.visitAdditionExpression((AdditionExpression) arithmeticBinaryExpression, context); + return this.visitAdditionExpression((AdditionExpression) arithmeticBinaryExpression); } else if (arithmeticBinaryExpression instanceof DivisionExpression) { - return this.visitDivisionExpression((DivisionExpression) arithmeticBinaryExpression, context); + return this.visitDivisionExpression((DivisionExpression) arithmeticBinaryExpression); } else if (arithmeticBinaryExpression instanceof ModuloExpression) { - return this.visitModuloExpression((ModuloExpression) arithmeticBinaryExpression, context); + return this.visitModuloExpression((ModuloExpression) arithmeticBinaryExpression); } else if (arithmeticBinaryExpression instanceof MultiplicationExpression) { return this.visitMultiplicationExpression( - (MultiplicationExpression) arithmeticBinaryExpression, context); + (MultiplicationExpression) arithmeticBinaryExpression); } else if (arithmeticBinaryExpression instanceof SubtractionExpression) { - return this.visitSubtractionExpression( - (SubtractionExpression) arithmeticBinaryExpression, context); + return this.visitSubtractionExpression((SubtractionExpression) arithmeticBinaryExpression); } - throw new RuntimeException( - new NotSupportedException( - "unsupported expression type:" + arithmeticBinaryExpression.getExpressionType())); + throw new UnsupportedOperationException( + "unsupported expression type:" + arithmeticBinaryExpression.getExpressionType()); } - public ViewExpression visitAdditionExpression( - AdditionExpression additionExpression, Void context) { + public ViewExpression visitAdditionExpression(AdditionExpression additionExpression) { Pair<ViewExpression, ViewExpression> pair = this.getExpressionsForBinaryExpression(additionExpression); return new AdditionViewExpression(pair.left, pair.right); } - public ViewExpression visitDivisionExpression( - DivisionExpression divisionExpression, Void context) { + public ViewExpression visitDivisionExpression(DivisionExpression divisionExpression) { Pair<ViewExpression, ViewExpression> pair = this.getExpressionsForBinaryExpression(divisionExpression); return new DivisionViewExpression(pair.left, pair.right); } - public ViewExpression visitModuloExpression(ModuloExpression moduloExpression, Void context) { + public ViewExpression visitModuloExpression(ModuloExpression moduloExpression) { Pair<ViewExpression, ViewExpression> pair = this.getExpressionsForBinaryExpression(moduloExpression); return new ModuloViewExpression(pair.left, pair.right); } public ViewExpression visitMultiplicationExpression( - MultiplicationExpression multiplicationExpression, Void context) { + MultiplicationExpression multiplicationExpression) { Pair<ViewExpression, ViewExpression> pair = this.getExpressionsForBinaryExpression(multiplicationExpression); return new MultiplicationViewExpression(pair.left, pair.right); } - public ViewExpression visitSubtractionExpression( - SubtractionExpression subtractionExpression, Void context) { + public ViewExpression visitSubtractionExpression(SubtractionExpression subtractionExpression) { Pair<ViewExpression, ViewExpression> pair = this.getExpressionsForBinaryExpression(subtractionExpression); return new SubtractionViewExpression(pair.left, pair.right); @@ -261,61 +256,53 @@ public class TransformToViewExpressionVisitor extends ExpressionVisitor<ViewExpr public ViewExpression visitCompareBinaryExpression( CompareBinaryExpression compareBinaryExpression, Void context) { if (compareBinaryExpression instanceof EqualToExpression) { - return this.visitEqualToExpression((EqualToExpression) compareBinaryExpression, context); + return this.visitEqualToExpression((EqualToExpression) compareBinaryExpression); } else if (compareBinaryExpression instanceof GreaterEqualExpression) { - return this.visitGreaterEqualExpression( - (GreaterEqualExpression) compareBinaryExpression, context); + return this.visitGreaterEqualExpression((GreaterEqualExpression) compareBinaryExpression); } else if (compareBinaryExpression instanceof GreaterThanExpression) { - return this.visitGreaterThanExpression( - (GreaterThanExpression) compareBinaryExpression, context); + return this.visitGreaterThanExpression((GreaterThanExpression) compareBinaryExpression); } else if (compareBinaryExpression instanceof LessEqualExpression) { - return this.visitLessEqualExpression((LessEqualExpression) compareBinaryExpression, context); + return this.visitLessEqualExpression((LessEqualExpression) compareBinaryExpression); } else if (compareBinaryExpression instanceof LessThanExpression) { - return this.visitLessThanExpression((LessThanExpression) compareBinaryExpression, context); + return this.visitLessThanExpression((LessThanExpression) compareBinaryExpression); } else if (compareBinaryExpression instanceof NonEqualExpression) { - return this.visitNonEqualExpression((NonEqualExpression) compareBinaryExpression, context); + return this.visitNonEqualExpression((NonEqualExpression) compareBinaryExpression); } - throw new RuntimeException( - new NotSupportedException( - "unsupported expression type:" + compareBinaryExpression.getExpressionType())); + throw new UnsupportedOperationException( + "unsupported expression type:" + compareBinaryExpression.getExpressionType()); } - public ViewExpression visitEqualToExpression(EqualToExpression equalToExpression, Void context) { + public ViewExpression visitEqualToExpression(EqualToExpression equalToExpression) { Pair<ViewExpression, ViewExpression> pair = this.getExpressionsForBinaryExpression(equalToExpression); return new EqualToViewExpression(pair.left, pair.right); } - public ViewExpression visitGreaterEqualExpression( - GreaterEqualExpression greaterEqualExpression, Void context) { + public ViewExpression visitGreaterEqualExpression(GreaterEqualExpression greaterEqualExpression) { Pair<ViewExpression, ViewExpression> pair = this.getExpressionsForBinaryExpression(greaterEqualExpression); return new GreaterEqualViewExpression(pair.left, pair.right); } - public ViewExpression visitGreaterThanExpression( - GreaterThanExpression greaterThanExpression, Void context) { + public ViewExpression visitGreaterThanExpression(GreaterThanExpression greaterThanExpression) { Pair<ViewExpression, ViewExpression> pair = this.getExpressionsForBinaryExpression(greaterThanExpression); return new GreaterThanViewExpression(pair.left, pair.right); } - public ViewExpression visitLessEqualExpression( - LessEqualExpression lessEqualExpression, Void context) { + public ViewExpression visitLessEqualExpression(LessEqualExpression lessEqualExpression) { Pair<ViewExpression, ViewExpression> pair = this.getExpressionsForBinaryExpression(lessEqualExpression); return new LessEqualViewExpression(pair.left, pair.right); } - public ViewExpression visitLessThanExpression( - LessThanExpression lessThanExpression, Void context) { + public ViewExpression visitLessThanExpression(LessThanExpression lessThanExpression) { Pair<ViewExpression, ViewExpression> pair = this.getExpressionsForBinaryExpression(lessThanExpression); return new LessThanViewExpression(pair.left, pair.right); } - public ViewExpression visitNonEqualExpression( - NonEqualExpression nonEqualExpression, Void context) { + public ViewExpression visitNonEqualExpression(NonEqualExpression nonEqualExpression) { Pair<ViewExpression, ViewExpression> pair = this.getExpressionsForBinaryExpression(nonEqualExpression); return new NonEqualViewExpression(pair.left, pair.right); @@ -327,23 +314,21 @@ public class TransformToViewExpressionVisitor extends ExpressionVisitor<ViewExpr public ViewExpression visitLogicBinaryExpression( LogicBinaryExpression logicBinaryExpression, Void context) { if (logicBinaryExpression instanceof LogicAndExpression) { - return this.visitLogicAndExpression((LogicAndExpression) logicBinaryExpression, context); + return this.visitLogicAndExpression((LogicAndExpression) logicBinaryExpression); } else if (logicBinaryExpression instanceof LogicOrExpression) { - return this.visitLogicOrExpression((LogicOrExpression) logicBinaryExpression, context); + return this.visitLogicOrExpression((LogicOrExpression) logicBinaryExpression); } - throw new RuntimeException( - new NotSupportedException( - "unsupported expression type:" + logicBinaryExpression.getExpressionType())); + throw new UnsupportedOperationException( + "unsupported expression type:" + logicBinaryExpression.getExpressionType()); } - public ViewExpression visitLogicAndExpression( - LogicAndExpression logicAndExpression, Void context) { + public ViewExpression visitLogicAndExpression(LogicAndExpression logicAndExpression) { Pair<ViewExpression, ViewExpression> pair = this.getExpressionsForBinaryExpression(logicAndExpression); return new LogicAndViewExpression(pair.left, pair.right); } - public ViewExpression visitLogicOrExpression(LogicOrExpression logicOrExpression, Void context) { + public ViewExpression visitLogicOrExpression(LogicOrExpression logicOrExpression) { Pair<ViewExpression, ViewExpression> pair = this.getExpressionsForBinaryExpression(logicOrExpression); return new LogicOrViewExpression(pair.left, pair.right); @@ -355,7 +340,7 @@ public class TransformToViewExpressionVisitor extends ExpressionVisitor<ViewExpr // region Ternary Expressions @Override public ViewExpression visitTernaryExpression(TernaryExpression ternaryExpression, Void context) { - throw new RuntimeException(new NotSupportedException("Can not construct abstract class.")); + throw new NotSupportedException("Can not construct abstract class."); } @Override diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/cartesian/BindSchemaForExpressionVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/cartesian/BindSchemaForExpressionVisitor.java index f6331c98f2e..e253946d6ab 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/cartesian/BindSchemaForExpressionVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/visitor/cartesian/BindSchemaForExpressionVisitor.java @@ -122,16 +122,15 @@ public class BindSchemaForExpressionVisitor extends CartesianProductVisitor<ISch public static Expression transformViewPath( MeasurementPath measurementPath, ISchemaTree schemaTree) { IMeasurementSchema measurementSchema = measurementPath.getMeasurementSchema(); - if (measurementSchema.isLogicalView()) { - ViewExpression viewExpression = ((LogicalViewSchema) measurementSchema).getExpression(); - // complete measurementPaths in expressions. - Expression expression = new TransformToExpressionVisitor().process(viewExpression, null); - expression = new CompleteMeasurementSchemaVisitor().process(expression, schemaTree); - return expression; - } else { - throw new RuntimeException( - new UnsupportedOperationException( - "Can not construct expression using non view path in transformViewPath!")); + if (!measurementSchema.isLogicalView()) { + throw new IllegalArgumentException( + "Can not construct expression using non view path in transformViewPath!"); } + + ViewExpression viewExpression = ((LogicalViewSchema) measurementSchema).getExpression(); + // complete measurementPaths in expressions. + Expression expression = new TransformToExpressionVisitor().process(viewExpression, null); + expression = new CompleteMeasurementSchemaVisitor().process(expression, schemaTree); + return expression; } }
