This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 8bb299e2498 Left rotate time column to the end of input columns in UDAF
8bb299e2498 is described below

commit 8bb299e2498d4124cfa590f2b4228568ff4b46ba
Author: Zhihao Shen <[email protected]>
AuthorDate: Fri Mar 22 14:12:03 2024 +0800

    Left rotate time column to the end of input columns in UDAF
---
 .../src/main/java/org/apache/iotdb/udf/UDAFExample.java  | 16 ++++++++--------
 .../org/apache/iotdb/db/query/udf/example/UDAFAvg.java   | 16 ++++++++--------
 .../org/apache/iotdb/db/query/udf/example/UDAFCount.java |  2 +-
 .../org/apache/iotdb/db/query/udf/example/UDAFSum.java   | 16 ++++++++--------
 .../src/main/java/org/apache/iotdb/udf/api/UDAF.java     |  2 +-
 .../execution/aggregation/UDAFAccumulator.java           |  8 ++++++++
 6 files changed, 34 insertions(+), 26 deletions(-)

diff --git a/example/udf/src/main/java/org/apache/iotdb/udf/UDAFExample.java 
b/example/udf/src/main/java/org/apache/iotdb/udf/UDAFExample.java
index a19b7780eda..5d7a95dd8a9 100644
--- a/example/udf/src/main/java/org/apache/iotdb/udf/UDAFExample.java
+++ b/example/udf/src/main/java/org/apache/iotdb/udf/UDAFExample.java
@@ -150,9 +150,9 @@ public class UDAFExample implements UDAF {
       if (bitMap != null && !bitMap.isMarked(i)) {
         continue;
       }
-      if (!columns[1].isNull(i)) {
+      if (!columns[0].isNull(i)) {
         state.count++;
-        state.sum += columns[1].getInt(i);
+        state.sum += columns[0].getInt(i);
       }
     }
   }
@@ -163,9 +163,9 @@ public class UDAFExample implements UDAF {
       if (bitMap != null && !bitMap.isMarked(i)) {
         continue;
       }
-      if (!columns[1].isNull(i)) {
+      if (!columns[0].isNull(i)) {
         avgState.count++;
-        avgState.sum += columns[1].getLong(i);
+        avgState.sum += columns[0].getLong(i);
       }
     }
   }
@@ -176,9 +176,9 @@ public class UDAFExample implements UDAF {
       if (bitMap != null && !bitMap.isMarked(i)) {
         continue;
       }
-      if (!columns[1].isNull(i)) {
+      if (!columns[0].isNull(i)) {
         avgState.count++;
-        avgState.sum += columns[1].getFloat(i);
+        avgState.sum += columns[0].getFloat(i);
       }
     }
   }
@@ -189,9 +189,9 @@ public class UDAFExample implements UDAF {
       if (bitMap != null && !bitMap.isMarked(i)) {
         continue;
       }
-      if (!columns[1].isNull(i)) {
+      if (!columns[0].isNull(i)) {
         avgState.count++;
-        avgState.sum += columns[1].getDouble(i);
+        avgState.sum += columns[0].getDouble(i);
       }
     }
   }
diff --git 
a/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFAvg.java
 
b/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFAvg.java
index d0a53f4104e..52a80c553f2 100644
--- 
a/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFAvg.java
+++ 
b/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFAvg.java
@@ -142,9 +142,9 @@ public class UDAFAvg implements UDAF {
       if (bitMap != null && !bitMap.isMarked(i)) {
         continue;
       }
-      if (!columns[1].isNull(i)) {
+      if (!columns[0].isNull(i)) {
         state.count++;
-        state.sum += columns[1].getInt(i);
+        state.sum += columns[0].getInt(i);
       }
     }
   }
@@ -155,9 +155,9 @@ public class UDAFAvg implements UDAF {
       if (bitMap != null && !bitMap.isMarked(i)) {
         continue;
       }
-      if (!columns[1].isNull(i)) {
+      if (!columns[0].isNull(i)) {
         avgState.count++;
-        avgState.sum += columns[1].getLong(i);
+        avgState.sum += columns[0].getLong(i);
       }
     }
   }
@@ -168,9 +168,9 @@ public class UDAFAvg implements UDAF {
       if (bitMap != null && !bitMap.isMarked(i)) {
         continue;
       }
-      if (!columns[1].isNull(i)) {
+      if (!columns[0].isNull(i)) {
         avgState.count++;
-        avgState.sum += columns[1].getFloat(i);
+        avgState.sum += columns[0].getFloat(i);
       }
     }
   }
