You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ja...@apache.org on 2024/01/19 14:32:20 UTC
(iotdb) branch master updated: Change partial aggregation symbols for variance and standard deviation aggregators
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 f94f99a4828 Change partial aggregation symbols for variance and standard deviation aggregators
f94f99a4828 is described below
commit f94f99a48281519ddf156ba67cd1825d1491557c
Author: Zhihao Shen <zh...@qq.com>
AuthorDate: Fri Jan 19 22:32:13 2024 +0800
Change partial aggregation symbols for variance and standard deviation aggregators
---
.../execution/operator/AggregationUtil.java | 6 +++++
.../plan/planner/LogicalPlanBuilder.java | 19 +++++++--------
.../plan/parameter/AggregationDescriptor.java | 14 ++++++-----
.../org/apache/iotdb/db/utils/SchemaUtils.java | 27 ++++++++++++----------
4 files changed, 37 insertions(+), 29 deletions(-)
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/AggregationUtil.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/AggregationUtil.java
index 4c8debb1da7..0f2c0075c62 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/AggregationUtil.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/AggregationUtil.java
@@ -56,6 +56,8 @@ public class AggregationUtil {
private static final int INVALID_END_TIME = -1;
+ private static final String PARTIAL_SUFFIX = "_partial";
+
private AggregationUtil() {
// Forbidding instantiation
}
@@ -254,4 +256,8 @@ public class AggregationUtil {
throw new UnsupportedOperationException("Unknown data type " + tsDataType);
}
}
+
+ public static String addPartialSuffix(String aggregationName) {
+ return aggregationName + PARTIAL_SUFFIX;
+ }
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanBuilder.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanBuilder.java
index 038149b2b9a..15fb330bab2 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanBuilder.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/LogicalPlanBuilder.java
@@ -19,7 +19,6 @@
package org.apache.iotdb.db.queryengine.plan.planner;
-import org.apache.iotdb.common.rpc.thrift.TAggregationType;
import org.apache.iotdb.common.rpc.thrift.TDataNodeLocation;
import org.apache.iotdb.common.rpc.thrift.TSchemaNode;
import org.apache.iotdb.commons.exception.IllegalPathException;
@@ -698,29 +697,27 @@ public class LogicalPlanBuilder {
public static void updateTypeProviderByPartialAggregation(
AggregationDescriptor aggregationDescriptor, TypeProvider typeProvider) {
- List<TAggregationType> splitAggregations =
+ List<String> partialAggregationsNames =
SchemaUtils.splitPartialAggregation(aggregationDescriptor.getAggregationType());
String inputExpressionStr =
aggregationDescriptor.getInputExpressions().get(0).getExpressionString();
- for (TAggregationType aggregation : splitAggregations) {
- String functionName = aggregation.toString().toLowerCase();
- TSDataType aggregationType = SchemaUtils.getAggregationType(functionName);
+ for (String partialAggregationName : partialAggregationsNames) {
+ TSDataType aggregationType = SchemaUtils.getAggregationType(partialAggregationName);
typeProvider.setType(
- String.format("%s(%s)", functionName, inputExpressionStr),
+ String.format("%s(%s)", partialAggregationName, inputExpressionStr),
aggregationType == null ? typeProvider.getType(inputExpressionStr) : aggregationType);
}
}
public static void updateTypeProviderByPartialAggregation(
CrossSeriesAggregationDescriptor aggregationDescriptor, TypeProvider typeProvider) {
- List<TAggregationType> splitAggregations =
+ List<String> partialAggregationsNames =
SchemaUtils.splitPartialAggregation(aggregationDescriptor.getAggregationType());
PartialPath path = ((TimeSeriesOperand) aggregationDescriptor.getOutputExpression()).getPath();
- for (TAggregationType aggregationType : splitAggregations) {
- String functionName = aggregationType.toString().toLowerCase();
+ for (String partialAggregationName : partialAggregationsNames) {
typeProvider.setType(
- String.format("%s(%s)", functionName, path.getFullPath()),
- SchemaUtils.getSeriesTypeByPath(path, functionName));
+ String.format("%s(%s)", partialAggregationName, path.getFullPath()),
+ SchemaUtils.getSeriesTypeByPath(path, partialAggregationName));
}
}
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/AggregationDescriptor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/AggregationDescriptor.java
index 190d3d3767a..3b32baef3fa 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/AggregationDescriptor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/plan/planner/plan/parameter/AggregationDescriptor.java
@@ -35,6 +35,8 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
+import static org.apache.iotdb.db.queryengine.execution.operator.AggregationUtil.addPartialSuffix;
+
public class AggregationDescriptor {
// aggregation function type
@@ -146,22 +148,22 @@ public class AggregationDescriptor {
outputAggregationNames.add(SqlConstant.MIN_TIME);
break;
case STDDEV:
- outputAggregationNames.add(SqlConstant.STDDEV);
+ outputAggregationNames.add(addPartialSuffix(SqlConstant.STDDEV));
break;
case STDDEV_POP:
- outputAggregationNames.add(SqlConstant.STDDEV_POP);
+ outputAggregationNames.add(addPartialSuffix(SqlConstant.STDDEV_POP));
break;
case STDDEV_SAMP:
- outputAggregationNames.add(SqlConstant.STDDEV_SAMP);
+ outputAggregationNames.add(addPartialSuffix(SqlConstant.STDDEV_SAMP));
break;
case VARIANCE:
- outputAggregationNames.add(SqlConstant.VARIANCE);
+ outputAggregationNames.add(addPartialSuffix(SqlConstant.VARIANCE));
break;
case VAR_POP:
- outputAggregationNames.add(SqlConstant.VAR_POP);
+ outputAggregationNames.add(addPartialSuffix(SqlConstant.VAR_POP));
break;
case VAR_SAMP:
- outputAggregationNames.add(SqlConstant.VAR_SAMP);
+ outputAggregationNames.add(addPartialSuffix(SqlConstant.VAR_SAMP));
break;
default:
outputAggregationNames.add(aggregationFuncName);
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java
index 21a8e1070b3..ddddec125d1 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/utils/SchemaUtils.java
@@ -34,6 +34,8 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import static org.apache.iotdb.db.queryengine.execution.operator.AggregationUtil.addPartialSuffix;
+
public class SchemaUtils {
private SchemaUtils() {}
@@ -136,8 +138,9 @@ public class SchemaUtils {
case SqlConstant.MIN_VALUE:
case SqlConstant.MAX_VALUE:
case SqlConstant.MODE:
- default:
return null;
+ default:
+ return TSDataType.TEXT;
}
}
@@ -184,28 +187,28 @@ public class SchemaUtils {
}
}
- public static List<TAggregationType> splitPartialAggregation(TAggregationType aggregationType) {
+ public static List<String> splitPartialAggregation(TAggregationType aggregationType) {
switch (aggregationType) {
case FIRST_VALUE:
- return Collections.singletonList(TAggregationType.MIN_TIME);
+ return Collections.singletonList(SqlConstant.MIN_TIME);
case LAST_VALUE:
- return Collections.singletonList(TAggregationType.MAX_TIME);
+ return Collections.singletonList(SqlConstant.MAX_TIME);
case STDDEV:
- return Collections.singletonList(TAggregationType.STDDEV);
+ return Collections.singletonList(addPartialSuffix(SqlConstant.STDDEV));
case STDDEV_POP:
- return Collections.singletonList(TAggregationType.STDDEV_POP);
+ return Collections.singletonList(addPartialSuffix(SqlConstant.STDDEV_POP));
case STDDEV_SAMP:
- return Collections.singletonList(TAggregationType.STDDEV_SAMP);
+ return Collections.singletonList(addPartialSuffix(SqlConstant.STDDEV_SAMP));
case VARIANCE:
- return Collections.singletonList(TAggregationType.VARIANCE);
+ return Collections.singletonList(addPartialSuffix(SqlConstant.VARIANCE));
case VAR_POP:
- return Collections.singletonList(TAggregationType.VAR_POP);
+ return Collections.singletonList(addPartialSuffix(SqlConstant.VAR_POP));
case VAR_SAMP:
- return Collections.singletonList(TAggregationType.VAR_SAMP);
+ return Collections.singletonList(addPartialSuffix(SqlConstant.VAR_SAMP));
case AVG:
- return Arrays.asList(TAggregationType.COUNT, TAggregationType.SUM);
+ return Arrays.asList(SqlConstant.COUNT, SqlConstant.SUM);
case TIME_DURATION:
- return Arrays.asList(TAggregationType.MAX_TIME, TAggregationType.MIN_TIME);
+ return Arrays.asList(SqlConstant.MAX_TIME, SqlConstant.MIN_TIME);
case SUM:
case MIN_VALUE:
case MAX_VALUE: