This is an automated email from the ASF dual-hosted git repository.

hui pushed a commit to branch lmh/AliasDebug
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit 203f65f6246de5f602b70bec1c229748ba587c14
Author: liuminghui233 <[email protected]>
AuthorDate: Wed Jun 1 23:46:03 2022 +0800

    Fix bug when using alias in SELECT clause
---
 .../java/org/apache/iotdb/db/auth/AuthorityFetcher.java   |  4 ++--
 .../apache/iotdb/db/mpp/common/header/ColumnHeader.java   |  6 +++++-
 .../apache/iotdb/db/mpp/common/header/DatasetHeader.java  | 15 ++++++++++++---
 3 files changed, 19 insertions(+), 6 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/auth/AuthorityFetcher.java 
b/server/src/main/java/org/apache/iotdb/db/auth/AuthorityFetcher.java
index 78d92bb33e..5a87e81ef6 100644
--- a/server/src/main/java/org/apache/iotdb/db/auth/AuthorityFetcher.java
+++ b/server/src/main/java/org/apache/iotdb/db/auth/AuthorityFetcher.java
@@ -156,13 +156,13 @@ public class AuthorityFetcher {
         }
         // The Time column will be ignored by the setting of ColumnHeader.
         // So we can put a meaningless value here
-        for (String value : 
authorizerInfo.get(headerList.get(0).getColumnName())) {
+        for (String value : 
authorizerInfo.get(headerList.get(0).getColumnNameWithAlias())) {
           builder.getTimeColumnBuilder().writeLong(0L);
           builder.getColumnBuilder(0).writeBinary(new Binary(value));
           builder.declarePosition();
         }
         for (int i = 1; i < headerList.size(); i++) {
-          for (String value : 
authorizerInfo.get(headerList.get(i).getColumnName())) {
+          for (String value : 
authorizerInfo.get(headerList.get(i).getColumnNameWithAlias())) {
             builder.getColumnBuilder(i).writeBinary(new Binary(value));
           }
         }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeader.java 
b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeader.java
index 9cadcd7bcb..f47ca09099 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeader.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/ColumnHeader.java
@@ -43,13 +43,17 @@ public class ColumnHeader {
     this.alias = null;
   }
 
-  public String getColumnName() {
+  public String getColumnNameWithAlias() {
     if (alias != null) {
       return alias;
     }
     return columnName;
   }
 
+  public String getColumnName() {
+    return columnName;
+  }
+
   public TSDataType getColumnType() {
     return dataType;
   }
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeader.java 
b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeader.java
index 7f21dc469f..fab0d0c7e9 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeader.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/common/header/DatasetHeader.java
@@ -64,7 +64,9 @@ public class DatasetHeader {
   }
 
   public List<String> getRespColumns() {
-    return 
columnHeaders.stream().map(ColumnHeader::getColumnName).collect(Collectors.toList());
+    return columnHeaders.stream()
+        .map(ColumnHeader::getColumnNameWithAlias)
+        .collect(Collectors.toList());
   }
 
   public List<String> getRespDataTypeList() {
@@ -89,10 +91,17 @@ public class DatasetHeader {
   }
 
   public Map<String, Integer> getColumnNameIndexMap() {
-    return columnToTsBlockIndexMap;
+    Map<String, Integer> columnNameIndexMap = new HashMap<>();
+    for (ColumnHeader columnHeader : columnHeaders) {
+      columnNameIndexMap.put(
+          columnHeader.getColumnNameWithAlias(),
+          columnToTsBlockIndexMap.get(columnHeader.getColumnName()));
+    }
+    return columnNameIndexMap;
   }
 
   public int getOutputValueColumnCount() {
-    return (int) 
columnHeaders.stream().map(ColumnHeader::getColumnName).distinct().count();
+    return (int)
+        
columnHeaders.stream().map(ColumnHeader::getColumnNameWithAlias).distinct().count();
   }
 }

Reply via email to