This is an automated email from the ASF dual-hosted git repository. caogaofei pushed a commit to branch beyyes/add_table_model_agg_metrics in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit d95be6a500e287c6d8c2362a7b80fadd7eec6e33 Author: Beyyes <[email protected]> AuthorDate: Mon Feb 17 10:34:04 2025 +0800 Add query metrics AGGREGATION_FROM_RAW_DATA and AGGREGATION_FROM_STATISTICS for table model --- .../relational/aggregation/TableAggregator.java | 49 +++++++++++++++------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/TableAggregator.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/TableAggregator.java index ea4095e418e..fbbc7083127 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/TableAggregator.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/TableAggregator.java @@ -34,7 +34,10 @@ import java.util.OptionalInt; import static com.google.common.base.Preconditions.checkArgument; import static java.util.Objects.requireNonNull; +import static org.apache.iotdb.db.queryengine.execution.aggregation.TreeAggregator.QUERY_EXECUTION_METRICS; import static org.apache.iotdb.db.queryengine.execution.operator.source.relational.TableScanOperator.TIME_COLUMN_TEMPLATE; +import static org.apache.iotdb.db.queryengine.metric.QueryExecutionMetricSet.AGGREGATION_FROM_RAW_DATA; +import static org.apache.iotdb.db.queryengine.metric.QueryExecutionMetricSet.AGGREGATION_FROM_STATISTICS; public class TableAggregator { private final TableAccumulator accumulator; @@ -64,25 +67,33 @@ public class TableAggregator { } public void processBlock(TsBlock block) { - Column[] arguments = block.getColumns(inputChannels); + long startTime = System.nanoTime(); + try { + Column[] arguments = block.getColumns(inputChannels); + + // process count(*) + if (arguments.length == 0) { + arguments = + new Column[] { + new RunLengthEncodedColumn(TIME_COLUMN_TEMPLATE, block.getPositionCount()) + }; + } - // process count(*) - if (arguments.length == 0) { - arguments = - new Column[] {new RunLengthEncodedColumn(TIME_COLUMN_TEMPLATE, block.getPositionCount())}; - } + if (step.isInputRaw()) { + // Use select-all AggregationMask here because filter of Agg-Function is not supported now + AggregationMask mask = AggregationMask.createSelectAll(block.getPositionCount()); - if (step.isInputRaw()) { - // Use select-all AggregationMask here because filter of Agg-Function is not supported now - AggregationMask mask = AggregationMask.createSelectAll(block.getPositionCount()); + if (maskChannel.isPresent()) { + mask.applyMaskBlock(block.getColumn(maskChannel.getAsInt())); + } - if (maskChannel.isPresent()) { - mask.applyMaskBlock(block.getColumn(maskChannel.getAsInt())); + accumulator.addInput(arguments, mask); + } else { + accumulator.addIntermediate(arguments[0]); } - - accumulator.addInput(arguments, mask); - } else { - accumulator.addIntermediate(arguments[0]); + } finally { + QUERY_EXECUTION_METRICS.recordExecutionCost( + AGGREGATION_FROM_RAW_DATA, System.nanoTime() - startTime); } } @@ -95,7 +106,13 @@ public class TableAggregator { } public void processStatistics(Statistics[] statistics) { - accumulator.addStatistics(statistics); + long startTime = System.nanoTime(); + try { + accumulator.addStatistics(statistics); + } finally { + QUERY_EXECUTION_METRICS.recordExecutionCost( + AGGREGATION_FROM_STATISTICS, System.nanoTime() - startTime); + } } public boolean hasFinalResult() {
