You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by xi...@apache.org on 2021/03/17 09:32:01 UTC
[iotdb] 02/02: Fix some bugs
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 <wx...@gmail.com>
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) {