@@ -181,9 +181,9 @@ public class UDAFAvg implements UDAF {
       if (bitMap != null && !bitMap.isMarked(i)) {
         continue;
       }
-      if (!columns[1].isNull(i)) {
+      if (!columns[0].isNull(i)) {
         avgState.count++;
-        avgState.sum += columns[1].getDouble(i);
+        avgState.sum += columns[0].getDouble(i);
       }
     }
   }
diff --git 
a/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFCount.java
 
b/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFCount.java
index 4a0a9d492c7..bddd6dab9ba 100644
--- 
a/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFCount.java
+++ 
b/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFCount.java
@@ -82,7 +82,7 @@ public class UDAFCount implements UDAF {
       if (bitMap != null && !bitMap.isMarked(i)) {
         continue;
       }
-      if (!column[1].isNull(i)) {
+      if (!column[0].isNull(i)) {
         countState.count++;
       }
     }
diff --git 
a/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFSum.java
 
b/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFSum.java
index 2c9a3761173..8b86ceff844 100644
--- 
a/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFSum.java
+++ 
b/integration-test/src/main/java/org/apache/iotdb/db/query/udf/example/UDAFSum.java
@@ -141,9 +141,9 @@ public class UDAFSum implements UDAF {
       if (bitMap != null && !bitMap.isMarked(i)) {
         continue;
       }
-      if (!columns[1].isNull(i)) {
+      if (!columns[0].isNull(i)) {
         state.initResult = true;
-        state.sum += columns[1].getInt(i);
+        state.sum += columns[0].getInt(i);
       }
     }
   }
@@ -154,9 +154,9 @@ public class UDAFSum implements UDAF {
       if (bitMap != null && !bitMap.isMarked(i)) {
         continue;
       }
-      if (!columns[1].isNull(i)) {
+      if (!columns[0].isNull(i)) {
         state.initResult = true;
-        state.sum += columns[1].getLong(i);
+        state.sum += columns[0].getLong(i);
       }
     }
   }
@@ -167,9 +167,9 @@ public class UDAFSum implements UDAF {
       if (bitMap != null && !bitMap.isMarked(i)) {
         continue;
       }
-      if (!columns[1].isNull(i)) {
+      if (!columns[0].isNull(i)) {
         state.initResult = true;
-        state.sum += columns[1].getFloat(i);
+        state.sum += columns[0].getFloat(i);
       }
     }
   }
@@ -180,9 +180,9 @@ public class UDAFSum implements UDAF {
       if (bitMap != null && !bitMap.isMarked(i)) {
         continue;
       }
-      if (!columns[1].isNull(i)) {
+      if (!columns[0].isNull(i)) {
         state.initResult = true;
-        state.sum += columns[1].getDouble(i);
+        state.sum += columns[0].getDouble(i);
       }
     }
   }
diff --git a/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/UDAF.java 
b/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/UDAF.java
index 499c89ae2f6..4e8869b180b 100644
--- a/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/UDAF.java
+++ b/iotdb-api/udf-api/src/main/java/org/apache/iotdb/udf/api/UDAF.java
@@ -36,7 +36,7 @@ public interface UDAF extends UDF {
    * values
    *
    * @param state state to be updated
-   * @param columns input columns from IoTDB TsBlock, column[0] is always the 
time column, the
+   * @param columns input columns from IoTDB TsBlock, time column is always 
the last column, the
    *     remaining columns are their parameter value columns
    * @param bitMap define some filtered position in columns
    */
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/UDAFAccumulator.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/UDAFAccumulator.java
index 33b99e05947..3ba49cd83a4 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/UDAFAccumulator.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/UDAFAccumulator.java
@@ -117,6 +117,14 @@ public class UDAFAccumulator implements Accumulator {
 
   @Override
   public void addInput(Column[] columns, BitMap bitMap) {
+    // To be consistent with UDTF
+    // Left rotate the first time column to the end of input columns
+    Column timeColumn = columns[0];
+    for (int i = 0; i < columns.length - 1; i++) {
+      columns[i] = columns[i + 1];
+    }
+    columns[columns.length - 1] = timeColumn;
+
     udaf.addInput(state, columns, bitMap);
   }
 

Reply via email to