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