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++;
+        }
       }
     }
   }

Reply via email to