You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ro...@apache.org on 2021/05/28 10:50:46 UTC
[iotdb] 01/02: fix a bug
This is an automated email from the ASF dual-hosted git repository.
rong pushed a commit to branch iotdb-1400
in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit c7d3818477405641732c4e73353404bcffff8bda
Author: Steve Yurong Su <ro...@apache.org>
AuthorDate: Fri May 28 18:39:47 2021 +0800
fix a bug
---
.../iotdb/db/qp/physical/crud/QueryPlan.java | 2 +-
.../db/qp/physical/crud/RawDataQueryPlan.java | 2 +-
.../apache/iotdb/db/qp/physical/crud/UDTFPlan.java | 41 ++++++++++------------
.../apache/iotdb/db/query/dataset/UDTFDataSet.java | 3 +-
4 files changed, 23 insertions(+), 25 deletions(-)
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 c28d9c6..c2c3157 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,7 +113,7 @@ public abstract class QueryPlan extends PhysicalPlan {
alignByTime = align;
}
- public void addPathToIndex(String columnName, Integer index) {
+ public void setColumnNameToDatasetOutputIndex(String columnName, Integer index) {
pathToIndex.put(columnName, index);
}
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/RawDataQueryPlan.java b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/RawDataQueryPlan.java
index 74b6b25..49d6da5 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/RawDataQueryPlan.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/physical/crud/RawDataQueryPlan.java
@@ -89,7 +89,7 @@ public class RawDataQueryPlan extends QueryPlan {
String columnForDisplay = getColumnForDisplay(columnForReader, originalIndex);
if (!columnForDisplaySet.contains(columnForDisplay)) {
- addPathToIndex(columnForDisplay, getPathToIndex().size());
+ setColumnNameToDatasetOutputIndex(columnForDisplay, getPathToIndex().size());
columnForDisplaySet.add(columnForDisplay);
}
}
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 856319f..0ae2109 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
@@ -54,8 +54,7 @@ public class UDTFPlan extends RawDataQueryPlan implements UDFPlan {
protected Map<String, UDTFExecutor> columnName2Executor = new HashMap<>();
protected Map<Integer, UDTFExecutor> originalOutputColumnIndex2Executor = new HashMap<>();
- protected List<String> datasetOutputColumnIndex2UdfColumnName = new ArrayList<>();
- protected List<String> datasetOutputColumnIndex2RawQueryColumnName = new ArrayList<>();
+ protected Map<Integer, Integer> datasetOutputIndexToResultColumnIndex = new HashMap<>();
protected Map<String, Integer> pathNameToReaderIndex;
@@ -98,12 +97,9 @@ public class UDTFPlan extends RawDataQueryPlan implements UDFPlan {
String columnForDisplay = getColumnForDisplay(columnForReader, originalIndex);
if (!columnForDisplaySet.contains(columnForDisplay)) {
- addPathToIndex(columnForDisplay, getPathToIndex().size());
- if (isUdf) {
- addUdfOutputColumn(columnForDisplay);
- } else {
- addRawQueryOutputColumn(columnForDisplay);
- }
+ int datasetOutputIndex = getPathToIndex().size();
+ setColumnNameToDatasetOutputIndex(columnForDisplay, datasetOutputIndex);
+ setDatasetOutputIndexToResultColumnIndex(datasetOutputIndex, originalIndex);
columnForDisplaySet.add(columnForDisplay);
}
}
@@ -111,6 +107,11 @@ public class UDTFPlan extends RawDataQueryPlan implements UDFPlan {
setPathNameToReaderIndex(pathNameToReaderIndex);
}
+ private void setDatasetOutputIndexToResultColumnIndex(
+ int datasetOutputIndex, Integer originalIndex) {
+ datasetOutputIndexToResultColumnIndex.put(datasetOutputIndex, originalIndex);
+ }
+
@Override
public void constructUdfExecutors(List<ResultColumn> resultColumns) {
for (int i = 0; i < resultColumns.size(); ++i) {
@@ -180,20 +181,26 @@ public class UDTFPlan extends RawDataQueryPlan implements UDFPlan {
return originalOutputColumnIndex2Executor.get(originalOutputColumn);
}
+ public ResultColumn getResultColumnByDatasetOutputIndex(int datasetOutputIndex) {
+ return resultColumns.get(datasetOutputIndexToResultColumnIndex.get(datasetOutputIndex));
+ }
+
public UDTFExecutor getExecutorByDataSetOutputColumnIndex(int datasetOutputIndex) {
- return columnName2Executor.get(datasetOutputColumnIndex2UdfColumnName.get(datasetOutputIndex));
+ return columnName2Executor.get(
+ getResultColumnByDatasetOutputIndex(datasetOutputIndex).getResultColumnName());
}
public String getRawQueryColumnNameByDatasetOutputColumnIndex(int datasetOutputIndex) {
- return datasetOutputColumnIndex2RawQueryColumnName.get(datasetOutputIndex);
+ return getResultColumnByDatasetOutputIndex(datasetOutputIndex).getResultColumnName();
}
public boolean isUdfColumn(int datasetOutputIndex) {
- return resultColumns.get(datasetOutputIndex).getExpression() instanceof FunctionExpression;
+ return getResultColumnByDatasetOutputIndex(datasetOutputIndex).getExpression()
+ instanceof FunctionExpression;
}
public boolean isArithmeticColumn(int datasetOutputIndex) {
- Expression expression = resultColumns.get(datasetOutputIndex).getExpression();
+ Expression expression = getResultColumnByDatasetOutputIndex(datasetOutputIndex).getExpression();
return expression instanceof BinaryExpression || expression instanceof NegationExpression;
}
@@ -201,16 +208,6 @@ public class UDTFPlan extends RawDataQueryPlan implements UDFPlan {
return pathNameToReaderIndex.get(pathName);
}
- public void addUdfOutputColumn(String udfDatasetOutputColumn) {
- datasetOutputColumnIndex2UdfColumnName.add(udfDatasetOutputColumn);
- datasetOutputColumnIndex2RawQueryColumnName.add(null);
- }
-
- public void addRawQueryOutputColumn(String rawQueryOutputColumn) {
- datasetOutputColumnIndex2UdfColumnName.add(null);
- datasetOutputColumnIndex2RawQueryColumnName.add(rawQueryOutputColumn);
- }
-
public void setPathNameToReaderIndex(Map<String, Integer> pathNameToReaderIndex) {
this.pathNameToReaderIndex = pathNameToReaderIndex;
}
diff --git a/server/src/main/java/org/apache/iotdb/db/query/dataset/UDTFDataSet.java b/server/src/main/java/org/apache/iotdb/db/query/dataset/UDTFDataSet.java
index 610b2c4..7cab6b2 100644
--- a/server/src/main/java/org/apache/iotdb/db/query/dataset/UDTFDataSet.java
+++ b/server/src/main/java/org/apache/iotdb/db/query/dataset/UDTFDataSet.java
@@ -192,7 +192,8 @@ public abstract class UDTFDataSet extends QueryDataSet {
}
private void constructArithmeticTransformer(int columnIndex) {
- Expression expression = udtfPlan.getResultColumns().get(columnIndex).getExpression();
+ Expression expression =
+ udtfPlan.getResultColumnByDatasetOutputIndex(columnIndex).getExpression();
// unary expression
if (expression instanceof NegationExpression) {