This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 11b38c0eae3 [Fix](query) Fix project order in table distributed plan
generator
11b38c0eae3 is described below
commit 11b38c0eae37489c36e2d4743108908a19837aa9
Author: Beyyes <[email protected]>
AuthorDate: Fri Apr 11 11:33:19 2025 +0800
[Fix](query) Fix project order in table distributed plan generator
---
.../relational/AbstractAggTableScanOperator.java | 2 +-
.../AbstractDefaultAggTableScanOperator.java | 2 +-
.../distribute/TableDistributedPlanGenerator.java | 44 +++++++++++-----------
3 files changed, 24 insertions(+), 24 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractAggTableScanOperator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractAggTableScanOperator.java
index 640b38cf698..bd0f9c16ef9 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractAggTableScanOperator.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractAggTableScanOperator.java
@@ -110,7 +110,7 @@ public abstract class AbstractAggTableScanOperator extends
AbstractDataSourceOpe
private boolean allAggregatorsHasFinalResult = false;
- public AbstractAggTableScanOperator(AbstractAggTableScanOperatorParameter
parameter) {
+ protected AbstractAggTableScanOperator(AbstractAggTableScanOperatorParameter
parameter) {
this.sourceId = parameter.sourceId;
this.operatorContext = parameter.context;
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractDefaultAggTableScanOperator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractDefaultAggTableScanOperator.java
index f88aa22aabc..ba7e1a226fe 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractDefaultAggTableScanOperator.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/AbstractDefaultAggTableScanOperator.java
@@ -36,7 +36,7 @@ public abstract class AbstractDefaultAggTableScanOperator
extends AbstractAggTab
private static final long INSTANCE_SIZE =
RamUsageEstimator.shallowSizeOfInstance(AbstractDefaultAggTableScanOperator.class);
- public
AbstractDefaultAggTableScanOperator(AbstractAggTableScanOperatorParameter
parameter) {
+ protected
AbstractDefaultAggTableScanOperator(AbstractAggTableScanOperatorParameter
parameter) {
super(parameter);
}
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java
index c8087e365d3..66d06f7b455 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java
@@ -223,38 +223,39 @@ public class TableDistributedPlanGenerator
public List<PlanNode> visitProject(ProjectNode node, PlanContext context) {
List<PlanNode> childrenNodes = node.getChild().accept(this, context);
OrderingScheme childOrdering =
nodeOrderingMap.get(childrenNodes.get(0).getPlanNodeId());
+ boolean containAllSortItem = false;
if (childOrdering != null) {
- nodeOrderingMap.put(node.getPlanNodeId(), childOrdering);
+ // the column used for order by has been pruned, we can't copy this node
to sub nodeTrees.
+ containAllSortItem =
+
ImmutableSet.copyOf(node.getOutputSymbols()).containsAll(childOrdering.getOrderBy());
}
-
if (childrenNodes.size() == 1) {
+ if (containAllSortItem) {
+ nodeOrderingMap.put(node.getPlanNodeId(), childOrdering);
+ }
node.setChild(childrenNodes.get(0));
return Collections.singletonList(node);
}
- boolean canCopyThis = true;
- if (childOrdering != null) {
- // the column used for order by has been pruned, we can't copy this node
to sub nodeTrees.
- canCopyThis =
-
ImmutableSet.copyOf(node.getOutputSymbols()).containsAll(childOrdering.getOrderBy());
- }
- canCopyThis =
- canCopyThis
- && node.getAssignments().getMap().values().stream()
- .noneMatch(PushPredicateIntoTableScan::containsDiffFunction);
-
- if (!canCopyThis) {
+ boolean containsDiff =
+ node.getAssignments().getMap().values().stream()
+ .anyMatch(PushPredicateIntoTableScan::containsDiffFunction);
+ if (containsDiff) {
+ if (containAllSortItem) {
+ nodeOrderingMap.put(node.getPlanNodeId(), childOrdering);
+ }
node.setChild(mergeChildrenViaCollectOrMergeSort(childOrdering,
childrenNodes));
return Collections.singletonList(node);
}
- List<PlanNode> resultNodeList = new ArrayList<>();
- for (int i = 0; i < childrenNodes.size(); i++) {
- PlanNode child = childrenNodes.get(i);
+ List<PlanNode> resultNodeList = new ArrayList<>(childrenNodes.size());
+ for (PlanNode child : childrenNodes) {
ProjectNode subProjectNode =
new ProjectNode(queryId.genPlanNodeId(), child,
node.getAssignments());
resultNodeList.add(subProjectNode);
- nodeOrderingMap.put(subProjectNode.getPlanNodeId(), childOrdering);
+ if (containAllSortItem) {
+ nodeOrderingMap.put(subProjectNode.getPlanNodeId(), childOrdering);
+ }
}
return resultNodeList;
}
@@ -432,8 +433,7 @@ public class TableDistributedPlanGenerator
}
List<PlanNode> resultNodeList = new ArrayList<>();
- for (int i = 0; i < childrenNodes.size(); i++) {
- PlanNode child = childrenNodes.get(i);
+ for (PlanNode child : childrenNodes) {
FilterNode subFilterNode =
new FilterNode(queryId.genPlanNodeId(), child, node.getPredicate());
resultNodeList.add(subFilterNode);
@@ -483,6 +483,7 @@ public class TableDistributedPlanGenerator
return Collections.singletonList(node);
}
+ @Override
public List<PlanNode> visitDeviceTableScan(
final DeviceTableScanNode node, final PlanContext context) {
if (context.isPushDownGrouping()) {
@@ -509,7 +510,6 @@ public class TableDistributedPlanGenerator
}
Map<Integer, List<TRegionReplicaSet>> cachedSeriesSlotWithRegions = new
HashMap<>();
- List<PlanNode> result = new ArrayList<>();
List<DeviceEntry> crossRegionDevices = new ArrayList<>();
final Map<TRegionReplicaSet, DeviceTableScanNode> tableScanNodeMap = new
HashMap<>();
@@ -554,7 +554,7 @@ public class TableDistributedPlanGenerator
});
deviceTableScanNode.appendDeviceEntry(deviceEntry);
}
- result.addAll(tableScanNodeMap.values());
+ List<PlanNode> result = new ArrayList<>(tableScanNodeMap.values());
if (context.hasSortProperty) {
processSortProperty(node, result, context);
}