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