This is an automated email from the ASF dual-hosted git repository. xiangweiwei pushed a commit to branch accelerateCount in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit cf31069c39b1206c6728fc863783e29b693d1c0c Author: Alima777 <[email protected]> AuthorDate: Tue Jun 21 22:19:28 2022 +0800 accelerate countAccummulator --- .../iotdb/db/mpp/aggregation/CountAccumulator.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/CountAccumulator.java b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/CountAccumulator.java index 7d83d97520..91054a7362 100644 --- a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/CountAccumulator.java +++ b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/CountAccumulator.java @@ -38,13 +38,18 @@ public class CountAccumulator implements Accumulator { @Override public void addInput(Column[] column, TimeRange timeRange) { TimeColumn timeColumn = (TimeColumn) column[0]; - for (int i = 0; i < timeColumn.getPositionCount(); i++) { - long curTime = timeColumn.getLong(i); - if (curTime > timeRange.getMax() || curTime < timeRange.getMin()) { - break; - } - if (!column[1].isNull(i)) { - countValue++; + Column valueColumn = column[1]; + if (!valueColumn.mayHaveNull() && timeRange.contains(timeRange.getMin(), timeRange.getMax())) { + countValue += timeColumn.getPositionCount(); + } else { + for (int i = 0; i < timeColumn.getPositionCount(); i++) { + long curTime = timeColumn.getLong(i); + if (curTime > timeRange.getMax() || curTime < timeRange.getMin()) { + break; + } + if (!valueColumn.isNull(i)) { + countValue++; + } } } }
