This is an automated email from the ASF dual-hosted git repository. xiangweiwei pushed a commit to branch optimizeDDP in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit abae1139a10316d1fe698c5c8ae683039b57ea19 Author: Alima777 <[email protected]> AuthorDate: Wed Mar 17 17:31:22 2021 +0800 Fix some bugs --- .../org/apache/iotdb/db/qp/physical/crud/AggregationPlan.java | 6 +++--- .../java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java | 3 +-- .../java/org/apache/iotdb/db/qp/physical/crud/UDTFPlan.java | 5 ++++- .../org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java | 11 +++++------ 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/AggregationPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/AggregationPlan.java index 4e523b2..600c5db 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/AggregationPlan.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/AggregationPlan.java @@ -111,9 +111,9 @@ public class AggregationPlan extends RawDataQueryPlan { } @Override - public String getColumnForReaderFromPath(int pathIndex) { - String columnForReader = super.getColumnForReaderFromPath(pathIndex); - if (columnForReader == null) { + public String getColumnForReaderFromPath(PartialPath path, int pathIndex) { + String columnForReader = super.getColumnForReaderFromPath(path, pathIndex); + if (!path.isTsAliasExists()) { columnForReader = this.getAggregations().get(pathIndex) + "(" + columnForReader + ")"; } return columnForReader; diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java index 12ab4cd..bcd5b05 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/QueryPlan.java @@ -113,8 +113,7 @@ public abstract class QueryPlan extends PhysicalPlan { this.ascending = ascending; } - public String getColumnForReaderFromPath(int pathIndex) { - PartialPath path = paths.get(pathIndex); + public String getColumnForReaderFromPath(PartialPath path, int pathIndex) { String columnForReader = path.isTsAliasExists() ? path.getTsAlias() : null; if (columnForReader == null) { columnForReader = diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/UDTFPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/UDTFPlan.java index 8a587fc..5192bbc 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/UDTFPlan.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/UDTFPlan.java @@ -133,6 +133,9 @@ public class UDTFPlan extends RawDataQueryPlan implements UDFPlan { @Override public String getColumnForDisplay(String columnForReader, int pathIndex) { - return this.getExecutorByOriginalOutputColumnIndex(pathIndex).getContext().getColumnName(); + if (paths.get(pathIndex) == null) { + return this.getExecutorByOriginalOutputColumnIndex(pathIndex).getContext().getColumnName(); + } + return columnForReader; } } diff --git a/server/src/main/java/org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java b/server/src/main/java/org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java index ce4f3b8..47f781e 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/strategy/PhysicalGenerator.java @@ -840,7 +840,7 @@ public class PhysicalGenerator { if (queryPlan instanceof LastQueryPlan) { for (int i = 0; i < paths.size(); i++) { PartialPath path = paths.get(i); - String column = queryPlan.getColumnForReaderFromPath(i); + String column = queryPlan.getColumnForReaderFromPath(path, i); if (!columnForReaderSet.contains(column)) { TSDataType seriesType = dataTypes.get(i); rawDataQueryPlan.addDeduplicatedPaths(path); @@ -873,7 +873,7 @@ public class PhysicalGenerator { PartialPath originalPath = indexedPath.left; Integer originalIndex = indexedPath.right; - String columnForReader = queryPlan.getColumnForReaderFromPath(originalIndex); + String columnForReader = queryPlan.getColumnForReaderFromPath(originalPath, originalIndex); boolean isUdf = queryPlan instanceof UDTFPlan && paths.get(originalIndex) == null; if (!columnForReaderSet.contains(columnForReader)) { @@ -914,10 +914,9 @@ public class PhysicalGenerator { // check parameter range if (seriesOffset >= size) { - throw new QueryProcessException( - String.format( - "The value of SOFFSET (%d) is equal to or exceeds the number of sequences (%d) that can actually be returned.", - seriesOffset, size)); + String errorMessage = + "The value of SOFFSET (%d) is equal to or exceeds the number of sequences (%d) that can actually be returned."; + throw new QueryProcessException(String.format(errorMessage, seriesOffset, size)); } int endPosition = seriesOffset + seriesLimit; if (endPosition > size) {
