This is an automated email from the ASF dual-hosted git repository. rong pushed a commit to branch iotdb-1022-v2 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit e6216ad0751bc3f3f6b18516a253ba131a047582 Author: SteveYurongSu <[email protected]> AuthorDate: Wed May 19 21:15:00 2021 +0800 fix last query with alias tests & remove ts alias --- .../java/org/apache/iotdb/db/metadata/MManager.java | 3 --- .../java/org/apache/iotdb/db/metadata/PartialPath.java | 14 -------------- .../iotdb/db/qp/physical/crud/LastQueryPlan.java | 18 ++++++++++-------- .../apache/iotdb/db/qp/physical/crud/QueryPlan.java | 8 ++------ .../org/apache/iotdb/db/qp/utils/WildcardsRemover.java | 14 -------------- .../db/query/expression/unary/TimeSeriesOperand.java | 10 ++-------- 6 files changed, 14 insertions(+), 53 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java index a91d333..f7d5a44 100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java @@ -1284,9 +1284,6 @@ public class MManager { if (partialPath.isMeasurementAliasExists()) { indexMap.put(partialPath.getFullPathWithAlias(), index); } - if (partialPath.isTsAliasExists()) { - indexMap.put(partialPath.getTsAlias(), index); - } i++; } } diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/PartialPath.java b/server/src/main/java/org/apache/iotdb/db/metadata/PartialPath.java index 79d075f..26ae36e 100755 --- a/server/src/main/java/org/apache/iotdb/db/metadata/PartialPath.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/PartialPath.java @@ -43,8 +43,6 @@ public class PartialPath extends Path implements Comparable<Path> { protected String[] nodes; // alias of measurement, null pointer cannot be serialized in thrift so empty string is instead protected String measurementAlias = ""; - // alias of time series used in SELECT AS - protected String tsAlias = ""; /** * Construct the PartialPath using a String, will split the given String into String[] E.g., path @@ -237,18 +235,6 @@ public class PartialPath extends Path implements Comparable<Path> { return measurementAlias != null && !measurementAlias.isEmpty(); } - public String getTsAlias() { - return tsAlias; - } - - public void setTsAlias(String tsAlias) { - this.tsAlias = tsAlias; - } - - public boolean isTsAliasExists() { - return tsAlias != null && !tsAlias.isEmpty(); - } - @Override public String getFullPathWithAlias() { return getDevice() + IoTDBConstant.PATH_SEPARATOR + measurementAlias; diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/LastQueryPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/LastQueryPlan.java index dc09cec..4064364 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/LastQueryPlan.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/LastQueryPlan.java @@ -21,18 +21,19 @@ package org.apache.iotdb.db.qp.physical.crud; import org.apache.iotdb.db.exception.metadata.MetadataException; import org.apache.iotdb.db.exception.query.QueryProcessException; -import org.apache.iotdb.db.metadata.PartialPath; import org.apache.iotdb.db.qp.logical.Operator; import org.apache.iotdb.db.qp.strategy.PhysicalGenerator; +import org.apache.iotdb.db.query.expression.ResultColumn; import org.apache.iotdb.db.service.IoTDB; -import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType; import org.apache.iotdb.tsfile.read.expression.IExpression; import org.apache.iotdb.tsfile.read.expression.impl.GlobalTimeExpression; import org.apache.iotdb.tsfile.read.filter.TimeFilter.TimeGt; import org.apache.iotdb.tsfile.read.filter.TimeFilter.TimeGtEq; import org.apache.iotdb.tsfile.read.filter.basic.Filter; +import java.util.ArrayList; import java.util.HashSet; +import java.util.List; import java.util.Set; public class LastQueryPlan extends RawDataQueryPlan { @@ -44,18 +45,19 @@ public class LastQueryPlan extends RawDataQueryPlan { @Override public void deduplicate(PhysicalGenerator physicalGenerator) throws MetadataException { + List<ResultColumn> deduplicatedResultColumns = new ArrayList<>(); Set<String> columnForReaderSet = new HashSet<>(); - for (int i = 0; i < paths.size(); i++) { - PartialPath path = paths.get(i); - String column = getColumnForReaderFromPath(path, i); + for (int i = 0; i < resultColumns.size(); i++) { + String column = resultColumns.get(i).getResultColumnName(); if (!columnForReaderSet.contains(column)) { - TSDataType seriesType = dataTypes.get(i); - addDeduplicatedPaths(path); - addDeduplicatedDataTypes(seriesType); + addDeduplicatedPaths(paths.get(i)); + addDeduplicatedDataTypes(dataTypes.get(i)); + deduplicatedResultColumns.add(resultColumns.get(i)); columnForReaderSet.add(column); } } transformPaths(IoTDB.metaManager); + setResultColumns(deduplicatedResultColumns); } @Override 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 6bd6ce4..9b074fd 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 @@ -128,12 +128,8 @@ public abstract class QueryPlan extends PhysicalPlan { } public String getColumnForReaderFromPath(PartialPath path, int pathIndex) { - String columnForReader = path.isTsAliasExists() ? path.getTsAlias() : null; - if (columnForReader == null) { - columnForReader = - path.isMeasurementAliasExists() ? path.getFullPathWithAlias() : path.toString(); - } - return columnForReader; + ResultColumn resultColumn = resultColumns.get(pathIndex); + return resultColumn.hasAlias() ? resultColumn.getAlias() : path.getFullPath(); } public String getColumnForDisplay(String columnForReader, int pathIndex) diff --git a/server/src/main/java/org/apache/iotdb/db/qp/utils/WildcardsRemover.java b/server/src/main/java/org/apache/iotdb/db/qp/utils/WildcardsRemover.java index d2e6054..a4525f1 100644 --- a/server/src/main/java/org/apache/iotdb/db/qp/utils/WildcardsRemover.java +++ b/server/src/main/java/org/apache/iotdb/db/qp/utils/WildcardsRemover.java @@ -80,8 +80,6 @@ public class WildcardsRemover { Pair<List<PartialPath>, Integer> pair = concatPathOptimizer.removeWildcard(path, limit, offset); - checkAndSetTsAlias(path, pair.left); - consumed += pair.right; if (offset != 0) { int delta = offset - pair.right; @@ -99,18 +97,6 @@ public class WildcardsRemover { } } - private void checkAndSetTsAlias(PartialPath originPath, List<PartialPath> actualPaths) - throws LogicalOptimizeException { - if (originPath.isTsAliasExists()) { - if (actualPaths.size() == 1) { - actualPaths.get(0).setTsAlias(originPath.getTsAlias()); - } else if (actualPaths.size() >= 2) { - throw new LogicalOptimizeException( - "alias '" + originPath.getTsAlias() + "' can only be matched with one time series"); - } - } - } - public List<List<Expression>> removeWildcardsFrom(List<Expression> expressions) throws LogicalOptimizeException { List<List<Expression>> extendedExpressions = new ArrayList<>(); diff --git a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/TimeSeriesOperand.java b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/TimeSeriesOperand.java index fd01123..3ca58c3 100644 --- a/server/src/main/java/org/apache/iotdb/db/query/expression/unary/TimeSeriesOperand.java +++ b/server/src/main/java/org/apache/iotdb/db/query/expression/unary/TimeSeriesOperand.java @@ -58,11 +58,7 @@ public class TimeSeriesOperand extends Expression { @Override public void concat(List<PartialPath> prefixPaths, List<Expression> resultExpressions) { for (PartialPath prefixPath : prefixPaths) { - PartialPath fullPath = prefixPath.concatPath(path); - if (path.isTsAliasExists()) { - fullPath.setTsAlias(path.getTsAlias()); - } - resultExpressions.add(new TimeSeriesOperand(fullPath)); + resultExpressions.add(new TimeSeriesOperand(prefixPath.concatPath(path))); } } @@ -81,8 +77,6 @@ public class TimeSeriesOperand extends Expression { @Override public String toString() { - return path.isTsAliasExists() - ? path.getTsAlias() - : path.isMeasurementAliasExists() ? path.getFullPathWithAlias() : path.getFullPath(); + return path.isMeasurementAliasExists() ? path.getFullPathWithAlias() : path.getFullPath(); } }
