|
47 | 47 | import org.apache.iotdb.commons.queryengine.plan.relational.metadata.QualifiedObjectName; |
48 | 48 | import org.apache.iotdb.commons.queryengine.plan.relational.planner.Symbol; |
49 | 49 | import org.apache.iotdb.commons.queryengine.plan.relational.planner.node.AggregationNode; |
| 50 | +import org.apache.iotdb.commons.queryengine.plan.relational.planner.node.CollectNode; |
50 | 51 | import org.apache.iotdb.commons.queryengine.plan.relational.planner.node.TopKNode; |
51 | 52 | import org.apache.iotdb.commons.queryengine.plan.relational.sql.ast.Expression; |
52 | 53 | import org.apache.iotdb.commons.queryengine.plan.relational.sql.ast.FunctionCall; |
@@ -229,6 +230,16 @@ public DataNodeTableOperatorGenerator(Metadata metadata) { |
229 | 230 | super(metadata); |
230 | 231 | } |
231 | 232 |
|
| 233 | + @Override |
| 234 | + public Operator visitCollect(CollectNode node, LocalExecutionPlanContext context) { |
| 235 | + CollectQuotaGroup quotaGroup = context.enterCollectQuotaGroup(node.getPlanNodeId().getId()); |
| 236 | + try { |
| 237 | + return super.visitCollect(node, context); |
| 238 | + } finally { |
| 239 | + context.exitCollectQuotaGroup(quotaGroup); |
| 240 | + } |
| 241 | + } |
| 242 | + |
232 | 243 | /** |
233 | 244 | * Producer side: register a shared {@link TopKRuntimeFilter} before visiting TopK children so |
234 | 245 | * nested Scan nodes can resolve the same instance during operator generation. |
@@ -385,6 +396,7 @@ public Operator visitTableExchange(ExchangeNode node, LocalExecutionPlanContext |
385 | 396 | if (!isSameNode) { |
386 | 397 | context.addExchangeSumNum(1); |
387 | 398 | } |
| 399 | + context.registerExchangeSourceHandle(sourceHandle); |
388 | 400 | sourceHandle.setMaxBytesCanReserve(context.getMaxBytesOneHandleCanReserve()); |
389 | 401 | ExchangeOperator exchangeOperator = |
390 | 402 | new ExchangeOperator(operatorContext, sourceHandle, node.getUpstreamPlanNodeId()); |
|
0 commit comments