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(); } }
