You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by hu...@apache.org on 2023/06/20 09:19:37 UTC
[iotdb] 02/05: fix sonar (expression)
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 <li...@foxmail.com>
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;
}
}