You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@iotdb.apache.org by "Sh-Zh-7 (via GitHub)" <gi...@apache.org> on 2026/03/03 02:56:59 UTC
[PR] Push down TopKRankingNode into TableScanNode [iotdb]
Sh-Zh-7 opened a new pull request, #17245:
URL: https://github.com/apache/iotdb/pull/17245
This PR push down TopKRankingNode into TableScanNode when user use `ORDER BY time` or `ORDER BY time DESC` by setting `pushDownLimitsToEachDevice`.
Meanwhile, this PR also add push project through optimization to optimize `FilterNode -> ProjectNode -> WindowNode` into `ProjectNode -> TopKRankingNode`.
However, this PR does not add pass to eliminate extra `OutputNode -> ProjectNode` after the new pass.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: reviews-unsubscribe@iotdb.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Push down TopKRankingNode into TableScanNode [iotdb]
Posted by "sonarqubecloud[bot] (via GitHub)" <gi...@apache.org>.
sonarqubecloud[bot] commented on PR #17245:
URL: https://github.com/apache/iotdb/pull/17245#issuecomment-4028152652
## [](https://sonarcloud.io/dashboard?id=apache_iotdb&pullRequest=17245) **Quality Gate failed**
Failed conditions
 [10.3% Duplication on New Code](https://sonarcloud.io/component_measures?id=apache_iotdb&pullRequest=17245&metric=new_duplicated_lines_density&view=list) (required ≤ 5%)
 [C Reliability Rating on New Code](https://sonarcloud.io/dashboard?id=apache_iotdb&pullRequest=17245) (required ≥ A)
[See analysis details on SonarQube Cloud](https://sonarcloud.io/dashboard?id=apache_iotdb&pullRequest=17245)
##
 Catch issues before they fail your Quality Gate with our IDE extension  [SonarQube for IDE](https://www.sonarsource.com/products/sonarlint/features/connected-mode/?referrer=pull-request)
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: reviews-unsubscribe@iotdb.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Push down TopKRankingNode into TableScanNode [iotdb]
Posted by "Copilot (via GitHub)" <gi...@apache.org>.
Copilot commented on code in PR #17245:
URL: https://github.com/apache/iotdb/pull/17245#discussion_r2929515505
##########
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/iterative/rule/PushPredicateThroughProjectIntoWindow.java:
##########
@@ -0,0 +1,207 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.iotdb.db.queryengine.plan.relational.planner.iterative.rule;
+
+import org.apache.iotdb.db.queryengine.plan.relational.planner.PlannerContext;
+import org.apache.iotdb.db.queryengine.plan.relational.planner.Symbol;
+import org.apache.iotdb.db.queryengine.plan.relational.planner.iterative.Rule;
+import org.apache.iotdb.db.queryengine.plan.relational.planner.node.FilterNode;
+import org.apache.iotdb.db.queryengine.plan.relational.planner.node.ProjectNode;
+import org.apache.iotdb.db.queryengine.plan.relational.planner.node.TopKRankingNode;
+import org.apache.iotdb.db.queryengine.plan.relational.planner.node.ValuesNode;
+import org.apache.iotdb.db.queryengine.plan.relational.planner.node.WindowNode;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.ComparisonExpression;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Expression;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.Literal;
+import org.apache.iotdb.db.queryengine.plan.relational.sql.ast.SymbolReference;
+import org.apache.iotdb.db.queryengine.plan.relational.utils.matching.Capture;
+import org.apache.iotdb.db.queryengine.plan.relational.utils.matching.Captures;
+import org.apache.iotdb.db.queryengine.plan.relational.utils.matching.Pattern;
+
+import com.google.common.collect.ImmutableList;
+
+import java.util.OptionalInt;
+
+import static com.google.common.collect.Iterables.getOnlyElement;
+import static java.lang.Math.toIntExact;
+import static java.util.Objects.requireNonNull;
+import static org.apache.iotdb.db.queryengine.plan.relational.planner.iterative.rule.Util.toTopNRankingType;
+import static org.apache.iotdb.db.queryengine.plan.relational.planner.node.Patterns.filter;
+import static org.apache.iotdb.db.queryengine.plan.relational.planner.node.Patterns.project;
+import static org.apache.iotdb.db.queryengine.plan.relational.planner.node.Patterns.source;
+import static org.apache.iotdb.db.queryengine.plan.relational.planner.node.Patterns.window;
+import static org.apache.iotdb.db.queryengine.plan.relational.utils.matching.Capture.newCapture;
+
+/**
+ * Converts a filter on a ranking function (e.g. {@code rn <= N}) into a {@link TopKRankingNode}
+ * when there is an identity projection between the filter and window node.
+ *
+ * <p>Before:
+ *
+ * <pre>
+ * FilterNode(rn <= N)
+ * └── ProjectNode (identity)
+ * └── WindowNode(row_number/rank)
+ * </pre>
+ *
+ * After (for LESS_THAN / LESS_THAN_OR_EQUAL — filter fully absorbed):
+ *
+ * <pre>
+ * ProjectNode (identity)
+ * └── TopKRankingNode(maxRanking=N)
+ * </pre>
+ *
+ * After (for EQUAL — filter kept):
+ *
+ * <pre>
+ * FilterNode(rn = N)
+ * └── ProjectNode (identity)
+ * └── TopKRankingNode(maxRanking=N)
+ * </pre>
+ */
+public class PushPredicateThroughProjectIntoWindow implements Rule<FilterNode> {
+ private static final Capture<ProjectNode> PROJECT = newCapture();
+ private static final Capture<WindowNode> WINDOW = newCapture();
+
+ private final PlannerContext plannerContext;
+ private final Pattern<FilterNode> pattern;
+
+ public PushPredicateThroughProjectIntoWindow(PlannerContext plannerContext) {
+ this.plannerContext = requireNonNull(plannerContext, "plannerContext is null");
Review Comment:
`plannerContext` is stored in a field but never used in this rule, which will fail builds if unused fields are checked (and adds noise regardless). Remove the field and constructor assignment, or use it if it was intended for feature gating.
##########
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/node/TopKRankingNode.java:
##########
@@ -198,7 +223,8 @@ public int hashCode() {
rankingType,
rankingSymbol,
maxRankingPerPartition,
- partial);
+ partial,
+ dataPreSortedAndLimited);
Review Comment:
`hashCode()` now includes `dataPreSortedAndLimited`, but `equals()` (above) does not. This breaks the equals/hashCode contract and can cause incorrect behavior in hash-based collections or plan memoization. Make `equals()` and `hashCode()` consider the same set of fields (e.g., add `dataPreSortedAndLimited` to `equals()`).
##########
integration-test/src/test/java/org/apache/iotdb/relational/it/db/it/IoTDBWindowFunction3IT.java:
##########
@@ -166,6 +177,84 @@ public void testReplaceWindowWithRowNumber() {
DATABASE_NAME);
}
+ @Test
+ public void testPushDownFilterIntoWindowWithRank() {
+ // Data: d1 values {3,5,3,1}, d2 values {2,4}
+ // rank(PARTITION BY device ORDER BY value):
+ // d1: 1.0→rank=1, 3.0→rank=2, 3.0→rank=2, 5.0→rank=4
+ // d2: 2.0→rank=1, 4.0→rank=2
+ // WHERE rk <= 2: keeps d1 rows with rank≤2 (3 rows due to tie), d2 all (2 rows)
+ String[] expectedHeader = new String[] {"time", "device", "value", "rk"};
+ String[] retArray =
+ new String[] {
+ "2021-01-01T09:05:00.000Z,d1,3.0,2,",
+ "2021-01-01T09:09:00.000Z,d1,3.0,2,",
+ "2021-01-01T09:10:00.000Z,d1,1.0,1,",
+ "2021-01-01T09:08:00.000Z,d2,2.0,1,",
+ "2021-01-01T09:15:00.000Z,d2,4.0,2,",
+ };
+ tableResultSetEqualTest(
+ "SELECT * FROM (SELECT *, rank() OVER (PARTITION BY device ORDER BY value) as rk FROM demo) WHERE rk <= 2 ORDER BY device, time",
+ expectedHeader,
+ retArray,
+ DATABASE_NAME);
+ }
+
+ @Test
+ public void testPushDownLimitIntoWindowWithRank() {
+ // TopKRanking(RANK, topN=2) keeps rank≤2 per partition, then LIMIT 2 on final result
+ // d1 rank≤2: 1.0(r=1), 3.0(r=2), 3.0(r=2) → 3 rows sorted by time: 09:05,09:09,09:10
+ // d2 rank≤2: 2.0(r=1), 4.0(r=2) → 2 rows
+ // ORDER BY device, time LIMIT 2 → first 2 from d1
Review Comment:
The test comment claims the query uses `TopKRanking(RANK, topN=2)` / rank<=2 semantics, but the SQL here has no `WHERE rk <= 2` predicate and therefore should not be described as a per-partition top-N optimization. Please update the comment to match the actual query semantics (or adjust the query if the intent was to test rank-filter pushdown).
##########
iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/relational/planner/distribute/TableDistributedPlanGenerator.java:
##########
@@ -1894,12 +1965,24 @@ public List<PlanNode> visitTopKRanking(TopKRankingNode node, PlanContext context
}
List<PlanNode> childrenNodes = node.getChildren().get(0).accept(this, context);
if (canSplitPushDown) {
+ // visitGroup may return GroupNode-wrapped children (sort not eliminated) or bare
+ // DeviceTableScanNode (sort eliminated). Unwrap GroupNode/SortNode when present.
childrenNodes =
childrenNodes.stream()
- .map(child -> child.getChildren().get(0))
+ .map(child -> child instanceof SortNode ? child.getChildren().get(0) : child)
Review Comment:
In `visitTopKRanking`, the code comment says it will unwrap `GroupNode/SortNode`, but the mapping only unwraps `SortNode`. `visitGroup()` actually wraps children in `GroupNode` when sort can't be eliminated, so `tryPushTopKRankingLimitToScan()` will never see `DeviceTableScanNode` in that case and the per-device limit pushdown won't happen. Consider unwrapping `GroupNode` here (and/or updating the comment) so the optimization works when children are GroupNode-wrapped.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: reviews-unsubscribe@iotdb.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org
Re: [PR] Push down TopKRankingNode into TableScanNode [iotdb]
Posted by "codecov[bot] (via GitHub)" <gi...@apache.org>.
codecov[bot] commented on PR #17245:
URL: https://github.com/apache/iotdb/pull/17245#issuecomment-3988501291
## [Codecov](https://app.codecov.io/gh/apache/iotdb/pull/17245?dropdown=coverage&src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) Report
:x: Patch coverage is `77.52193%` with `205 lines` in your changes missing coverage. Please review.
:white_check_mark: Project coverage is 39.80%. Comparing base ([`8782662`](https://app.codecov.io/gh/apache/iotdb/commit/8782662e73710c33159c97cd633b912c83b8bf65?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)) to head ([`d7c4b71`](https://app.codecov.io/gh/apache/iotdb/commit/d7c4b719f150e28c6a1f17a3f2606848107bdd76?dropdown=coverage&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache)).
:warning: Report is 8 commits behind head on master.
| [Files with missing lines](https://app.codecov.io/gh/apache/iotdb/pull/17245?dropdown=coverage&src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | Patch % | Lines |
|---|---|---|
| [...engine/execution/operator/TopNPeerGroupLookup.java](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&filepath=iotdb-core%2Fdatanode%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fiotdb%2Fdb%2Fqueryengine%2Fexecution%2Foperator%2FTopNPeerGroupLookup.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-aW90ZGItY29yZS9kYXRhbm9kZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvaW90ZGIvZGIvcXVlcnllbmdpbmUvZXhlY3V0aW9uL29wZXJhdG9yL1RvcE5QZWVyR3JvdXBMb29rdXAuamF2YQ==) | 57.89% | [64 Missing :warning: ](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [...execution/operator/GroupedTopNRankAccumulator.java](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&filepath=iotdb-core%2Fdatanode%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fiotdb%2Fdb%2Fqueryengine%2Fexecution%2Foperator%2FGroupedTopNRankAccumulator.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-aW90ZGItY29yZS9kYXRhbm9kZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvaW90ZGIvZGIvcXVlcnllbmdpbmUvZXhlY3V0aW9uL29wZXJhdG9yL0dyb3VwZWRUb3BOUmFua0FjY3VtdWxhdG9yLmphdmE=) | 88.17% | [37 Missing :warning: ](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [...erator/SimpleTsBlockWithPositionEqualsAndHash.java](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&filepath=iotdb-core%2Fdatanode%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fiotdb%2Fdb%2Fqueryengine%2Fexecution%2Foperator%2FSimpleTsBlockWithPositionEqualsAndHash.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-aW90ZGItY29yZS9kYXRhbm9kZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvaW90ZGIvZGIvcXVlcnllbmdpbmUvZXhlY3V0aW9uL29wZXJhdG9yL1NpbXBsZVRzQmxvY2tXaXRoUG9zaXRpb25FcXVhbHNBbmRIYXNoLmphdmE=) | 60.00% | [18 Missing :warning: ](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [...rule/PushPredicateThroughProjectIntoRowNumber.java](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&filepath=iotdb-core%2Fdatanode%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fiotdb%2Fdb%2Fqueryengine%2Fplan%2Frelational%2Fplanner%2Fiterative%2Frule%2FPushPredicateThroughProjectIntoRowNumber.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-aW90ZGItY29yZS9kYXRhbm9kZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvaW90ZGIvZGIvcXVlcnllbmdpbmUvcGxhbi9yZWxhdGlvbmFsL3BsYW5uZXIvaXRlcmF0aXZlL3J1bGUvUHVzaFByZWRpY2F0ZVRocm91Z2hQcm9qZWN0SW50b1Jvd051bWJlci5qYXZh) | 79.10% | [14 Missing :warning: ](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [...eryengine/plan/planner/TableOperatorGenerator.java](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&filepath=iotdb-core%2Fdatanode%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fiotdb%2Fdb%2Fqueryengine%2Fplan%2Fplanner%2FTableOperatorGenerator.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-aW90ZGItY29yZS9kYXRhbm9kZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvaW90ZGIvZGIvcXVlcnllbmdpbmUvcGxhbi9wbGFubmVyL1RhYmxlT3BlcmF0b3JHZW5lcmF0b3IuamF2YQ==) | 0.00% | [12 Missing :warning: ](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [...ational/planner/optimizations/SortElimination.java](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&filepath=iotdb-core%2Fdatanode%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fiotdb%2Fdb%2Fqueryengine%2Fplan%2Frelational%2Fplanner%2Foptimizations%2FSortElimination.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-aW90ZGItY29yZS9kYXRhbm9kZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvaW90ZGIvZGIvcXVlcnllbmdpbmUvcGxhbi9yZWxhdGlvbmFsL3BsYW5uZXIvb3B0aW1pemF0aW9ucy9Tb3J0RWxpbWluYXRpb24uamF2YQ==) | 0.00% | [12 Missing :warning: ](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [...ve/rule/PushPredicateThroughProjectIntoWindow.java](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&filepath=iotdb-core%2Fdatanode%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fiotdb%2Fdb%2Fqueryengine%2Fplan%2Frelational%2Fplanner%2Fiterative%2Frule%2FPushPredicateThroughProjectIntoWindow.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-aW90ZGItY29yZS9kYXRhbm9kZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvaW90ZGIvZGIvcXVlcnllbmdpbmUvcGxhbi9yZWxhdGlvbmFsL3BsYW5uZXIvaXRlcmF0aXZlL3J1bGUvUHVzaFByZWRpY2F0ZVRocm91Z2hQcm9qZWN0SW50b1dpbmRvdy5qYXZh) | 84.05% | [11 Missing :warning: ](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [...ine/execution/operator/GroupedTopNRankBuilder.java](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&filepath=iotdb-core%2Fdatanode%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fiotdb%2Fdb%2Fqueryengine%2Fexecution%2Foperator%2FGroupedTopNRankBuilder.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-aW90ZGItY29yZS9kYXRhbm9kZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvaW90ZGIvZGIvcXVlcnllbmdpbmUvZXhlY3V0aW9uL29wZXJhdG9yL0dyb3VwZWRUb3BOUmFua0J1aWxkZXIuamF2YQ==) | 90.62% | [9 Missing :warning: ](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [...lanner/iterative/rule/PushFilterIntoRowNumber.java](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&filepath=iotdb-core%2Fdatanode%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fiotdb%2Fdb%2Fqueryengine%2Fplan%2Frelational%2Fplanner%2Fiterative%2Frule%2FPushFilterIntoRowNumber.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-aW90ZGItY29yZS9kYXRhbm9kZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvaW90ZGIvZGIvcXVlcnllbmdpbmUvcGxhbi9yZWxhdGlvbmFsL3BsYW5uZXIvaXRlcmF0aXZlL3J1bGUvUHVzaEZpbHRlckludG9Sb3dOdW1iZXIuamF2YQ==) | 81.81% | [8 Missing :warning: ](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| [.../plan/relational/planner/node/TopKRankingNode.java](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&filepath=iotdb-core%2Fdatanode%2Fsrc%2Fmain%2Fjava%2Forg%2Fapache%2Fiotdb%2Fdb%2Fqueryengine%2Fplan%2Frelational%2Fplanner%2Fnode%2FTopKRankingNode.java&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache#diff-aW90ZGItY29yZS9kYXRhbm9kZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvaW90ZGIvZGIvcXVlcnllbmdpbmUvcGxhbi9yZWxhdGlvbmFsL3BsYW5uZXIvbm9kZS9Ub3BLUmFua2luZ05vZGUuamF2YQ==) | 60.00% | [8 Missing :warning: ](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) |
| ... and [3 more](https://app.codecov.io/gh/apache/iotdb/pull/17245?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache) | |
<details><summary>Additional details and impacted files</summary>
```diff
@@ Coverage Diff @@
## master #17245 +/- ##
============================================
+ Coverage 39.70% 39.80% +0.09%
Complexity 282 282
============================================
Files 5101 5111 +10
Lines 341925 342881 +956
Branches 43527 43700 +173
============================================
+ Hits 135773 136488 +715
- Misses 206152 206393 +241
```
</details>
[:umbrella: View full report in Codecov by Sentry](https://app.codecov.io/gh/apache/iotdb/pull/17245?dropdown=coverage&src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache).
:loudspeaker: Have feedback on the report? [Share it here](https://about.codecov.io/codecov-pr-comment-feedback/?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=apache).
<details><summary> :rocket: New features to boost your workflow: </summary>
- :snowflake: [Test Analytics](https://docs.codecov.com/docs/test-analytics): Detect flaky tests, report on failures, and find test suite problems.
</details>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: reviews-unsubscribe@iotdb.apache.org
For queries about this service, please contact Infrastructure at:
users@infra.apache.org