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) {

Reply via email to