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/05/28 14:12:09 UTC
[iotdb] 04/04: use getExpressionString() replace toString()
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 <54...@qq.com>
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)),