This is an automated email from the ASF dual-hosted git repository. hui pushed a commit to branch lmh/SupportQueryWithView in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 9f91b6c5d5d6b29e86f68d46aec2d4694e9ac6ff Author: liuminghui233 <[email protected]> AuthorDate: Sun May 28 21:42:22 2023 +0800 use getExpressionString() replace toString() --- .../db/mpp/aggregation/AccumulatorFactory.java | 2 +- .../iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java | 14 ++++++------- .../mpp/plan/analyze/ExpressionTypeAnalyzer.java | 23 +++++++++++----------- .../iotdb/db/mpp/plan/analyze/ExpressionUtils.java | 2 +- .../config/executor/ClusterConfigTaskExecutor.java | 4 ++-- .../iotdb/db/mpp/plan/expression/Expression.java | 13 ++++++++++-- .../plan/expression/binary/BinaryExpression.java | 2 +- .../plan/expression/binary/WhenThenExpression.java | 5 ++++- .../plan/expression/leaf/TimeSeriesOperand.java | 2 +- .../plan/expression/multi/FunctionExpression.java | 8 ++++---- .../expression/other/CaseWhenThenExpression.java | 6 +++--- .../plan/expression/ternary/BetweenExpression.java | 6 +++++- .../plan/expression/ternary/TernaryExpression.java | 2 +- .../db/mpp/plan/expression/unary/InExpression.java | 13 +++++++----- .../plan/expression/unary/IsNullExpression.java | 2 +- .../mpp/plan/expression/unary/LikeExpression.java | 2 +- .../plan/expression/unary/LogicNotExpression.java | 9 ++++----- .../plan/expression/unary/NegationExpression.java | 4 ++-- .../plan/expression/unary/RegularExpression.java | 2 +- .../mpp/plan/expression/unary/UnaryExpression.java | 2 +- .../visitor/ColumnTransformerVisitor.java | 4 +++- .../visitor/IntermediateLayerVisitor.java | 2 +- .../db/mpp/plan/planner/LogicalPlanBuilder.java | 7 ++++--- .../db/mpp/plan/planner/OperatorTreeGenerator.java | 4 ++-- .../db/mpp/plan/planner/SubPlanTypeExtractor.java | 2 +- .../planner/plan/node/process/TransformNode.java | 2 +- .../plan/parameter/AggregationDescriptor.java | 4 ++-- .../CrossSeriesAggregationDescriptor.java | 6 +++--- .../plan/statement/component/HavingCondition.java | 2 +- .../mpp/plan/statement/component/ResultColumn.java | 8 +++++++- .../plan/statement/component/SelectComponent.java | 2 +- .../plan/statement/component/WhereCondition.java | 2 +- .../dag/intermediate/IntermediateLayer.java | 2 +- .../apache/iotdb/db/utils/TypeInferenceUtils.java | 3 ++- 34 files changed, 101 insertions(+), 72 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/AccumulatorFactory.java b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/AccumulatorFactory.java index a7685df9fd0..1a0e76fde4c 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/AccumulatorFactory.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/AccumulatorFactory.java @@ -119,7 +119,7 @@ public class AccumulatorFactory { // We have check semantic in FE, // keep expression must be ConstantOperand or CompareBinaryExpression here if (keepExpression instanceof ConstantOperand) { - return keep -> keep >= Long.parseLong(keepExpression.toString()); + return keep -> keep >= Long.parseLong(keepExpression.getExpressionString()); } else { long constant = Long.parseLong( diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java index 98a59db9107..3fda39b89da 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/AnalyzeVisitor.java @@ -438,8 +438,8 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext> new TreeSet<>( (e1, e2) -> isAscending - ? e1.toString().compareTo(e2.toString()) - : e2.toString().compareTo(e1.toString())); + ? e1.getExpressionString().compareTo(e2.getExpressionString()) + : e2.getExpressionString().compareTo(e1.getExpressionString())); } else { sourceExpressions = new LinkedHashSet<>(); } @@ -1735,16 +1735,16 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext> if (sourceColumn instanceof TimeSeriesOperand) { targetMeasurement = constructTargetMeasurement( - sourceDevice.concatNode(sourceColumn.toString()), measurementTemplate); + sourceDevice.concatNode(sourceColumn.getExpressionString()), measurementTemplate); } else { targetMeasurement = measurementTemplate; } deviceViewIntoPathDescriptor.specifyTargetDeviceMeasurement( - sourceDevice, targetDevice, sourceColumn.toString(), targetMeasurement); + sourceDevice, targetDevice, sourceColumn.getExpressionString(), targetMeasurement); targetPathTree.appendFullPath(targetDevice, targetMeasurement); deviceViewIntoPathDescriptor.recordSourceColumnDataType( - sourceColumn.toString(), analysis.getType(sourceColumn)); + sourceColumn.getExpressionString(), analysis.getType(sourceColumn)); intoDeviceMeasurementIterator.nextMeasurement(); } @@ -1795,13 +1795,13 @@ public class AnalyzeVisitor extends StatementVisitor<Analysis, MPPQueryContext> } else { targetPath = deviceTemplate.concatNode(measurementTemplate); } - intoPathDescriptor.specifyTargetPath(sourceColumn.toString(), targetPath); + intoPathDescriptor.specifyTargetPath(sourceColumn.getExpressionString(), targetPath); intoPathDescriptor.specifyDeviceAlignment( targetPath.getDevicePath().toString(), isAlignedDevice); targetPathTree.appendFullPath(targetPath); intoPathDescriptor.recordSourceColumnDataType( - sourceColumn.toString(), analysis.getType(sourceColumn)); + sourceColumn.getExpressionString(), analysis.getType(sourceColumn)); intoPathIterator.next(); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionTypeAnalyzer.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionTypeAnalyzer.java index ee2f2e1b73d..1f47297c458 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionTypeAnalyzer.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionTypeAnalyzer.java @@ -119,7 +119,7 @@ public class ExpressionTypeAnalyzer { @Override public TSDataType visitLikeExpression(LikeExpression likeExpression, Void context) { checkInputExpressionDataType( - likeExpression.getExpression().toString(), + likeExpression.getExpression().getExpressionString(), process(likeExpression.getExpression(), null), TSDataType.TEXT); return setExpressionType(likeExpression, TSDataType.BOOLEAN); @@ -128,7 +128,7 @@ public class ExpressionTypeAnalyzer { @Override public TSDataType visitRegularExpression(RegularExpression regularExpression, Void context) { checkInputExpressionDataType( - regularExpression.getExpression().toString(), + regularExpression.getExpression().getExpressionString(), process(regularExpression.getExpression(), null), TSDataType.TEXT); return setExpressionType(regularExpression, TSDataType.BOOLEAN); @@ -137,7 +137,7 @@ public class ExpressionTypeAnalyzer { @Override public TSDataType visitLogicNotExpression(LogicNotExpression logicNotExpression, Void context) { checkInputExpressionDataType( - logicNotExpression.getExpression().toString(), + logicNotExpression.getExpression().getExpressionString(), process(logicNotExpression.getExpression(), null), TSDataType.BOOLEAN); return setExpressionType(logicNotExpression, TSDataType.BOOLEAN); @@ -147,7 +147,7 @@ public class ExpressionTypeAnalyzer { public TSDataType visitNegationExpression(NegationExpression negationExpression, Void context) { TSDataType inputExpressionType = process(negationExpression.getExpression(), null); checkInputExpressionDataType( - negationExpression.getExpression().toString(), + negationExpression.getExpression().getExpressionString(), inputExpressionType, TSDataType.INT32, TSDataType.INT64, @@ -160,14 +160,14 @@ public class ExpressionTypeAnalyzer { public TSDataType visitArithmeticBinaryExpression( ArithmeticBinaryExpression arithmeticBinaryExpression, Void context) { checkInputExpressionDataType( - arithmeticBinaryExpression.getLeftExpression().toString(), + arithmeticBinaryExpression.getLeftExpression().getExpressionString(), process(arithmeticBinaryExpression.getLeftExpression(), null), TSDataType.INT32, TSDataType.INT64, TSDataType.FLOAT, TSDataType.DOUBLE); checkInputExpressionDataType( - arithmeticBinaryExpression.getRightExpression().toString(), + arithmeticBinaryExpression.getRightExpression().getExpressionString(), process(arithmeticBinaryExpression.getRightExpression(), null), TSDataType.INT32, TSDataType.INT64, @@ -180,11 +180,11 @@ public class ExpressionTypeAnalyzer { public TSDataType visitLogicBinaryExpression( LogicBinaryExpression logicBinaryExpression, Void context) { checkInputExpressionDataType( - logicBinaryExpression.getLeftExpression().toString(), + logicBinaryExpression.getLeftExpression().getExpressionString(), process(logicBinaryExpression.getLeftExpression(), null), TSDataType.BOOLEAN); checkInputExpressionDataType( - logicBinaryExpression.getRightExpression().toString(), + logicBinaryExpression.getRightExpression().getExpressionString(), process(logicBinaryExpression.getRightExpression(), null), TSDataType.BOOLEAN); return setExpressionType(logicBinaryExpression, TSDataType.BOOLEAN); @@ -201,9 +201,10 @@ public class ExpressionTypeAnalyzer { if (leftExpressionDataType != null && rightExpressionDataType != null && !leftExpressionDataType.equals(rightExpressionDataType)) { - final String leftExpressionString = compareBinaryExpression.getLeftExpression().toString(); + final String leftExpressionString = + compareBinaryExpression.getLeftExpression().getExpressionString(); final String rightExpressionString = - compareBinaryExpression.getRightExpression().toString(); + compareBinaryExpression.getRightExpression().getExpressionString(); if (TSDataType.BOOLEAN.equals(leftExpressionDataType) || TSDataType.BOOLEAN.equals(rightExpressionDataType)) { @@ -271,7 +272,7 @@ public class ExpressionTypeAnalyzer { new UDTFInformationInferrer(functionExpression.getFunctionName()) .inferOutputType( inputExpressions.stream() - .map(Expression::toString) + .map(Expression::getExpressionString) .collect(Collectors.toList()), inputExpressions.stream() .map(f -> expressionTypes.get(NodeRef.of(f))) diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionUtils.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionUtils.java index 025919d39c3..81a992472cf 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionUtils.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/analyze/ExpressionUtils.java @@ -140,7 +140,7 @@ public class ExpressionUtils { Expression thirdExpression) { TernaryExpression copiedTernaryExpression = (TernaryExpression) expression.copy(); copiedTernaryExpression.setFirstExpression(firstExpression); - copiedTernaryExpression.setFirstExpression(secondExpression); + copiedTernaryExpression.setSecondExpression(secondExpression); copiedTernaryExpression.setThirdExpression(thirdExpression); return copiedTernaryExpression; } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java index e1881628bba..3d8acae6458 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/execution/config/executor/ClusterConfigTaskExecutor.java @@ -1971,10 +1971,10 @@ public class ClusterConfigTaskExecutor implements IConfigTaskExecutor { List<String> queryExpressions = new ArrayList<>(); for (Expression expression : analysis.getSelectExpressions()) { - queryExpressions.add(expression.toString()); + queryExpressions.add(expression.getExpressionString()); } Expression whereExpression = analysis.getWhereExpression(); - String queryFilter = whereExpression == null ? null : whereExpression.toString(); + String queryFilter = whereExpression == null ? null : whereExpression.getExpressionString(); SettableFuture<ConfigTaskResult> future = SettableFuture.create(); try (ConfigNodeClient client = 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 47dd65a21ba..97751ea85bd 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 @@ -66,6 +66,7 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Objects; /** A skeleton class for expression */ public abstract class Expression extends StatementNode { @@ -151,10 +152,18 @@ public abstract class Expression extends StatementNode { // For representing expression in string ///////////////////////////////////////////////////////////////////////////////////////////////// + /** + * This method is only displayed during debugging, please use {@link #getExpressionString()} or + * {@link #getOutputSymbol()} in the code. + */ @Override public final String toString() { - throw new UnsupportedOperationException( - "The Expression class does not support toString() method, please use getOutputSymbol() or getExpressionString()."); + String outputSymbol = getOutputSymbol(); + String expressionString = getExpressionString(); + if (!Objects.equals(outputSymbol, expressionString)) { + return expressionString + "[" + outputSymbol + "]"; + } + return expressionString; } private String outputSymbolCache; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/BinaryExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/BinaryExpression.java index 2721bf2c374..d6a5c89f9ce 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/BinaryExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/BinaryExpression.java @@ -93,7 +93,7 @@ public abstract class BinaryExpression extends Expression { leftExpression.bindInputLayerColumnIndexWithExpression(inputLocations); rightExpression.bindInputLayerColumnIndexWithExpression(inputLocations); - final String digest = toString(); + final String digest = getExpressionString(); if (inputLocations.containsKey(digest)) { inputColumnIndex = inputLocations.get(digest).get(0).getValueColumnIndex(); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/WhenThenExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/WhenThenExpression.java index 0c6214768f5..f9b7fb058dd 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/WhenThenExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/binary/WhenThenExpression.java @@ -63,7 +63,10 @@ public class WhenThenExpression extends BinaryExpression { @Override public String getExpressionStringInternal() { - return "WHEN " + this.getWhen().toString() + " THEN " + this.getThen().toString(); + return "WHEN " + + this.getWhen().getExpressionString() + + " THEN " + + this.getThen().getExpressionString(); } @Override 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 b933d943f2e..c9a396a147e 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 @@ -75,7 +75,7 @@ public class TimeSeriesOperand extends LeafOperand { @Override public void bindInputLayerColumnIndexWithExpression( Map<String, List<InputLocation>> inputLocations) { - final String digest = toString(); + final String digest = getExpressionString(); if (inputLocations.containsKey(digest)) { inputColumnIndex = inputLocations.get(digest).get(0).getValueColumnIndex(); 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 ba2a7500b68..b8ba519b836 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 @@ -226,7 +226,7 @@ public class FunctionExpression extends Expression { expression.bindInputLayerColumnIndexWithExpression(inputLocations); } - final String digest = toString(); + final String digest = getExpressionString(); if (inputLocations.containsKey(digest)) { inputColumnIndex = inputLocations.get(digest).get(0).getValueColumnIndex(); } @@ -247,7 +247,7 @@ public class FunctionExpression extends Expression { } return new UDTFInformationInferrer(functionName) .getAccessStrategy( - expressions.stream().map(Expression::toString).collect(Collectors.toList()), + expressions.stream().map(Expression::getExpressionString).collect(Collectors.toList()), expressions.stream() .map(f -> expressionTypes.get(NodeRef.of(f))) .collect(Collectors.toList()), @@ -287,9 +287,9 @@ public class FunctionExpression extends Expression { if (parametersString == null) { StringBuilder builder = new StringBuilder(); if (!expressions.isEmpty()) { - builder.append(expressions.get(0).toString()); + builder.append(expressions.get(0).getExpressionString()); for (int i = 1; i < expressions.size(); ++i) { - builder.append(", ").append(expressions.get(i).toString()); + builder.append(", ").append(expressions.get(i).getExpressionString()); } } if (!functionAttributes.isEmpty()) { diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/other/CaseWhenThenExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/other/CaseWhenThenExpression.java index a3166ff0918..2e8893549d6 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/other/CaseWhenThenExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/other/CaseWhenThenExpression.java @@ -115,7 +115,7 @@ public class CaseWhenThenExpression extends Expression { Map<String, List<InputLocation>> inputLocations) { this.getExpressions() .forEach(expression -> expression.bindInputLayerColumnIndexWithExpression(inputLocations)); - final String digest = toString(); + final String digest = getExpressionString(); if (inputLocations.containsKey(digest)) { inputColumnIndex = inputLocations.get(digest).get(0).getValueColumnIndex(); @@ -134,10 +134,10 @@ public class CaseWhenThenExpression extends Expression { StringBuilder builder = new StringBuilder(); builder.append("CASE "); for (Expression expression : this.whenThenExpressions) { - builder.append(expression.toString()).append(" "); + builder.append(expression.getExpressionString()).append(" "); } if (!(this.elseExpression instanceof NullOperand)) { - builder.append("ELSE ").append(this.elseExpression.toString()).append(" "); + builder.append("ELSE ").append(this.elseExpression.getExpressionString()).append(" "); } builder.append("END"); return builder.toString(); 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 94d02482ef5..9dbabc33748 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 @@ -64,7 +64,11 @@ public class BetweenExpression extends TernaryExpression { @Override protected String getExpressionStringInternal() { - return firstExpression + " BETWEEN " + secondExpression + " AND " + thirdExpression; + return firstExpression.getExpressionString() + + " BETWEEN " + + secondExpression.getExpressionString() + + " AND " + + thirdExpression.getExpressionString(); } @Override diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ternary/TernaryExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ternary/TernaryExpression.java index 2242e0f32e3..435ea1db792 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ternary/TernaryExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/ternary/TernaryExpression.java @@ -118,7 +118,7 @@ public abstract class TernaryExpression extends Expression { secondExpression.bindInputLayerColumnIndexWithExpression(inputLocations); thirdExpression.bindInputLayerColumnIndexWithExpression(inputLocations); - final String digest = toString(); + final String digest = getExpressionString(); if (inputLocations.containsKey(digest)) { inputColumnIndex = inputLocations.get(digest).get(0).getValueColumnIndex(); } 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 534bfee18b4..d2f04a914b9 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 @@ -22,6 +22,7 @@ package org.apache.iotdb.db.mpp.plan.expression.unary; 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.LeafOperand; 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; @@ -67,12 +68,14 @@ public class InExpression extends UnaryExpression { @Override protected String getExpressionStringInternal() { StringBuilder stringBuilder = new StringBuilder(); - if (expression instanceof FunctionExpression - || expression instanceof ConstantOperand - || expression instanceof TimeSeriesOperand) { - stringBuilder.append(expression).append(" IN ("); + if (expression instanceof FunctionExpression || expression instanceof LeafOperand) { + stringBuilder.append(expression.getExpressionString()).append(" IN ("); } else { - stringBuilder.append('(').append(expression).append(')').append(" IN ("); + stringBuilder + .append('(') + .append(expression.getExpressionString()) + .append(')') + .append(" IN ("); } return appendValuesToBuild(stringBuilder).toString(); } 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 832e4cd66c4..d113bf47d09 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 @@ -47,7 +47,7 @@ public class IsNullExpression extends UnaryExpression { @Override protected String getExpressionStringInternal() { - return expression + " IS " + (isNot ? "NOT " : "") + "NULL"; + return expression.getExpressionString() + " IS " + (isNot ? "NOT " : "") + "NULL"; } @Override 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 4e69bf01a23..685d1834001 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 @@ -117,7 +117,7 @@ public class LikeExpression extends UnaryExpression { @Override protected String getExpressionStringInternal() { - return expression + " LIKE '" + pattern + "'"; + return expression.getExpressionString() + " LIKE '" + pattern + "'"; } @Override 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 a9996a072ce..b49ed854410 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 @@ -22,6 +22,7 @@ package org.apache.iotdb.db.mpp.plan.expression.unary; 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.LeafOperand; 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; @@ -45,11 +46,9 @@ public class LogicNotExpression extends UnaryExpression { @Override public String getExpressionStringInternal() { - return expression instanceof FunctionExpression - || expression instanceof ConstantOperand - || expression instanceof TimeSeriesOperand - ? "!" + expression - : "!(" + expression + ")"; + return expression instanceof FunctionExpression || expression instanceof LeafOperand + ? "!" + expression.getExpressionString() + : "!(" + expression.getExpressionString() + ")"; } @Override 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 070cf8bfb8f..bb8025b2689 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 @@ -51,8 +51,8 @@ public class NegationExpression extends UnaryExpression { || expression instanceof NullOperand || (expression instanceof ConstantOperand && !((ConstantOperand) expression).isNegativeNumber()) - ? "-" + expression - : "-(" + expression + ")"; + ? "-" + expression.getExpressionString() + : "-(" + expression.getExpressionString() + ")"; } @Override 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 05c4ffd4e68..d32c2f84454 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 @@ -69,7 +69,7 @@ public class RegularExpression extends UnaryExpression { @Override protected String getExpressionStringInternal() { - return expression + " REGEXP '" + patternString + "'"; + return expression.getExpressionString() + " REGEXP '" + patternString + "'"; } @Override diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/UnaryExpression.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/UnaryExpression.java index f697423f2fa..0fd8463d62a 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/UnaryExpression.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/expression/unary/UnaryExpression.java @@ -77,7 +77,7 @@ public abstract class UnaryExpression extends Expression { Map<String, List<InputLocation>> inputLocations) { expression.bindInputLayerColumnIndexWithExpression(inputLocations); - final String digest = toString(); + final String digest = getExpressionString(); if (inputLocations.containsKey(digest)) { inputColumnIndex = inputLocations.get(digest).get(0).getValueColumnIndex(); } 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 2a11d8e8968..61406fb57dc 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 @@ -247,7 +247,9 @@ public class ColumnTransformerVisitor executor.beforeStart( String.valueOf(0), 0, - expressions.stream().map(Expression::toString).collect(Collectors.toList()), + expressions.stream() + .map(Expression::getExpressionString) + .collect(Collectors.toList()), expressions.stream().map(context::getType).collect(Collectors.toList()), functionExpression.getFunctionAttributes()); 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 5dfac9bdc0f..753589884af 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 @@ -401,7 +401,7 @@ public class IntermediateLayerVisitor executor.beforeStart( context.queryId, context.memoryAssigner.assign(), - expressions.stream().map(Expression::toString).collect(Collectors.toList()), + expressions.stream().map(Expression::getExpressionString).collect(Collectors.toList()), expressions.stream().map(context::getType).collect(Collectors.toList()), functionExpression.getFunctionAttributes()); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanBuilder.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanBuilder.java index b191f3f2a1c..5f1d4a4d4de 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanBuilder.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/LogicalPlanBuilder.java @@ -149,7 +149,7 @@ public class LogicalPlanBuilder { && !expression.getExpressionString().equals(ENDTIME)) { context .getTypeProvider() - .setType(expression.toString(), getPreAnalyzedType.apply(expression)); + .setType(expression.getExpressionString(), getPreAnalyzedType.apply(expression)); } }); } @@ -500,7 +500,8 @@ public class LogicalPlanBuilder { AggregationDescriptor aggregationDescriptor, TypeProvider typeProvider) { List<TAggregationType> splitAggregations = SchemaUtils.splitPartialAggregation(aggregationDescriptor.getAggregationType()); - String inputExpressionStr = aggregationDescriptor.getInputExpressions().get(0).toString(); + String inputExpressionStr = + aggregationDescriptor.getInputExpressions().get(0).getExpressionString(); for (TAggregationType aggregation : splitAggregations) { String functionName = aggregation.toString().toLowerCase(); TSDataType aggregationType = SchemaUtils.getAggregationType(functionName); @@ -781,7 +782,7 @@ public class LogicalPlanBuilder { tagKeys, tagValuesToAggregationDescriptors, groupByTagOutputExpressions.stream() - .map(Expression::toString) + .map(Expression::getExpressionString) .collect(Collectors.toList())); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/OperatorTreeGenerator.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/OperatorTreeGenerator.java index 13c033c8a29..19d4b7fdde5 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/OperatorTreeGenerator.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/OperatorTreeGenerator.java @@ -1362,7 +1362,7 @@ public class OperatorTreeGenerator extends PlanVisitor<Operator, LocalExecutionP context .getTypeProvider() // get the type of first inputExpression - .getType(descriptor.getInputExpressions().get(0).toString()), + .getType(descriptor.getInputExpressions().get(0).getExpressionString()), descriptor.getInputExpressions(), descriptor.getInputAttributes(), ascending, @@ -1437,7 +1437,7 @@ public class OperatorTreeGenerator extends PlanVisitor<Operator, LocalExecutionP context .getTypeProvider() // get the type of first inputExpression - .getType(descriptor.getInputExpressions().get(0).toString()), + .getType(descriptor.getInputExpressions().get(0).getExpressionString()), descriptor.getInputExpressions(), descriptor.getInputAttributes(), ascending), diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/SubPlanTypeExtractor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/SubPlanTypeExtractor.java index e80f721677c..0ead6cd7b59 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/SubPlanTypeExtractor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/SubPlanTypeExtractor.java @@ -147,7 +147,7 @@ public class SubPlanTypeExtractor { .flatMap(aggregationDescriptor -> aggregationDescriptor.getInputExpressions().stream()) .forEach( expression -> { - String expressionStr = expression.toString(); + String expressionStr = expression.getExpressionString(); typeProvider.setType(expressionStr, allTypes.getType(expressionStr)); }); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/TransformNode.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/TransformNode.java index 112e53a01b0..f72ca01b2e5 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/TransformNode.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/process/TransformNode.java @@ -78,7 +78,7 @@ public class TransformNode extends SingleChildProcessNode { if (outputColumnNames == null) { outputColumnNames = new ArrayList<>(); for (Expression expression : outputExpressions) { - outputColumnNames.add(expression.toString()); + outputColumnNames.add(expression.getExpressionString()); } } return outputColumnNames; diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/AggregationDescriptor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/AggregationDescriptor.java index 06a53e16c27..74bb3d660ba 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/AggregationDescriptor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/AggregationDescriptor.java @@ -167,9 +167,9 @@ public class AggregationDescriptor { if (parametersString == null) { StringBuilder builder = new StringBuilder(); if (!inputExpressions.isEmpty()) { - builder.append(inputExpressions.get(0).toString()); + builder.append(inputExpressions.get(0).getExpressionString()); for (int i = 1; i < inputExpressions.size(); ++i) { - builder.append(", ").append(inputExpressions.get(i).toString()); + builder.append(", ").append(inputExpressions.get(i).getExpressionString()); } } appendAttributes(builder); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/CrossSeriesAggregationDescriptor.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/CrossSeriesAggregationDescriptor.java index 6dd6351e116..d1c091fb9db 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/CrossSeriesAggregationDescriptor.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/parameter/CrossSeriesAggregationDescriptor.java @@ -97,7 +97,7 @@ public class CrossSeriesAggregationDescriptor extends AggregationDescriptor { if (parametersString == null) { StringBuilder builder = new StringBuilder(outputExpression.getExpressionString()); for (int i = 1; i < expressionNumOfOneInput; i++) { - builder.append(", ").append(inputExpressions.get(i).toString()); + builder.append(", ").append(inputExpressions.get(i).getExpressionString()); } appendAttributes(builder); parametersString = builder.toString(); @@ -135,9 +135,9 @@ public class CrossSeriesAggregationDescriptor extends AggregationDescriptor { private String getInputString(Expression[] expressions) { StringBuilder builder = new StringBuilder(); if (!(expressions.length == 0)) { - builder.append(expressions[0].toString()); + builder.append(expressions[0].getExpressionString()); for (int i = 1; i < expressions.length; ++i) { - builder.append(", ").append(expressions[i].toString()); + builder.append(", ").append(expressions[i].getExpressionString()); } } appendAttributes(builder); diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/HavingCondition.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/HavingCondition.java index 7bfca1b88ad..6a7ab8912ee 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/HavingCondition.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/HavingCondition.java @@ -44,6 +44,6 @@ public class HavingCondition extends StatementNode { } public String toSQLString() { - return "HAVING " + predicate.toString(); + return "HAVING " + predicate.getExpressionString(); } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/ResultColumn.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/ResultColumn.java index ae23d5e3d5b..38523b11012 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/ResultColumn.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/ResultColumn.java @@ -98,7 +98,13 @@ public class ResultColumn extends StatementNode { @Override public String toString() { - return "ResultColumn{" + "expression=" + expression + ", alias='" + alias + '\'' + '}'; + return "ResultColumn{" + + "expression=" + + expression.getExpressionString() + + ", alias='" + + alias + + '\'' + + '}'; } @Override diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/SelectComponent.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/SelectComponent.java index 8961affe57f..74ac2c554c1 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/SelectComponent.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/SelectComponent.java @@ -96,7 +96,7 @@ public class SelectComponent extends StatementNode { } for (int i = 0; i < resultColumns.size(); i++) { ResultColumn resultColumn = resultColumns.get(i); - sqlBuilder.append(resultColumn.getExpression().toString()); + sqlBuilder.append(resultColumn.getExpression().getExpressionString()); if (resultColumn.hasAlias()) { sqlBuilder.append('(').append(resultColumn.getAlias()).append(')'); } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/WhereCondition.java b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/WhereCondition.java index af058038940..4bba6613edb 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/WhereCondition.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/plan/statement/component/WhereCondition.java @@ -44,6 +44,6 @@ public class WhereCondition extends StatementNode { } public String toSQLString() { - return "WHERE " + predicate.toString(); + return "WHERE " + predicate.getOutputSymbol(); } } diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/transformation/dag/intermediate/IntermediateLayer.java b/server/src/main/java/org/apache/iotdb/db/mpp/transformation/dag/intermediate/IntermediateLayer.java index 83e2e659d17..3433787f58a 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/transformation/dag/intermediate/IntermediateLayer.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/transformation/dag/intermediate/IntermediateLayer.java @@ -91,6 +91,6 @@ public abstract class IntermediateLayer { @Override public String toString() { - return expression.toString(); + return expression.getExpressionString(); } } diff --git a/server/src/main/java/org/apache/iotdb/db/utils/TypeInferenceUtils.java b/server/src/main/java/org/apache/iotdb/db/utils/TypeInferenceUtils.java index c9a6e3b132f..35dccd383f2 100644 --- a/server/src/main/java/org/apache/iotdb/db/utils/TypeInferenceUtils.java +++ b/server/src/main/java/org/apache/iotdb/db/utils/TypeInferenceUtils.java @@ -25,6 +25,7 @@ import org.apache.iotdb.db.constant.SqlConstant; import org.apache.iotdb.db.exception.sql.SemanticException; import org.apache.iotdb.db.mpp.plan.analyze.ExpressionUtils; import org.apache.iotdb.db.mpp.plan.expression.Expression; +import org.apache.iotdb.db.mpp.plan.expression.binary.BinaryExpression; import org.apache.iotdb.db.mpp.plan.expression.binary.CompareBinaryExpression; import org.apache.iotdb.db.mpp.plan.expression.leaf.ConstantOperand; import org.apache.iotdb.db.mpp.plan.expression.leaf.TimeSeriesOperand; @@ -227,7 +228,7 @@ public class TypeInferenceUtils { outputExpressionLists.add( Collections.singletonList( ExpressionUtils.reconstructBinaryExpression( - keepExpression.getExpressionType(), + (BinaryExpression) keepExpression, new TimeSeriesOperand( new MeasurementPath( ((TimeSeriesOperand) leftExpression).getPath(), TSDataType.INT64)),
