This is an automated email from the ASF dual-hosted git repository. panxiaolei pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 5f0bb49d46 [Feature](materialized-view) support create mv contain aggstate column (#20812) 5f0bb49d46 is described below commit 5f0bb49d46260873b8aada594d2f833f4267e894 Author: Pxl <pxl...@qq.com> AuthorDate: Wed Jun 21 13:06:52 2023 +0800 [Feature](materialized-view) support create mv contain aggstate column (#20812) support create mv contain aggstate column --- be/src/olap/task/engine_alter_tablet_task.cpp | 9 +- .../aggregate_function_min_max_by.h | 4 + be/src/vec/data_types/data_type_nullable.cpp | 8 +- .../java/org/apache/doris/analysis/ColumnDef.java | 3 +- .../doris/analysis/CreateMaterializedViewStmt.java | 31 +- .../main/java/org/apache/doris/catalog/Column.java | 31 +- .../main/java/org/apache/doris/catalog/Env.java | 4 + .../java/org/apache/doris/catalog/FunctionSet.java | 1305 +++++--------------- .../doris/catalog/MaterializedIndexMeta.java | 2 +- .../doris/catalog/external/HMSExternalTable.java | 5 +- .../doris/external/jdbc/JdbcMySQLClient.java | 3 +- .../data/mv_p0/agg_state/test_agg_state_max_by.out | 8 + .../test_agg_state_max_by.groovy} | 41 +- .../mv_p0/sum_divede_count/sum_devide_count.groovy | 5 - .../mv/newMv/sum_devide_count.groovy | 5 - 15 files changed, 349 insertions(+), 1115 deletions(-) diff --git a/be/src/olap/task/engine_alter_tablet_task.cpp b/be/src/olap/task/engine_alter_tablet_task.cpp index f2df074494..30c3e95809 100644 --- a/be/src/olap/task/engine_alter_tablet_task.cpp +++ b/be/src/olap/task/engine_alter_tablet_task.cpp @@ -25,6 +25,7 @@ #include <string> #include "common/config.h" +#include "common/exception.h" #include "olap/schema_change.h" #include "runtime/memory/mem_tracker_limiter.h" #include "runtime/thread_context.h" @@ -45,8 +46,12 @@ EngineAlterTabletTask::EngineAlterTabletTask(const TAlterTabletReqV2& request) Status EngineAlterTabletTask::execute() { SCOPED_ATTACH_TASK(_mem_tracker); DorisMetrics::instance()->create_rollup_requests_total->increment(1); - - Status res = SchemaChangeHandler::process_alter_tablet_v2(_alter_tablet_req); + Status res = Status::OK(); + try { + res = SchemaChangeHandler::process_alter_tablet_v2(_alter_tablet_req); + } catch (const Exception& e) { + res = e.to_status(); + } if (!res.ok()) { DorisMetrics::instance()->create_rollup_requests_failed->increment(1); return res; diff --git a/be/src/vec/aggregate_functions/aggregate_function_min_max_by.h b/be/src/vec/aggregate_functions/aggregate_function_min_max_by.h index 6fa82fa2a1..ca21db0c11 100644 --- a/be/src/vec/aggregate_functions/aggregate_function_min_max_by.h +++ b/be/src/vec/aggregate_functions/aggregate_function_min_max_by.h @@ -188,6 +188,10 @@ template <template <typename> class AggregateFunctionTemplate, AggregateFunctionPtr create_aggregate_function_min_max_by(const String& name, const DataTypes& argument_types, const bool result_is_nullable) { + if (argument_types.size() != 2) { + return nullptr; + } + WhichDataType which(remove_nullable(argument_types[0])); #define DISPATCH(TYPE) \ if (which.idx == TypeIndex::TYPE) \ diff --git a/be/src/vec/data_types/data_type_nullable.cpp b/be/src/vec/data_types/data_type_nullable.cpp index 40b8b9661f..1a1e302cad 100644 --- a/be/src/vec/data_types/data_type_nullable.cpp +++ b/be/src/vec/data_types/data_type_nullable.cpp @@ -165,7 +165,9 @@ bool DataTypeNullable::equals(const IDataType& rhs) const { } DataTypePtr make_nullable(const DataTypePtr& type) { - if (type->is_nullable()) return type; + if (type->is_nullable()) { + return type; + } return std::make_shared<DataTypeNullable>(type); } @@ -178,7 +180,9 @@ DataTypes make_nullable(const DataTypes& types) { } DataTypePtr remove_nullable(const DataTypePtr& type) { - if (type->is_nullable()) return static_cast<const DataTypeNullable&>(*type).get_nested_type(); + if (type->is_nullable()) { + return assert_cast<const DataTypeNullable*>(type.get())->get_nested_type(); + } return type; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java index 8a6bff11f0..9833236a89 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ColumnDef.java @@ -518,8 +518,7 @@ public class ColumnDef { } return new Column(name, type, isKey, aggregateType, isAllowNull, isAutoInc, defaultValue.value, comment, - visible, defaultValue.defaultValueExprDef, Column.COLUMN_UNIQUE_ID_INIT_VALUE, defaultValue.getValue(), - genericAggregationName, typeList, nullableList); + visible, defaultValue.defaultValueExprDef, Column.COLUMN_UNIQUE_ID_INIT_VALUE, defaultValue.getValue()); } @Override diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java index f1e6d860af..49521172bc 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CreateMaterializedViewStmt.java @@ -19,6 +19,8 @@ package org.apache.doris.analysis; import org.apache.doris.catalog.AggregateType; import org.apache.doris.catalog.Column; +import org.apache.doris.catalog.Env; +import org.apache.doris.catalog.Function; import org.apache.doris.catalog.FunctionSet; import org.apache.doris.catalog.KeysType; import org.apache.doris.catalog.MaterializedIndexMeta; @@ -224,20 +226,6 @@ public class CreateMaterializedViewStmt extends DdlStmt { if (selectListItemExpr instanceof FunctionCallExpr && ((FunctionCallExpr) selectListItemExpr).isAggregateFunction()) { FunctionCallExpr functionCallExpr = (FunctionCallExpr) selectListItemExpr; - String functionName = functionCallExpr.getFnName().getFunction(); - // current version not support count(distinct) function in creating materialized - // view - if (!isReplay) { - MVColumnPattern mvColumnPattern = FN_NAME_TO_PATTERN.get(functionName.toLowerCase()); - if (mvColumnPattern == null) { - throw new AnalysisException( - "Materialized view does not support this function:" + functionCallExpr.toSqlImpl()); - } - if (!mvColumnPattern.match(functionCallExpr)) { - throw new AnalysisException( - "The function " + functionName + " must match pattern:" + mvColumnPattern.toString()); - } - } if (beginIndexOfAggregation == -1) { beginIndexOfAggregation = i; @@ -415,7 +403,6 @@ public class CreateMaterializedViewStmt extends DdlStmt { throws AnalysisException { String functionName = functionCallExpr.getFnName().getFunction(); List<Expr> childs = functionCallExpr.getChildren(); - Preconditions.checkArgument(childs.size() == 1); Expr defineExpr = childs.get(0); Type baseType = defineExpr.getType(); AggregateType mvAggregateType = null; @@ -465,7 +452,9 @@ public class CreateMaterializedViewStmt extends DdlStmt { type = Type.BIGINT; break; default: - throw new AnalysisException("Unsupported function:" + functionName); + mvAggregateType = AggregateType.GENERIC_AGGREGATION; + defineExpr = Function.convertToStateCombinator(functionCallExpr); + type = defineExpr.type; } if (mvAggregateType == null) { mvAggregateType = AggregateType.valueOf(functionName.toUpperCase()); @@ -478,8 +467,8 @@ public class CreateMaterializedViewStmt extends DdlStmt { } else if (defineExpr instanceof CastExpr && defineExpr.getChild(0) instanceof SlotRef) { slot = (SlotRef) defineExpr.getChild(0); } else { - throw new AnalysisException("Aggregate function require single slot argument, invalid argument is: " - + defineExpr.toSql()); + throw new AnalysisException( + "Aggregate function require single slot argument, invalid argument is: " + defineExpr.toSql()); } AggregateType input = slot.getColumn().getAggregationType(); @@ -512,6 +501,12 @@ public class CreateMaterializedViewStmt extends DdlStmt { name = item.getName(); break; default: + if (Env.getCurrentEnv() + .isAggFunctionName(functionCallExpr.getFnName().getFunction().toLowerCase())) { + MVColumnItem genericItem = buildMVColumnItem(analyzer, functionCallExpr); + expr = genericItem.getDefineExpr(); + name = genericItem.getName(); + } break; } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java index 0216516f69..e013b113a2 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Column.java @@ -69,8 +69,8 @@ public class Column implements Writable, GsonPostProcessable { private static final String COLUMN_MAP_KEY = "key"; private static final String COLUMN_MAP_VALUE = "value"; - public static final Column UNSUPPORTED_COLUMN = new Column("unknown", - Type.UNSUPPORTED, true, null, true, false, null, "invalid", true, null, -1, null, null, null, null); + public static final Column UNSUPPORTED_COLUMN = new Column("unknown", Type.UNSUPPORTED, true, null, true, false, + null, "invalid", true, null, -1, null); @SerializedName(value = "name") private String name; @@ -170,26 +170,24 @@ public class Column implements Writable, GsonPostProcessable { public Column(String name, Type type, boolean isKey, AggregateType aggregateType, boolean isAllowNull, String defaultValue, String comment) { this(name, type, isKey, aggregateType, isAllowNull, false, defaultValue, comment, true, null, - COLUMN_UNIQUE_ID_INIT_VALUE, defaultValue, null, null, null); + COLUMN_UNIQUE_ID_INIT_VALUE, defaultValue); } public Column(String name, Type type, boolean isKey, AggregateType aggregateType, boolean isAllowNull, String comment, boolean visible, int colUniqueId) { - this(name, type, isKey, aggregateType, isAllowNull, false, null, comment, visible, null, - colUniqueId, null, null, null, null); + this(name, type, isKey, aggregateType, isAllowNull, false, null, comment, visible, null, colUniqueId, null); } public Column(String name, Type type, boolean isKey, AggregateType aggregateType, boolean isAllowNull, String defaultValue, String comment, boolean visible, DefaultValueExprDef defaultValueExprDef, int colUniqueId, String realDefaultValue) { this(name, type, isKey, aggregateType, isAllowNull, false, defaultValue, comment, visible, defaultValueExprDef, - colUniqueId, realDefaultValue, null, null, null); + colUniqueId, realDefaultValue); } public Column(String name, Type type, boolean isKey, AggregateType aggregateType, boolean isAllowNull, boolean isAutoInc, String defaultValue, String comment, boolean visible, - DefaultValueExprDef defaultValueExprDef, int colUniqueId, String realDefaultValue, - String genericAggregationName, List<Type> genericAggregationArguments, List<Boolean> nullableList) { + DefaultValueExprDef defaultValueExprDef, int colUniqueId, String realDefaultValue) { this.name = name; if (this.name == null) { this.name = ""; @@ -215,13 +213,15 @@ public class Column implements Writable, GsonPostProcessable { createChildrenColumn(this.type, this); this.uniqueId = colUniqueId; - this.genericAggregationName = genericAggregationName; - if (genericAggregationArguments != null) { - for (int i = 0; i < genericAggregationArguments.size(); i++) { - Column c = new Column(COLUMN_AGG_ARGUMENT_CHILDREN, genericAggregationArguments.get(i)); - c.setIsAllowNull(nullableList.get(i)); + if (type.isAggStateType()) { + AggStateType aggState = (AggStateType) type; + for (int i = 0; i < aggState.getSubTypes().size(); i++) { + Column c = new Column(COLUMN_AGG_ARGUMENT_CHILDREN, aggState.getSubTypes().get(i)); + c.setIsAllowNull(aggState.getSubTypeNullables().get(i)); addChildrenColumn(c); } + this.genericAggregationName = aggState.getFunctionName(); + this.aggregationType = AggregateType.GENERIC_AGGREGATION; } } @@ -516,8 +516,9 @@ public class Column implements Writable, GsonPostProcessable { tColumn.setColUniqueId(uniqueId); if (type.isAggStateType()) { - tColumn.setAggregation(genericAggregationName); - tColumn.setResultIsNullable(((AggStateType) type).getResultIsNullable()); + AggStateType aggState = (AggStateType) type; + tColumn.setAggregation(aggState.getFunctionName()); + tColumn.setResultIsNullable(aggState.getResultIsNullable()); for (Column column : children) { tColumn.addToChildrenColumn(column.toThrift()); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java index ae8a07e79b..b6ffd0985d 100755 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java @@ -4743,6 +4743,10 @@ public class Env { return functionSet.isNullResultWithOneNullParamFunctions(funcName); } + public boolean isAggFunctionName(String name) { + return functionSet.isAggFunctionName(name); + } + @Deprecated public long loadCluster(DataInputStream dis, long checksum) throws IOException, DdlException { return getInternalCatalog().loadCluster(dis, checksum); diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionSet.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionSet.java index 6abff46b6f..aa5bf93e8e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionSet.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionSet.java @@ -40,6 +40,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -66,6 +67,8 @@ public class FunctionSet<T> { // Including now(), curdate(), etc.. private ImmutableSet<String> nondeterministicFunctions; + private HashSet<String> aggFunctionNames = new HashSet<>(); + private boolean inited = false; public FunctionSet() { @@ -119,135 +122,6 @@ public class FunctionSet<T> { return nullResultWithOneNullParamFunctions.contains(funcName); } - private static final Map<Type, String> MIN_INIT_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.BOOLEAN, - "8min_initIN9doris_udf10BooleanValEEEvPNS2_15FunctionContextEPT_") - .put(Type.TINYINT, - "8min_initIN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextEPT_") - .put(Type.SMALLINT, - "8min_initIN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextEPT_") - .put(Type.INT, - "8min_initIN9doris_udf6IntValEEEvPNS2_15FunctionContextEPT_") - .put(Type.BIGINT, - "8min_initIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextEPT_") - .put(Type.FLOAT, - "8min_initIN9doris_udf8FloatValEEEvPNS2_15FunctionContextEPT_") - .put(Type.DOUBLE, - "8min_initIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextEPT_") - // .put(Type.CHAR, - // "3minIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.VARCHAR, - "8min_initIN9doris_udf9StringValEEEvPNS2_15FunctionContextEPT_") - .put(Type.STRING, - "8min_initIN9doris_udf9StringValEEEvPNS2_15FunctionContextEPT_") - .put(Type.DATE, - "8min_initIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextEPT_") - .put(Type.DATETIME, - "8min_initIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextEPT_") - .put(Type.MAX_DECIMALV2_TYPE, - "8min_initIN9doris_udf12DecimalV2ValEEEvPNS2_15FunctionContextEPT_") - .put(Type.LARGEINT, - "8min_initIN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextEPT_") - .build(); - - private static final Map<Type, String> MAX_INIT_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.BOOLEAN, - "8max_initIN9doris_udf10BooleanValEEEvPNS2_15FunctionContextEPT_") - .put(Type.TINYINT, - "8max_initIN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextEPT_") - .put(Type.SMALLINT, - "8max_initIN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextEPT_") - .put(Type.INT, - "8max_initIN9doris_udf6IntValEEEvPNS2_15FunctionContextEPT_") - .put(Type.BIGINT, - "8max_initIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextEPT_") - .put(Type.FLOAT, - "8max_initIN9doris_udf8FloatValEEEvPNS2_15FunctionContextEPT_") - .put(Type.DOUBLE, - "8max_initIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextEPT_") - // .put(Type.CHAR, - // "3minIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.VARCHAR, - "8max_initIN9doris_udf9StringValEEEvPNS2_15FunctionContextEPT_") - .put(Type.STRING, - "8max_initIN9doris_udf9StringValEEEvPNS2_15FunctionContextEPT_") - .put(Type.DATE, - "8max_initIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextEPT_") - .put(Type.DATETIME, - "8max_initIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextEPT_") - .put(Type.MAX_DECIMALV2_TYPE, - "8max_initIN9doris_udf12DecimalV2ValEEEvPNS2_15FunctionContextEPT_") - .put(Type.LARGEINT, - "8max_initIN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextEPT_") - .build(); - - private static final Map<Type, String> MIN_UPDATE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.BOOLEAN, - "3minIN9doris_udf10BooleanValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.TINYINT, - "3minIN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.SMALLINT, - "3minIN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.INT, - "3minIN9doris_udf6IntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.BIGINT, - "3minIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.FLOAT, - "3minIN9doris_udf8FloatValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.DOUBLE, - "3minIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextERKT_PS6_") - // .put(Type.CHAR, - // "3minIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.VARCHAR, - "3minIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.STRING, - "3minIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.DATE, - "3minIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.DATETIME, - "3minIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.MAX_DECIMALV2_TYPE, - "3minIN9doris_udf12DecimalV2ValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.LARGEINT, - "3minIN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .build(); - - private static final Map<Type, String> MAX_UPDATE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.BOOLEAN, - "3maxIN9doris_udf10BooleanValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.TINYINT, - "3maxIN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.SMALLINT, - "3maxIN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.INT, - "3maxIN9doris_udf6IntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.BIGINT, - "3maxIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.FLOAT, - "3maxIN9doris_udf8FloatValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.DOUBLE, - "3maxIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextERKT_PS6_") - // .put(Type.CHAR, - // "3maxIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.VARCHAR, - "3maxIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.STRING, - "3maxIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.DATE, - "3maxIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.DATETIME, - "3maxIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.MAX_DECIMALV2_TYPE, - "3maxIN9doris_udf12DecimalV2ValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.LARGEINT, - "3maxIN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .build(); - - private static final Map<Type, Type> MULTI_DISTINCT_SUM_RETURN_TYPE = ImmutableMap.<Type, Type>builder() .put(Type.TINYINT, Type.BIGINT) @@ -263,109 +137,6 @@ public class FunctionSet<T> { .put(Type.DECIMAL128, Type.DECIMAL128) .build(); - private static final Map<Type, String> MULTI_DISTINCT_INIT_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.TINYINT, - "34count_or_sum_distinct_numeric_initIN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.SMALLINT, - "34count_or_sum_distinct_numeric_initIN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.INT, - "34count_or_sum_distinct_numeric_initIN9doris_udf6IntValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.BIGINT, - "34count_or_sum_distinct_numeric_initIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.FLOAT, - "34count_or_sum_distinct_numeric_initIN9doris_udf8FloatValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.DOUBLE, - "34count_or_sum_distinct_numeric_initIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.LARGEINT, - "34count_or_sum_distinct_numeric_initIN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .build(); - - private static final Map<Type, String> MULTI_DISTINCT_UPDATE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.TINYINT, - "36count_or_sum_distinct_numeric_updateIN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextERT_PNS2_9StringValE") - .put(Type.SMALLINT, - "36count_or_sum_distinct_numeric_updateIN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextERT_PNS2_9StringValE") - .put(Type.INT, - "36count_or_sum_distinct_numeric_updateIN9doris_udf6IntValEEEvPNS2_15FunctionContextERT_PNS2_9StringValE") - .put(Type.BIGINT, - "36count_or_sum_distinct_numeric_updateIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextERT_PNS2_9StringValE") - .put(Type.FLOAT, - "36count_or_sum_distinct_numeric_updateIN9doris_udf8FloatValEEEvPNS2_15FunctionContextERT_PNS2_9StringValE") - .put(Type.DOUBLE, - "36count_or_sum_distinct_numeric_updateIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextERT_PNS2_9StringValE") - .put(Type.LARGEINT, - "36count_or_sum_distinct_numeric_updateIN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextERT_PNS2_9StringValE") - .build(); - - private static final Map<Type, String> MULTI_DISTINCT_MERGE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.TINYINT, - "35count_or_sum_distinct_numeric_mergeIN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextERNS2_9StringValEPS6_") - .put(Type.SMALLINT, - "35count_or_sum_distinct_numeric_mergeIN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextERNS2_9StringValEPS6_") - .put(Type.INT, - "35count_or_sum_distinct_numeric_mergeIN9doris_udf6IntValEEEvPNS2_15FunctionContextERNS2_9StringValEPS6_") - .put(Type.BIGINT, - "35count_or_sum_distinct_numeric_mergeIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextERNS2_9StringValEPS6_") - .put(Type.FLOAT, - "35count_or_sum_distinct_numeric_mergeIN9doris_udf8FloatValEEEvPNS2_15FunctionContextERNS2_9StringValEPS6_") - .put(Type.DOUBLE, - "35count_or_sum_distinct_numeric_mergeIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextERNS2_9StringValEPS6_") - .put(Type.LARGEINT, - "35count_or_sum_distinct_numeric_mergeIN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextERNS2_9StringValEPS6_") - .build(); - - private static final Map<Type, String> MULTI_DISTINCT_SERIALIZE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.TINYINT, - "39count_or_sum_distinct_numeric_serializeIN9doris_udf10TinyIntValEEENS2_9StringValEPNS2_15FunctionContextERKS4_") - .put(Type.SMALLINT, - "39count_or_sum_distinct_numeric_serializeIN9doris_udf11SmallIntValEEENS2_9StringValEPNS2_15FunctionContextERKS4_") - .put(Type.INT, - "39count_or_sum_distinct_numeric_serializeIN9doris_udf6IntValEEENS2_9StringValEPNS2_15FunctionContextERKS4_") - .put(Type.BIGINT, - "39count_or_sum_distinct_numeric_serializeIN9doris_udf9BigIntValEEENS2_9StringValEPNS2_15FunctionContextERKS4_") - .put(Type.FLOAT, - "39count_or_sum_distinct_numeric_serializeIN9doris_udf8FloatValEEENS2_9StringValEPNS2_15FunctionContextERKS4_") - .put(Type.DOUBLE, - "39count_or_sum_distinct_numeric_serializeIN9doris_udf9DoubleValEEENS2_9StringValEPNS2_15FunctionContextERKS4_") - .put(Type.LARGEINT, - "39count_or_sum_distinct_numeric_serializeIN9doris_udf11LargeIntValEEENS2_9StringValEPNS2_15FunctionContextERKS4_") - .build(); - - private static final Map<Type, String> MULTI_DISTINCT_COUNT_FINALIZE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.TINYINT, - "38count_or_sum_distinct_numeric_finalizeIN9doris_udf10TinyIntValEEENS2_9BigIntValEPNS2_15FunctionContextERKNS2_9StringValE") - .put(Type.SMALLINT, - "38count_or_sum_distinct_numeric_finalizeIN9doris_udf11SmallIntValEEENS2_9BigIntValEPNS2_15FunctionContextERKNS2_9StringValE") - .put(Type.INT, - "38count_or_sum_distinct_numeric_finalizeIN9doris_udf8FloatValEEENS2_9BigIntValEPNS2_15FunctionContextERKNS2_9StringValE") - .put(Type.BIGINT, - "38count_or_sum_distinct_numeric_finalizeIN9doris_udf9BigIntValEEES3_PNS2_15FunctionContextERKNS2_9StringValE") - .put(Type.FLOAT, - "38count_or_sum_distinct_numeric_finalizeIN9doris_udf8FloatValEEENS2_9BigIntValEPNS2_15FunctionContextERKNS2_9StringValE") - .put(Type.DOUBLE, - "38count_or_sum_distinct_numeric_finalizeIN9doris_udf9DoubleValEEENS2_9BigIntValEPNS2_15FunctionContextERKNS2_9StringValE") - .put(Type.LARGEINT, - "38count_or_sum_distinct_numeric_finalizeIN9doris_udf11LargeIntValEEENS2_9BigIntValEPNS2_15FunctionContextERKNS2_9StringValE") - .build(); - - - private static final Map<Type, String> MULTI_DISTINCT_SUM_FINALIZE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.BIGINT, - "28sum_distinct_bigint_finalizeIN9doris_udf9BigIntValEEES3_PNS2_15FunctionContextERKNS2_9StringValE") - .put(Type.FLOAT, - "28sum_distinct_double_finalizeIN9doris_udf9DoubleValEEES3_PNS2_15FunctionContextERKNS2_9StringValE") - .put(Type.DOUBLE, - "28sum_distinct_double_finalizeIN9doris_udf9DoubleValEEES3_PNS2_15FunctionContextERKNS2_9StringValE") - .put(Type.LARGEINT, - "30sum_distinct_largeint_finalizeIN9doris_udf11LargeIntValEEES3_PNS2_15FunctionContextERKNS2_9StringValE") - .build(); - private static final Map<Type, Type> STDDEV_RETTYPE_SYMBOL = ImmutableMap.<Type, Type>builder() .put(Type.TINYINT, Type.DOUBLE) @@ -380,24 +151,6 @@ public class FunctionSet<T> { .put(Type.DECIMAL128, Type.DECIMAL128) .build(); - private static final Map<Type, String> STDDEV_INIT_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.TINYINT, - "14knuth_var_initEPN9doris_udf15FunctionContextEPNS1_9StringValE") - .put(Type.SMALLINT, - "14knuth_var_initEPN9doris_udf15FunctionContextEPNS1_9StringValE") - .put(Type.INT, - "14knuth_var_initEPN9doris_udf15FunctionContextEPNS1_9StringValE") - .put(Type.BIGINT, - "14knuth_var_initEPN9doris_udf15FunctionContextEPNS1_9StringValE") - .put(Type.FLOAT, - "14knuth_var_initEPN9doris_udf15FunctionContextEPNS1_9StringValE") - .put(Type.DOUBLE, - "14knuth_var_initEPN9doris_udf15FunctionContextEPNS1_9StringValE") - .put(Type.MAX_DECIMALV2_TYPE, - "24decimalv2_knuth_var_initEPN9doris_udf15FunctionContextEPNS1_9StringValE") - .build(); - private static final Map<Type, String> STDDEV_UPDATE_SYMBOL = ImmutableMap.<Type, String>builder() .put(Type.TINYINT, @@ -416,348 +169,12 @@ public class FunctionSet<T> { "16knuth_var_updateEPN9doris_udf15FunctionContextERKNS1_12DecimalV2ValEPNS1_9StringValE") .build(); - private static final Map<Type, String> STDDEV_MERGE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.TINYINT, - "15knuth_var_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_") - .put(Type.SMALLINT, - "15knuth_var_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_") - .put(Type.INT, - "15knuth_var_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_") - .put(Type.BIGINT, - "15knuth_var_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_") - .put(Type.FLOAT, - "15knuth_var_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_") - .put(Type.DOUBLE, - "15knuth_var_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_") - .put(Type.MAX_DECIMALV2_TYPE, - "25decimalv2_knuth_var_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_") - .build(); - - private static final Map<Type, String> STDDEV_FINALIZE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.TINYINT, - "21knuth_stddev_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.SMALLINT, - "21knuth_stddev_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.INT, - "21knuth_stddev_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.BIGINT, - "21knuth_stddev_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.FLOAT, - "21knuth_stddev_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.DOUBLE, - "21knuth_stddev_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.MAX_DECIMALV2_TYPE, - "31decimalv2_knuth_stddev_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .build(); - - private static final Map<Type, String> STDDEV_POP_FINALIZE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.TINYINT, - "25knuth_stddev_pop_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.SMALLINT, - "25knuth_stddev_pop_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.INT, - "25knuth_stddev_pop_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.BIGINT, - "25knuth_stddev_pop_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.FLOAT, - "25knuth_stddev_pop_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.DOUBLE, - "25knuth_stddev_pop_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.MAX_DECIMALV2_TYPE, - "35decimalv2_knuth_stddev_pop_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .build(); - - - private static final Map<Type, String> VAR_FINALIZE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.TINYINT, - "18knuth_var_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.SMALLINT, - "18knuth_var_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.INT, - "18knuth_var_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.BIGINT, - "18knuth_var_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.FLOAT, - "18knuth_var_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.DOUBLE, - "18knuth_var_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.MAX_DECIMALV2_TYPE, - "28decimalv2_knuth_var_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .build(); - - - private static final Map<Type, String> VAR_POP_FINALIZE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.TINYINT, - "22knuth_var_pop_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.SMALLINT, - "22knuth_var_pop_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.INT, - "22knuth_var_pop_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.BIGINT, - "22knuth_var_pop_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.FLOAT, - "22knuth_var_pop_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.DOUBLE, - "22knuth_var_pop_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.MAX_DECIMALV2_TYPE, - "32decimalv2_knuth_var_pop_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .build(); - - public static final String HLL_HASH = "hll_hash"; public static final String HLL_UNION = "hll_union"; public static final String HLL_UNION_AGG = "hll_union_agg"; public static final String HLL_RAW_AGG = "hll_raw_agg"; public static final String HLL_CARDINALITY = "hll_cardinality"; - private static final Map<Type, String> HLL_UPDATE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.BOOLEAN, - "10hll_updateIN9doris_udf10BooleanValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .put(Type.TINYINT, - "10hll_updateIN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .put(Type.SMALLINT, - "10hll_updateIN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .put(Type.INT, - "10hll_updateIN9doris_udf6IntValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .put(Type.BIGINT, - "10hll_updateIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .put(Type.FLOAT, - "10hll_updateIN9doris_udf8FloatValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .put(Type.DOUBLE, - "10hll_updateIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - // .put(Type.CHAR, - // "10hll_updateIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS3_") - .put(Type.VARCHAR, - "10hll_updateIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS3_") - .put(Type.STRING, - "10hll_updateIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS3_") - .put(Type.DATE, - "10hll_updateIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .put(Type.DATETIME, - "10hll_updateIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .put(Type.MAX_DECIMALV2_TYPE, - "10hll_updateIN9doris_udf12DecimalV2ValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .put(Type.LARGEINT, - "10hll_updateIN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .build(); - - private static final Map<Type, String> OFFSET_FN_INIT_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.BOOLEAN, - "14offset_fn_initIN9doris_udf10BooleanValEEEvPNS2_15FunctionContextEPT_") - .put(Type.MAX_DECIMALV2_TYPE, - "14offset_fn_initIN9doris_udf12DecimalV2ValEEEvPNS2_15FunctionContextEPT_") - .put(Type.TINYINT, - "14offset_fn_initIN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextEPT_") - .put(Type.SMALLINT, - "14offset_fn_initIN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextEPT_") - .put(Type.DATE, - "14offset_fn_initIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextEPT_") - .put(Type.DATETIME, - "14offset_fn_initIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextEPT_") - .put(Type.INT, - "14offset_fn_initIN9doris_udf6IntValEEEvPNS2_15FunctionContextEPT_") - .put(Type.FLOAT, - "14offset_fn_initIN9doris_udf8FloatValEEEvPNS2_15FunctionContextEPT_") - .put(Type.BIGINT, - "14offset_fn_initIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextEPT_") - .put(Type.DOUBLE, - "14offset_fn_initIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextEPT_") - // .put(Type.CHAR, - // "14offset_fn_initIN9doris_udf9StringValEEEvPNS2_15FunctionContextEPT_") - .put(Type.VARCHAR, - "14offset_fn_initIN9doris_udf9StringValEEEvPNS2_15FunctionContextEPT_") - .put(Type.STRING, - "14offset_fn_initIN9doris_udf9StringValEEEvPNS2_15FunctionContextEPT_") - .put(Type.LARGEINT, - "14offset_fn_initIN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextEPT_") - - .build(); - - private static final Map<Type, String> OFFSET_FN_UPDATE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.BOOLEAN, - "16offset_fn_updateIN9doris_udf10BooleanValEEEvPNS2_15FunctionContextERKT_RKNS2_9BigIntValES8_PS6_") - .put(Type.MAX_DECIMALV2_TYPE, - "16offset_fn_updateIN9doris_udf12DecimalV2ValEEEvPNS2_15FunctionContextERKT_RKNS2_9BigIntValES8_PS6_") - .put(Type.TINYINT, - "16offset_fn_updateIN9doris_udf10TinyIntValEEEvPNS2_15" - + "FunctionContextERKT_RKNS2_9BigIntValES8_PS6_") - .put(Type.SMALLINT, - "16offset_fn_updateIN9doris_udf11SmallIntValEEEvPNS2_15" - + "FunctionContextERKT_RKNS2_9BigIntValES8_PS6_") - .put(Type.DATE, - "16offset_fn_updateIN9doris_udf11DateTimeValEEEvPNS2_15" - + "FunctionContextERKT_RKNS2_9BigIntValES8_PS6_") - .put(Type.DATETIME, - "16offset_fn_updateIN9doris_udf11DateTimeValEEEvPNS2_15" - + "FunctionContextERKT_RKNS2_9BigIntValES8_PS6_") - .put(Type.INT, - "16offset_fn_updateIN9doris_udf6IntValEEEvPNS2_15FunctionContextERKT_RKNS2_9BigIntValES8_PS6_") - .put(Type.FLOAT, - "16offset_fn_updateIN9doris_udf8FloatValEEEvPNS2_15FunctionContextERKT_RKNS2_9BigIntValES8_PS6_") - .put(Type.BIGINT, - "16offset_fn_updateIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextERKT_RKS3_S8_PS6_") - .put(Type.DOUBLE, - "16offset_fn_updateIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextERKT_RKNS2_9BigIntValES8_PS6_") - // .put(Type.CHAR, - // "16offset_fn_updateIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_RKNS2_9BigIntValES8_PS6_") - .put(Type.VARCHAR, - "16offset_fn_updateIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_RKNS2_9BigIntValES8_PS6_") - .put(Type.STRING, - "16offset_fn_updateIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_RKNS2_9BigIntValES8_PS6_") - .put(Type.LARGEINT, - "16offset_fn_updateIN9doris_udf11LargeIntValEEEvPNS2_15" - + "FunctionContextERKT_RKNS2_9BigIntValES8_PS6_") - .build(); - - private static final Map<Type, String> LAST_VALUE_UPDATE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.BOOLEAN, - "15last_val_updateIN9doris_udf10BooleanValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.MAX_DECIMALV2_TYPE, - "15last_val_updateIN9doris_udf12DecimalV2ValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.TINYINT, - "15last_val_updateIN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.SMALLINT, - "15last_val_updateIN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.DATE, - "15last_val_updateIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.DATETIME, - "15last_val_updateIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.INT, - "15last_val_updateIN9doris_udf6IntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.FLOAT, - "15last_val_updateIN9doris_udf8FloatValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.BIGINT, - "15last_val_updateIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.DOUBLE, - "15last_val_updateIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextERKT_PS6_") - // .put(Type.CHAR, - // "15last_val_updateIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.VARCHAR, - "15last_val_updateIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.STRING, - "15last_val_updateIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.LARGEINT, - "15last_val_updateIN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .build(); - - private static final Map<Type, String> FIRST_VALUE_REWRITE_UPDATE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.BOOLEAN, - "24first_val_rewrite_updateIN9doris_udf10BooleanValEEEvPNS2_15" - + "FunctionContextERKT_RKNS2_9BigIntValEPS6_") - .put(Type.MAX_DECIMALV2_TYPE, - "24first_val_rewrite_updateIN9doris_udf12DecimalV2ValEEEvPNS2_15" - + "FunctionContextERKT_RKNS2_9BigIntValEPS6_") - .put(Type.TINYINT, - "24first_val_rewrite_updateIN9doris_udf10TinyIntValEEEvPNS2_15" - + "FunctionContextERKT_RKNS2_9BigIntValEPS6_") - .put(Type.SMALLINT, - "24first_val_rewrite_updateIN9doris_udf11SmallIntValEEEvPNS2_15" - + "FunctionContextERKT_RKNS2_9BigIntValEPS6_") - .put(Type.DATE, - "24first_val_rewrite_updateIN9doris_udf11DateTimeValEEEvPNS2_15" - + "FunctionContextERKT_RKNS2_9BigIntValEPS6_") - .put(Type.DATETIME, - "24first_val_rewrite_updateIN9doris_udf11DateTimeValEEEvPNS2_15" - + "FunctionContextERKT_RKNS2_9BigIntValEPS6_") - .put(Type.INT, - "24first_val_rewrite_updateIN9doris_udf6IntValEEEvPNS2_15" - + "FunctionContextERKT_RKNS2_9BigIntValEPS6_") - .put(Type.FLOAT, - "24first_val_rewrite_updateIN9doris_udf8FloatValEEEvPNS2_15" - + "FunctionContextERKT_RKNS2_9BigIntValEPS6_") - .put(Type.BIGINT, - "24first_val_rewrite_updateIN9doris_udf9BigIntValEEEvPNS2_15" - + "FunctionContextERKT_RKS3_PS6_") - .put(Type.DOUBLE, - "24first_val_rewrite_updateIN9doris_udf9DoubleValEEEvPNS2_15" - + "FunctionContextERKT_RKNS2_9BigIntValEPS6_") - .put(Type.VARCHAR, - "24first_val_rewrite_updateIN9doris_udf9StringValEEEvPNS2_15" - + "FunctionContextERKT_RKNS2_9BigIntValEPS6_") - .put(Type.STRING, - "24first_val_rewrite_updateIN9doris_udf9StringValEEEvPNS2_15" - + "FunctionContextERKT_RKNS2_9BigIntValEPS6_") - .put(Type.LARGEINT, - "24first_val_rewrite_updateIN9doris_udf11LargeIntValEEEvPNS2_15" - + "FunctionContextERKT_RKNS2_9BigIntValEPS6_") - // .put(Type.VARCHAR, - // "15last_val_updateIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .build(); - - private static final Map<Type, String> LAST_VALUE_REMOVE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.BOOLEAN, - "15last_val_removeIN9doris_udf10BooleanValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.MAX_DECIMALV2_TYPE, - "15last_val_removeIN9doris_udf12DecimalV2ValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.TINYINT, - "15last_val_removeIN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.SMALLINT, - "15last_val_removeIN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.DATE, - "15last_val_removeIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.DATETIME, - "15last_val_removeIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.INT, - "15last_val_removeIN9doris_udf6IntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.FLOAT, - "15last_val_removeIN9doris_udf8FloatValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.BIGINT, - "15last_val_removeIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.DOUBLE, - "15last_val_removeIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextERKT_PS6_") - // .put(Type.CHAR, - // "15last_val_removeIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.VARCHAR, - "15last_val_removeIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.STRING, - "15last_val_removeIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.LARGEINT, - "15last_val_removeIN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .build(); - - private static final Map<Type, String> FIRST_VALUE_UPDATE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.BOOLEAN, - "16first_val_updateIN9doris_udf10BooleanValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.MAX_DECIMALV2_TYPE, - "16first_val_updateIN9doris_udf12DecimalV2ValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.TINYINT, - "16first_val_updateIN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.SMALLINT, - "16first_val_updateIN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.DATE, - "16first_val_updateIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.DATETIME, - "16first_val_updateIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.INT, - "16first_val_updateIN9doris_udf6IntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.FLOAT, - "16first_val_updateIN9doris_udf8FloatValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.BIGINT, - "16first_val_updateIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.DOUBLE, - "16first_val_updateIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextERKT_PS6_") - // .put(Type.CHAR, - // "16first_val_updateIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.VARCHAR, - "16first_val_updateIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.STRING, - "16first_val_updateIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.LARGEINT, - "16first_val_updateIN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .build(); - public static final String TO_BITMAP = "to_bitmap"; public static final String TO_BITMAP_WITH_CHECK = "to_bitmap_with_check"; public static final String BITMAP_HASH = "bitmap_hash"; @@ -784,166 +201,6 @@ public class FunctionSet<T> { public static final String HISTOGRAM = "histogram"; public static final String HIST = "hist"; - private static final Map<Type, String> BITMAP_UNION_INT_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.TINYINT, - "_ZN5doris15BitmapFunctions17bitmap_update_intIN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .put(Type.SMALLINT, - "_ZN5doris15BitmapFunctions17bitmap_update_intIN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .put(Type.INT, - "_ZN5doris15BitmapFunctions17bitmap_update_intIN9doris_udf6IntValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .build(); - - private static final Map<Type, String> BITMAP_INTERSECT_INIT_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.TINYINT, - "_ZN5doris15BitmapFunctions21bitmap_intersect_initIaN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.SMALLINT, - "_ZN5doris15BitmapFunctions21bitmap_intersect_initIsN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.INT, - "_ZN5doris15BitmapFunctions21bitmap_intersect_initIiN9doris_udf6IntValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.BIGINT, - "_ZN5doris15BitmapFunctions21bitmap_intersect_initIlN9doris_udf9BigIntValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.LARGEINT, - "_ZN5doris15BitmapFunctions21bitmap_intersect_initInN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.FLOAT, - "_ZN5doris15BitmapFunctions21bitmap_intersect_initIfN9doris_udf8FloatValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.DOUBLE, - "_ZN5doris15BitmapFunctions21bitmap_intersect_initIdN9doris_udf9DoubleValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.DATE, - "_ZN5doris15BitmapFunctions21bitmap_intersect_initINS_13DateTimeValueEN9doris_udf11DateTimeValEEEvPNS3_15FunctionContextEPNS3_9StringValE") - .put(Type.DATETIME, - "_ZN5doris15BitmapFunctions21bitmap_intersect_initINS_13DateTimeValueEN9doris_udf11DateTimeValEEEvPNS3_15FunctionContextEPNS3_9StringValE") - .put(Type.MAX_DECIMALV2_TYPE, - "_ZN5doris15BitmapFunctions21bitmap_intersect_initINS_14DecimalV2ValueEN9doris_udf12DecimalV2ValEEEvPNS3_15FunctionContextEPNS3_9StringValE") - .put(Type.CHAR, - "_ZN5doris15BitmapFunctions21bitmap_intersect_initINS_11StringValueEN9doris_udf9StringValEEEvPNS3_15FunctionContextEPS4_") - .put(Type.VARCHAR, - "_ZN5doris15BitmapFunctions21bitmap_intersect_initINS_11StringValueEN9doris_udf9StringValEEEvPNS3_15FunctionContextEPS4_") - .put(Type.STRING, - "_ZN5doris15BitmapFunctions21bitmap_intersect_initINS_11StringValueEN9doris_udf9StringValEEEvPNS3_15FunctionContextEPS4_") - .build(); - - private static final Map<Type, String> BITMAP_INTERSECT_UPDATE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.TINYINT, - "_ZN5doris15BitmapFunctions23bitmap_intersect_updateIaN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextERKNS2_9StringValERKT0_iPSA_PS7_") - .put(Type.SMALLINT, - "_ZN5doris15BitmapFunctions23bitmap_intersect_updateIsN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextERKNS2_9StringValERKT0_iPSA_PS7_") - .put(Type.INT, - "_ZN5doris15BitmapFunctions23bitmap_intersect_updateIiN9doris_udf6IntValEEEvPNS2_15FunctionContextERKNS2_9StringValERKT0_iPSA_PS7_") - .put(Type.BIGINT, - "_ZN5doris15BitmapFunctions23bitmap_intersect_updateIlN9doris_udf9BigIntValEEEvPNS2_15FunctionContextERKNS2_9StringValERKT0_iPSA_PS7_") - .put(Type.LARGEINT, - "_ZN5doris15BitmapFunctions23bitmap_intersect_updateInN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextERKNS2_9StringValERKT0_iPSA_PS7_") - .put(Type.FLOAT, - "_ZN5doris15BitmapFunctions23bitmap_intersect_updateIfN9doris_udf8FloatValEEEvPNS2_15FunctionContextERKNS2_9StringValERKT0_iPSA_PS7_") - .put(Type.DOUBLE, - "_ZN5doris15BitmapFunctions23bitmap_intersect_updateIdN9doris_udf9DoubleValEEEvPNS2_15FunctionContextERKNS2_9StringValERKT0_iPSA_PS7_") - .put(Type.DATE, - "_ZN5doris15BitmapFunctions23bitmap_intersect_updateINS_13DateTimeValueEN9doris_udf11DateTimeValEEEvPNS3_15FunctionContextERKNS3_9StringValERKT0_iPSB_PS8_") - .put(Type.DATETIME, - "_ZN5doris15BitmapFunctions23bitmap_intersect_updateINS_13DateTimeValueEN9doris_udf11DateTimeValEEEvPNS3_15FunctionContextERKNS3_9StringValERKT0_iPSB_PS8_") - .put(Type.MAX_DECIMALV2_TYPE, - "_ZN5doris15BitmapFunctions23bitmap_intersect_updateINS_14DecimalV2ValueEN9doris_udf12DecimalV2ValEEEvPNS3_15FunctionContextERKNS3_9StringValERKT0_iPSB_PS8_") - .put(Type.CHAR, - "_ZN5doris15BitmapFunctions23bitmap_intersect_updateINS_11StringValueEN9doris_udf9StringValEEEvPNS3_15FunctionContextERKS4_RKT0_iPSA_PS7_") - .put(Type.VARCHAR, - "_ZN5doris15BitmapFunctions23bitmap_intersect_updateINS_11StringValueEN9doris_udf9StringValEEEvPNS3_15FunctionContextERKS4_RKT0_iPSA_PS7_") - .put(Type.STRING, - "_ZN5doris15BitmapFunctions23bitmap_intersect_updateINS_11StringValueEN9doris_udf9StringValEEEvPNS3_15FunctionContextERKS4_RKT0_iPSA_PS7_") - .build(); - - private static final Map<Type, String> BITMAP_INTERSECT_MERGE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.TINYINT, - "_ZN5doris15BitmapFunctions22bitmap_intersect_mergeIaEEvPN9doris_udf15FunctionContextERKNS2_9StringValEPS6_") - .put(Type.SMALLINT, - "_ZN5doris15BitmapFunctions22bitmap_intersect_mergeIsEEvPN9doris_udf15FunctionContextERKNS2_9StringValEPS6_") - .put(Type.INT, - "_ZN5doris15BitmapFunctions22bitmap_intersect_mergeIiEEvPN9doris_udf15FunctionContextERKNS2_9StringValEPS6_") - .put(Type.BIGINT, - "_ZN5doris15BitmapFunctions22bitmap_intersect_mergeIlEEvPN9doris_udf15FunctionContextERKNS2_9StringValEPS6_") - .put(Type.LARGEINT, - "_ZN5doris15BitmapFunctions22bitmap_intersect_mergeInEEvPN9doris_udf15FunctionContextERKNS2_9StringValEPS6_") - .put(Type.FLOAT, - "_ZN5doris15BitmapFunctions22bitmap_intersect_mergeIfEEvPN9doris_udf15FunctionContextERKNS2_9StringValEPS6_") - .put(Type.DOUBLE, - "_ZN5doris15BitmapFunctions22bitmap_intersect_mergeIdEEvPN9doris_udf15FunctionContextERKNS2_9StringValEPS6_") - .put(Type.DATE, - "_ZN5doris15BitmapFunctions22bitmap_intersect_mergeINS_13DateTimeValueEEEvPN9doris_udf15FunctionContextERKNS3_9StringValEPS7_") - .put(Type.DATETIME, - "_ZN5doris15BitmapFunctions22bitmap_intersect_mergeINS_13DateTimeValueEEEvPN9doris_udf15FunctionContextERKNS3_9StringValEPS7_") - .put(Type.MAX_DECIMALV2_TYPE, - "_ZN5doris15BitmapFunctions22bitmap_intersect_mergeINS_14DecimalV2ValueEEEvPN9doris_udf15FunctionContextERKNS3_9StringValEPS7_") - .put(Type.CHAR, - "_ZN5doris15BitmapFunctions22bitmap_intersect_mergeINS_11StringValueEEEvPN9doris_udf15FunctionContextERKNS3_9StringValEPS7_") - .put(Type.VARCHAR, - "_ZN5doris15BitmapFunctions22bitmap_intersect_mergeINS_11StringValueEEEvPN9doris_udf15FunctionContextERKNS3_9StringValEPS7_") - .put(Type.STRING, - "_ZN5doris15BitmapFunctions22bitmap_intersect_mergeINS_11StringValueEEEvPN9doris_udf15FunctionContextERKNS3_9StringValEPS7_") - .build(); - - private static final Map<Type, String> BITMAP_INTERSECT_SERIALIZE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.TINYINT, - "_ZN5doris15BitmapFunctions26bitmap_intersect_serializeIaEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.SMALLINT, - "_ZN5doris15BitmapFunctions26bitmap_intersect_serializeIsEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.INT, - "_ZN5doris15BitmapFunctions26bitmap_intersect_serializeIiEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.BIGINT, - "_ZN5doris15BitmapFunctions26bitmap_intersect_serializeIlEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.LARGEINT, - "_ZN5doris15BitmapFunctions26bitmap_intersect_serializeInEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.FLOAT, - "_ZN5doris15BitmapFunctions26bitmap_intersect_serializeIfEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.DOUBLE, - "_ZN5doris15BitmapFunctions26bitmap_intersect_serializeIdEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.DATE, - "_ZN5doris15BitmapFunctions26bitmap_intersect_serializeINS_13DateTimeValueEEEN9doris_udf9StringValEPNS3_15FunctionContextERKS4_") - .put(Type.DATETIME, - "_ZN5doris15BitmapFunctions26bitmap_intersect_serializeINS_13DateTimeValueEEEN9doris_udf9StringValEPNS3_15FunctionContextERKS4_") - .put(Type.MAX_DECIMALV2_TYPE, - "_ZN5doris15BitmapFunctions26bitmap_intersect_serializeINS_14DecimalV2ValueEEEN9doris_udf9StringValEPNS3_15FunctionContextERKS4_") - .put(Type.CHAR, - "_ZN5doris15BitmapFunctions26bitmap_intersect_serializeINS_11StringValueEEEN9doris_udf9StringValEPNS3_15FunctionContextERKS4_") - .put(Type.VARCHAR, - "_ZN5doris15BitmapFunctions26bitmap_intersect_serializeINS_11StringValueEEEN9doris_udf9StringValEPNS3_15FunctionContextERKS4_") - .put(Type.STRING, - "_ZN5doris15BitmapFunctions26bitmap_intersect_serializeINS_11StringValueEEEN9doris_udf9StringValEPNS3_15FunctionContextERKS4_") - .build(); - - private static final Map<Type, String> BITMAP_INTERSECT_FINALIZE_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.TINYINT, - "_ZN5doris15BitmapFunctions25bitmap_intersect_finalizeIaEEN9doris_udf9BigIntValEPNS2_15FunctionContextERKNS2_9StringValE") - .put(Type.SMALLINT, - "_ZN5doris15BitmapFunctions25bitmap_intersect_finalizeIsEEN9doris_udf9BigIntValEPNS2_15FunctionContextERKNS2_9StringValE") - .put(Type.INT, - "_ZN5doris15BitmapFunctions25bitmap_intersect_finalizeIiEEN9doris_udf9BigIntValEPNS2_15FunctionContextERKNS2_9StringValE") - .put(Type.BIGINT, - "_ZN5doris15BitmapFunctions25bitmap_intersect_finalizeIlEEN9doris_udf9BigIntValEPNS2_15FunctionContextERKNS2_9StringValE") - .put(Type.LARGEINT, - "_ZN5doris15BitmapFunctions25bitmap_intersect_finalizeInEEN9doris_udf9BigIntValEPNS2_15FunctionContextERKNS2_9StringValE") - .put(Type.FLOAT, - "_ZN5doris15BitmapFunctions25bitmap_intersect_finalizeIfEEN9doris_udf9BigIntValEPNS2_15FunctionContextERKNS2_9StringValE") - .put(Type.DOUBLE, - "_ZN5doris15BitmapFunctions25bitmap_intersect_finalizeIdEEN9doris_udf9BigIntValEPNS2_15FunctionContextERKNS2_9StringValE") - .put(Type.DATE, - "_ZN5doris15BitmapFunctions25bitmap_intersect_finalizeINS_13DateTimeValueEEEN9doris_udf9BigIntValEPNS3_15FunctionContextERKNS3_9StringValE") - .put(Type.DATETIME, - "_ZN5doris15BitmapFunctions25bitmap_intersect_finalizeINS_13DateTimeValueEEEN9doris_udf9BigIntValEPNS3_15FunctionContextERKNS3_9StringValE") - .put(Type.MAX_DECIMALV2_TYPE, - "_ZN5doris15BitmapFunctions25bitmap_intersect_finalizeINS_14DecimalV2ValueEEEN9doris_udf9BigIntValEPNS3_15FunctionContextERKNS3_9StringValE") - .put(Type.CHAR, - "_ZN5doris15BitmapFunctions25bitmap_intersect_finalizeINS_11StringValueEEEN9doris_udf9BigIntValEPNS3_15FunctionContextERKNS3_9StringValE") - .put(Type.VARCHAR, - "_ZN5doris15BitmapFunctions25bitmap_intersect_finalizeINS_11StringValueEEEN9doris_udf9BigIntValEPNS3_15FunctionContextERKNS3_9StringValE") - .put(Type.STRING, - "_ZN5doris15BitmapFunctions25bitmap_intersect_finalizeINS_11StringValueEEEN9doris_udf9BigIntValEPNS3_15FunctionContextERKNS3_9StringValE") - .build(); - private static final Map<Type, String> TOPN_UPDATE_SYMBOL = ImmutableMap.<Type, String>builder() .put(Type.CHAR, @@ -954,16 +211,6 @@ public class FunctionSet<T> { "_ZN5doris13TopNFunctions11topn_updateIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_RKNS2_6IntValEPS3_") .build(); - private static final Map<Type, String> TOPN_UPDATE_MORE_PARAM_SYMBOL = - ImmutableMap.<Type, String>builder() - .put(Type.CHAR, - "_ZN5doris13TopNFunctions11topn_updateIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_RKNS2_6IntValESB_PS3_") - .put(Type.VARCHAR, - "_ZN5doris13TopNFunctions11topn_updateIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_RKNS2_6IntValESB_PS3_") - .put(Type.STRING, - "_ZN5doris13TopNFunctions11topn_updateIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_RKNS2_6IntValESB_PS3_") - .build(); - public Function getFunction(Function desc, Function.CompareMode mode) { return getFunction(desc, mode, false); } @@ -1224,6 +471,10 @@ public class FunctionSet<T> { } private boolean addFunction(Function fn, boolean isBuiltin) { + if (fn instanceof AggregateFunction) { + aggFunctionNames.add(fn.functionName()); + } + // TODO: add this to persistent store if (getFunction(fn, Function.CompareMode.IS_INDISTINGUISHABLE) != null) { return false; @@ -1308,45 +559,37 @@ public class FunctionSet<T> { // null symbols indicate the function does not need that step of the evaluation. // An empty symbol indicates a TODO for the BE to implement the function. private void initAggregateBuiltins() { - final String prefix = "_ZN5doris18AggregateFunctions"; - final String initNull = prefix + "9init_nullEPN9doris_udf15FunctionContextEPNS1_6AnyValE"; - final String initNullString = prefix - + "16init_null_stringEPN9doris_udf15FunctionContextEPNS1_9StringValE"; - final String stringValSerializeOrFinalize = prefix - + "32string_val_serialize_or_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE"; - final String stringValGetValue = prefix - + "20string_val_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE"; // Type stringType[] = {Type.CHAR, Type.VARCHAR}; // count(*) // vectorized addBuiltin(AggregateFunction.createBuiltin(FunctionSet.COUNT, new ArrayList<Type>(), Type.BIGINT, Type.BIGINT, - prefix + "18init_zero_not_nullIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextEPT_", - prefix + "17count_star_updateEPN9doris_udf15FunctionContextEPNS1_9BigIntValE", - prefix + "11count_mergeEPN9doris_udf15FunctionContextERKNS1_9BigIntValEPS4_", + "", + "", + "", null, null, - prefix + "17count_star_removeEPN9doris_udf15FunctionContextEPNS1_9BigIntValE", + "", null, false, true, true, true)); // count(array/map/struct) for (Type complexType : Lists.newArrayList(Type.ARRAY, Type.MAP, Type.GENERIC_STRUCT)) { addBuiltin(AggregateFunction.createBuiltin(FunctionSet.COUNT, Lists.newArrayList(complexType), Type.BIGINT, Type.BIGINT, - prefix + "18init_zero_not_nullIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextEPT_", - prefix + "12count_updateEPN9doris_udf15FunctionContextERKNS1_6AnyValEPNS1_9BigIntValE", - prefix + "11count_mergeEPN9doris_udf15FunctionContextERKNS1_9BigIntValEPS4_", + "", + "", + "", null, null, - prefix + "12count_removeEPN9doris_udf15FunctionContextERKNS1_6AnyValEPNS1_9BigIntValE", + "", null, false, true, true, true)); addBuiltin(AggregateFunction.createBuiltin(FunctionSet.COUNT, Lists.newArrayList(complexType), Type.BIGINT, Type.BIGINT, - prefix + "18init_zero_not_nullIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextEPT_", - prefix + "12count_updateEPN9doris_udf15FunctionContextERKNS1_6AnyValEPNS1_9BigIntValE", - prefix + "11count_mergeEPN9doris_udf15FunctionContextERKNS1_9BigIntValEPS4_", + "", + "", + "", null, null, - prefix + "12count_removeEPN9doris_udf15FunctionContextERKNS1_6AnyValEPNS1_9BigIntValE", + "", null, false, true, true, true)); } @@ -1517,11 +760,11 @@ public class FunctionSet<T> { // vectorized addBuiltin(AggregateFunction.createBuiltin(FunctionSet.COUNT, Lists.newArrayList(t), Type.BIGINT, Type.BIGINT, - prefix + "18init_zero_not_nullIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextEPT_", - prefix + "12count_updateEPN9doris_udf15FunctionContextERKNS1_6AnyValEPNS1_9BigIntValE", - prefix + "11count_mergeEPN9doris_udf15FunctionContextERKNS1_9BigIntValEPS4_", + "", + "", + "", null, null, - prefix + "12count_removeEPN9doris_udf15FunctionContextERKNS1_6AnyValEPNS1_9BigIntValE", + "", null, false, true, true, true)); // count in multi distinct @@ -1530,25 +773,25 @@ public class FunctionSet<T> { addBuiltin(AggregateFunction.createBuiltin("multi_distinct_count", Lists.newArrayList(t), Type.BIGINT, Type.VARCHAR, - prefix + "", - prefix + "", - prefix + "", - prefix + "", + "", + "", + "", + "", null, null, - prefix + "", + "", false, true, true, true)); } else if (t.equals(Type.STRING)) { addBuiltin(AggregateFunction.createBuiltin("multi_distinct_count", Lists.newArrayList(t), Type.BIGINT, Type.STRING, - prefix + "", - prefix + "", - prefix + "", - prefix + "", + "", + "", + "", + "", null, null, - prefix + "", + "", false, true, true, true)); } else if (t.equals(Type.TINYINT) || t.equals(Type.SMALLINT) || t.equals(Type.INT) || t.equals(Type.BIGINT) || t.equals(Type.LARGEINT) || t.equals(Type.DOUBLE)) { @@ -1556,13 +799,13 @@ public class FunctionSet<T> { addBuiltin(AggregateFunction.createBuiltin("multi_distinct_count", Lists.newArrayList(t), Type.BIGINT, t, - prefix + MULTI_DISTINCT_INIT_SYMBOL.get(t), - prefix + MULTI_DISTINCT_UPDATE_SYMBOL.get(t), - prefix + MULTI_DISTINCT_MERGE_SYMBOL.get(t), - prefix + MULTI_DISTINCT_SERIALIZE_SYMBOL.get(t), + "", + "", + "", + "", null, null, - prefix + MULTI_DISTINCT_COUNT_FINALIZE_SYMBOL.get(t), + "", false, true, true, true)); } else if (t.equals(Type.DATE) || t.equals(Type.DATETIME)) { // now we don't support datetime distinct @@ -1571,52 +814,52 @@ public class FunctionSet<T> { addBuiltin(AggregateFunction.createBuiltin("multi_distinct_count", Lists.newArrayList(t), Type.BIGINT, Type.MAX_DECIMALV2_TYPE, - prefix + "", - prefix + "", - prefix + "", - prefix + "", + "", + "", + "", + "", null, null, - prefix + "", + "", false, true, true, true)); } else if (t.equals(Type.DECIMAL32)) { // vectorized addBuiltin(AggregateFunction.createBuiltin("multi_distinct_count", Lists.newArrayList(t), Type.BIGINT, Type.DECIMAL32, - prefix + "", - prefix + "", - prefix + "", - prefix + "", + "", + "", + "", + "", null, null, - prefix + "", + "", false, true, true, true)); } else if (t.equals(Type.DECIMAL64)) { // vectorized addBuiltin(AggregateFunction.createBuiltin("multi_distinct_count", Lists.newArrayList(t), Type.BIGINT, Type.DECIMAL64, - prefix + "", - prefix + "", - prefix + "", - prefix + "", + "", + "", + "", + "", null, null, - prefix + "", + "", false, true, true, true)); } else if (t.equals(Type.DECIMAL128)) { // vectorized addBuiltin(AggregateFunction.createBuiltin("multi_distinct_count", Lists.newArrayList(t), Type.BIGINT, Type.DECIMAL128, - prefix + "", - prefix + "", - prefix + "", - prefix + "", + "", + "", + "", + "", null, null, - prefix + "", + "", false, true, true, true)); } @@ -1625,82 +868,80 @@ public class FunctionSet<T> { addBuiltin(AggregateFunction.createBuiltin("multi_distinct_sum", Lists.newArrayList(t), t, t, - prefix + MULTI_DISTINCT_INIT_SYMBOL.get(t), - prefix + MULTI_DISTINCT_UPDATE_SYMBOL.get(t), - prefix + MULTI_DISTINCT_MERGE_SYMBOL.get(t), - prefix + MULTI_DISTINCT_SERIALIZE_SYMBOL.get(t), + "", + "", + "", + "", null, null, - prefix + MULTI_DISTINCT_SUM_FINALIZE_SYMBOL.get(t), + "", false, true, true, true)); } else if (t.equals(Type.MAX_DECIMALV2_TYPE)) { // vectorized addBuiltin(AggregateFunction.createBuiltin("multi_distinct_sum", Lists.newArrayList(t), MULTI_DISTINCT_SUM_RETURN_TYPE.get(t), Type.MAX_DECIMALV2_TYPE, - prefix + "", - prefix + "", - prefix + "", - prefix + "", + "", + "", + "", + "", null, null, - prefix + "", + "", false, true, true, true)); } else if (t.equals(Type.DECIMAL32)) { // vectorized addBuiltin(AggregateFunction.createBuiltin("multi_distinct_sum", Lists.newArrayList(t), MULTI_DISTINCT_SUM_RETURN_TYPE.get(t), Type.DECIMAL32, - prefix + "", - prefix + "", - prefix + "", - prefix + "", + "", + "", + "", + "", null, null, - prefix + "", + "", false, true, true, true)); } else if (t.equals(Type.DECIMAL64)) { addBuiltin(AggregateFunction.createBuiltin("multi_distinct_sum", Lists.newArrayList(t), MULTI_DISTINCT_SUM_RETURN_TYPE.get(t), Type.DECIMAL64, - prefix + "", - prefix + "", - prefix + "", - prefix + "", + "", + "", + "", + "", null, null, - prefix + "", + "", false, true, true, true)); } else if (t.equals(Type.DECIMAL128)) { addBuiltin(AggregateFunction.createBuiltin("multi_distinct_sum", Lists.newArrayList(t), MULTI_DISTINCT_SUM_RETURN_TYPE.get(t), Type.DECIMAL128, - prefix + "", - prefix + "", - prefix + "", - prefix + "", + "", + "", + "", + "", null, null, - prefix + "", + "", false, true, true, true)); } // Min - String minMaxSerializeOrFinalize = t.isStringType() ? stringValSerializeOrFinalize : null; - String minMaxGetValue = t.isStringType() ? stringValGetValue : null; addBuiltin(AggregateFunction.createBuiltin("min", - Lists.newArrayList(t), t, t, prefix + MIN_INIT_SYMBOL.get(t), - prefix + MIN_UPDATE_SYMBOL.get(t), - prefix + MIN_UPDATE_SYMBOL.get(t), - minMaxSerializeOrFinalize, minMaxGetValue, - null, minMaxSerializeOrFinalize, true, true, false, true)); + Lists.newArrayList(t), t, t, "", + "", + "", + null, null, + null, null, true, true, false, true)); // Max addBuiltin(AggregateFunction.createBuiltin("max", - Lists.newArrayList(t), t, t, prefix + MAX_INIT_SYMBOL.get(t), - prefix + MAX_UPDATE_SYMBOL.get(t), - prefix + MAX_UPDATE_SYMBOL.get(t), - minMaxSerializeOrFinalize, minMaxGetValue, - null, minMaxSerializeOrFinalize, true, true, false, true)); + Lists.newArrayList(t), t, t, "", + "", + "", + null, null, + null, null, true, true, false, true)); // Any addBuiltin(AggregateFunction.createBuiltin("any", Lists.newArrayList(t), t, t, null, null, null, null, null, @@ -1724,28 +965,28 @@ public class FunctionSet<T> { // vectorized addBuiltin(AggregateFunction.createBuiltin("ndv", Lists.newArrayList(t), Type.BIGINT, Type.VARCHAR, - "_ZN5doris12HllFunctions8hll_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - "_ZN5doris12HllFunctions" + HLL_UPDATE_SYMBOL.get(t), - "_ZN5doris12HllFunctions9hll_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris12HllFunctions13hll_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "_ZN5doris12HllFunctions12hll_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", + "", + "", + "", + "", + "", true, true, true, true)); // vectorized addBuiltin(AggregateFunction.createBuiltin("approx_count_distinct", Lists.newArrayList(t), Type.BIGINT, Type.VARCHAR, - "_ZN5doris12HllFunctions8hll_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - "_ZN5doris12HllFunctions" + HLL_UPDATE_SYMBOL.get(t), - "_ZN5doris12HllFunctions9hll_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris12HllFunctions13hll_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "_ZN5doris12HllFunctions12hll_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", + "", + "", + "", + "", + "", true, true, true, true)); // vectorized addBuiltin(AggregateFunction.createBuiltin(BITMAP_UNION_INT, Lists.newArrayList(t), Type.BIGINT, t, "", - BITMAP_UNION_INT_SYMBOL.get(t), + "", "", "", "", @@ -1754,29 +995,29 @@ public class FunctionSet<T> { // VEC_INTERSECT_COUNT addBuiltin( AggregateFunction.createBuiltin(INTERSECT_COUNT, Lists.newArrayList(Type.BITMAP, t, t), Type.BIGINT, - Type.VARCHAR, true, BITMAP_INTERSECT_INIT_SYMBOL.get(t), - BITMAP_INTERSECT_UPDATE_SYMBOL.get(t), BITMAP_INTERSECT_MERGE_SYMBOL.get(t), - BITMAP_INTERSECT_SERIALIZE_SYMBOL.get(t), null, null, - BITMAP_INTERSECT_FINALIZE_SYMBOL.get(t), true, false, true, true)); + Type.VARCHAR, true, "", + "", "", + "", null, null, + "", true, false, true, true)); // TopN if (TOPN_UPDATE_SYMBOL.containsKey(t)) { // vectorized addBuiltin(AggregateFunction.createBuiltin("topn", Lists.newArrayList(t, Type.INT), Type.VARCHAR, Type.VARCHAR, - "_ZN5doris13TopNFunctions9topn_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - TOPN_UPDATE_SYMBOL.get(t), - "_ZN5doris13TopNFunctions10topn_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris13TopNFunctions14topn_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "_ZN5doris13TopNFunctions13topn_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", + "", + "", + "", + "", + "", true, false, true, true)); addBuiltin(AggregateFunction.createBuiltin("topn", Lists.newArrayList(t, Type.INT, Type.INT), Type.VARCHAR, Type.VARCHAR, - "_ZN5doris13TopNFunctions9topn_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - TOPN_UPDATE_MORE_PARAM_SYMBOL.get(t), - "_ZN5doris13TopNFunctions10topn_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris13TopNFunctions14topn_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "_ZN5doris13TopNFunctions13topn_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", + "", + "", + "", + "", + "", true, false, true, true)); } @@ -1784,69 +1025,69 @@ public class FunctionSet<T> { //vec stddev stddev_samp stddev_pop addBuiltin(AggregateFunction.createBuiltin("stddev", Lists.newArrayList(t), STDDEV_RETTYPE_SYMBOL.get(t), t, - prefix + STDDEV_INIT_SYMBOL.get(t), - prefix + STDDEV_UPDATE_SYMBOL.get(t), - prefix + STDDEV_MERGE_SYMBOL.get(t), + "", + "", + "", null, null, null, - prefix + STDDEV_POP_FINALIZE_SYMBOL.get(t), + "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("stddev_samp", Lists.newArrayList(t), STDDEV_RETTYPE_SYMBOL.get(t), t, - prefix + STDDEV_INIT_SYMBOL.get(t), - prefix + STDDEV_UPDATE_SYMBOL.get(t), - prefix + STDDEV_MERGE_SYMBOL.get(t), + "", + "", + "", null, null, null, - prefix + STDDEV_FINALIZE_SYMBOL.get(t), + "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("stddev_pop", Lists.newArrayList(t), STDDEV_RETTYPE_SYMBOL.get(t), t, - prefix + STDDEV_INIT_SYMBOL.get(t), - prefix + STDDEV_UPDATE_SYMBOL.get(t), - prefix + STDDEV_MERGE_SYMBOL.get(t), + "", + "", + "", null, null, null, - prefix + STDDEV_POP_FINALIZE_SYMBOL.get(t), + "", false, true, false, true)); //vec: variance variance_samp var_samp variance_pop var_pop addBuiltin(AggregateFunction.createBuiltin("variance", Lists.newArrayList(t), STDDEV_RETTYPE_SYMBOL.get(t), t, - prefix + STDDEV_INIT_SYMBOL.get(t), - prefix + STDDEV_UPDATE_SYMBOL.get(t), - prefix + STDDEV_MERGE_SYMBOL.get(t), + "", + "", + "", null, null, null, - prefix + VAR_POP_FINALIZE_SYMBOL.get(t), + "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("variance_pop", Lists.newArrayList(t), STDDEV_RETTYPE_SYMBOL.get(t), t, - prefix + STDDEV_INIT_SYMBOL.get(t), - prefix + STDDEV_UPDATE_SYMBOL.get(t), - prefix + STDDEV_MERGE_SYMBOL.get(t), + "", + "", + "", null, null, null, - prefix + VAR_POP_FINALIZE_SYMBOL.get(t), + "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("var_pop", Lists.newArrayList(t), STDDEV_RETTYPE_SYMBOL.get(t), t, - prefix + STDDEV_INIT_SYMBOL.get(t), - prefix + STDDEV_UPDATE_SYMBOL.get(t), - prefix + STDDEV_MERGE_SYMBOL.get(t), + "", + "", + "", null, null, null, - prefix + VAR_POP_FINALIZE_SYMBOL.get(t), + "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("variance_samp", Lists.newArrayList(t), STDDEV_RETTYPE_SYMBOL.get(t), t, - prefix + STDDEV_INIT_SYMBOL.get(t), - prefix + STDDEV_UPDATE_SYMBOL.get(t), - prefix + STDDEV_MERGE_SYMBOL.get(t), + "", + "", + "", null, null, null, - prefix + VAR_FINALIZE_SYMBOL.get(t), + "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("var_samp", Lists.newArrayList(t), STDDEV_RETTYPE_SYMBOL.get(t), t, - prefix + STDDEV_INIT_SYMBOL.get(t), - prefix + STDDEV_UPDATE_SYMBOL.get(t), - prefix + STDDEV_MERGE_SYMBOL.get(t), + "", + "", + "", null, null, null, - prefix + VAR_FINALIZE_SYMBOL.get(t), + "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("avg_weighted", @@ -1860,74 +1101,74 @@ public class FunctionSet<T> { String []sumNames = {"sum", "sum_distinct"}; for (String name : sumNames) { addBuiltin(AggregateFunction.createBuiltin(name, - Lists.<Type>newArrayList(Type.TINYINT), Type.BIGINT, Type.BIGINT, initNull, - prefix + "3sumIN9doris_udf9BigIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", - prefix + "3sumIN9doris_udf9BigIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", + Lists.<Type>newArrayList(Type.TINYINT), Type.BIGINT, Type.BIGINT, "", + "", + "", null, null, - prefix + "10sum_removeIN9doris_udf9BigIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", + "", null, false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin(name, - Lists.<Type>newArrayList(Type.SMALLINT), Type.BIGINT, Type.BIGINT, initNull, - prefix + "3sumIN9doris_udf9BigIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", - prefix + "3sumIN9doris_udf9BigIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", + Lists.<Type>newArrayList(Type.SMALLINT), Type.BIGINT, Type.BIGINT, "", + "", + "", null, null, - prefix + "10sum_removeIN9doris_udf9BigIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", + "", null, false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin(name, - Lists.<Type>newArrayList(Type.INT), Type.BIGINT, Type.BIGINT, initNull, - prefix + "3sumIN9doris_udf9BigIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", - prefix + "3sumIN9doris_udf9BigIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", + Lists.<Type>newArrayList(Type.INT), Type.BIGINT, Type.BIGINT, "", + "", + "", null, null, - prefix + "10sum_removeIN9doris_udf9BigIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", + "", null, false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin(name, - Lists.<Type>newArrayList(Type.BIGINT), Type.BIGINT, Type.BIGINT, initNull, - prefix + "3sumIN9doris_udf9BigIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", - prefix + "3sumIN9doris_udf9BigIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", + Lists.<Type>newArrayList(Type.BIGINT), Type.BIGINT, Type.BIGINT, "", + "", + "", null, null, - prefix + "10sum_removeIN9doris_udf9BigIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", + "", null, false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin(name, - Lists.<Type>newArrayList(Type.DOUBLE), Type.DOUBLE, Type.DOUBLE, initNull, - prefix + "3sumIN9doris_udf9DoubleValES3_EEvPNS2_15FunctionContextERKT_PT0_", - prefix + "3sumIN9doris_udf9DoubleValES3_EEvPNS2_15FunctionContextERKT_PT0_", + Lists.<Type>newArrayList(Type.DOUBLE), Type.DOUBLE, Type.DOUBLE, "", + "", + "", null, null, - prefix + "10sum_removeIN9doris_udf9DoubleValES3_EEvPNS2_15FunctionContextERKT_PT0_", + "", null, false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin(name, - Lists.<Type>newArrayList(Type.MAX_DECIMALV2_TYPE), Type.MAX_DECIMALV2_TYPE, Type.MAX_DECIMALV2_TYPE, initNull, - prefix + "3sumIN9doris_udf12DecimalV2ValES3_EEvPNS2_15FunctionContextERKT_PT0_", - prefix + "3sumIN9doris_udf12DecimalV2ValES3_EEvPNS2_15FunctionContextERKT_PT0_", + Lists.<Type>newArrayList(Type.MAX_DECIMALV2_TYPE), Type.MAX_DECIMALV2_TYPE, Type.MAX_DECIMALV2_TYPE, "", + "", + "", null, null, - prefix + "10sum_removeIN9doris_udf12DecimalV2ValES3_EEvPNS2_15FunctionContextERKT_PT0_", + "", null, false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin(name, - Lists.<Type>newArrayList(Type.DECIMAL32), ScalarType.DECIMAL128, Type.DECIMAL128, initNull, - prefix + "3sumIN9doris_udf12DecimalV2ValES3_EEvPNS2_15FunctionContextERKT_PT0_", - prefix + "3sumIN9doris_udf12DecimalV2ValES3_EEvPNS2_15FunctionContextERKT_PT0_", + Lists.<Type>newArrayList(Type.DECIMAL32), ScalarType.DECIMAL128, Type.DECIMAL128, "", + "", + "", null, null, - prefix + "10sum_removeIN9doris_udf12DecimalV2ValES3_EEvPNS2_15FunctionContextERKT_PT0_", + "", null, false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin(name, - Lists.<Type>newArrayList(Type.DECIMAL64), Type.DECIMAL128, Type.DECIMAL128, initNull, - prefix + "3sumIN9doris_udf12DecimalV2ValES3_EEvPNS2_15FunctionContextERKT_PT0_", - prefix + "3sumIN9doris_udf12DecimalV2ValES3_EEvPNS2_15FunctionContextERKT_PT0_", + Lists.<Type>newArrayList(Type.DECIMAL64), Type.DECIMAL128, Type.DECIMAL128, "", + "", + "", null, null, - prefix + "10sum_removeIN9doris_udf12DecimalV2ValES3_EEvPNS2_15FunctionContextERKT_PT0_", + "", null, false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin(name, - Lists.<Type>newArrayList(Type.DECIMAL128), Type.DECIMAL128, Type.DECIMAL128, initNull, - prefix + "3sumIN9doris_udf12DecimalV2ValES3_EEvPNS2_15FunctionContextERKT_PT0_", - prefix + "3sumIN9doris_udf12DecimalV2ValES3_EEvPNS2_15FunctionContextERKT_PT0_", + Lists.<Type>newArrayList(Type.DECIMAL128), Type.DECIMAL128, Type.DECIMAL128, "", + "", + "", null, null, - prefix + "10sum_removeIN9doris_udf12DecimalV2ValES3_EEvPNS2_15FunctionContextERKT_PT0_", + "", null, false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin(name, - Lists.<Type>newArrayList(Type.LARGEINT), Type.LARGEINT, Type.LARGEINT, initNull, - prefix + "3sumIN9doris_udf11LargeIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", - prefix + "3sumIN9doris_udf11LargeIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", + Lists.<Type>newArrayList(Type.LARGEINT), Type.LARGEINT, Type.LARGEINT, "", + "", + "", null, null, - prefix + "10sum_removeIN9doris_udf11LargeIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", + "", null, false, true, false, true)); } @@ -2024,29 +1265,29 @@ public class FunctionSet<T> { //vec percentile and percentile_approx addBuiltin(AggregateFunction.createBuiltin("percentile", Lists.newArrayList(Type.BIGINT, Type.DOUBLE), Type.DOUBLE, Type.VARCHAR, - prefix + "15percentile_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - prefix + "17percentile_updateIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextERKT_RKNS2_9DoubleValEPNS2_9StringValE", - prefix + "16percentile_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - prefix + "20percentile_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - prefix + "19percentile_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", + "", + "", + "", + "", + "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("percentile_approx", Lists.<Type>newArrayList(Type.DOUBLE, Type.DOUBLE), Type.DOUBLE, Type.VARCHAR, - prefix + "22percentile_approx_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - prefix + "24percentile_approx_updateIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextERKT_RKS3_PNS2_9StringValE", - prefix + "23percentile_approx_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - prefix + "27percentile_approx_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - prefix + "26percentile_approx_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", + "", + "", + "", + "", + "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("percentile_approx", Lists.<Type>newArrayList(Type.DOUBLE, Type.DOUBLE, Type.DOUBLE), Type.DOUBLE, Type.VARCHAR, - prefix + "22percentile_approx_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - prefix + "24percentile_approx_updateIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextERKT_RKS3_SA_PNS2_9StringValE", - prefix + "23percentile_approx_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - prefix + "27percentile_approx_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - prefix + "26percentile_approx_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", + "", + "", + "", + "", + "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("percentile_array", @@ -2156,54 +1397,54 @@ public class FunctionSet<T> { // Group_concat(string) vectorized addBuiltin(AggregateFunction.createBuiltin("group_concat", Lists.<Type>newArrayList(Type.VARCHAR), Type.VARCHAR, - Type.VARCHAR, initNullString, "", "", "", "", false, true, false, true)); + Type.VARCHAR, "", "", "", "", "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("multi_distinct_group_concat", Lists.<Type>newArrayList(Type.VARCHAR), Type.VARCHAR, - Type.VARCHAR, initNullString, "", "", "", "", false, true, false, true)); + Type.VARCHAR, "", "", "", "", "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("group_concat", Lists.<Type>newArrayList(Type.CHAR), Type.CHAR, - Type.CHAR, initNullString, "", "", "", "", false, true, false, true)); + Type.CHAR, "", "", "", "", "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("multi_distinct_group_concat", Lists.<Type>newArrayList(Type.CHAR), Type.CHAR, - Type.CHAR, initNullString, "", "", "", "", false, true, false, true)); + Type.CHAR, "", "", "", "", "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("group_concat", Lists.<Type>newArrayList(Type.STRING), Type.STRING, - Type.STRING, initNullString, "", "", "", "", false, true, false, true)); + Type.STRING, "", "", "", "", "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("multi_distinct_group_concat", Lists.<Type>newArrayList(Type.STRING), Type.STRING, - Type.STRING, initNullString, "", "", "", "", false, true, false, true)); + Type.STRING, "", "", "", "", "", false, true, false, true)); // Group_concat(string, string) vectorized addBuiltin(AggregateFunction.createBuiltin("group_concat", Lists.<Type>newArrayList(Type.VARCHAR, Type.VARCHAR), - Type.VARCHAR, Type.VARCHAR, initNullString, "", "", "", "", false, true, false, true)); + Type.VARCHAR, Type.VARCHAR, "", "", "", "", "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("multi_distinct_group_concat", Lists.<Type>newArrayList(Type.VARCHAR, Type.VARCHAR), - Type.VARCHAR, Type.VARCHAR, initNullString, "", "", "", "", false, true, false, true)); + Type.VARCHAR, Type.VARCHAR, "", "", "", "", "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("group_concat", Lists.<Type>newArrayList(Type.CHAR, Type.CHAR), - Type.CHAR, Type.CHAR, initNullString, "", "", "", "", false, true, false, true)); + Type.CHAR, Type.CHAR, "", "", "", "", "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("multi_distinct_group_concat", Lists.<Type>newArrayList(Type.CHAR, Type.CHAR), - Type.CHAR, Type.CHAR, initNullString, "", "", "", "", false, true, false, true)); + Type.CHAR, Type.CHAR, "", "", "", "", "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("group_concat", Lists.<Type>newArrayList(Type.STRING, Type.STRING), - Type.STRING, Type.STRING, initNullString, "", "", "", "", false, true, false, true)); + Type.STRING, Type.STRING, "", "", "", "", "", false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin("multi_distinct_group_concat", Lists.<Type>newArrayList(Type.STRING, Type.STRING), - Type.STRING, Type.STRING, initNullString, "", "", "", "", false, true, false, true)); + Type.STRING, Type.STRING, "", "", "", "", "", false, true, false, true)); // analytic functions // Rank addBuiltin(AggregateFunction.createAnalyticBuiltin("rank", Lists.<Type>newArrayList(), Type.BIGINT, Type.VARCHAR, - prefix + "9rank_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - prefix + "11rank_updateEPN9doris_udf15FunctionContextEPNS1_9StringValE", + "", + "", null, - prefix + "14rank_get_valueEPN9doris_udf15FunctionContextERNS1_9StringValE", - prefix + "13rank_finalizeEPN9doris_udf15FunctionContextERNS1_9StringValE")); + "", + "")); // Dense rank addBuiltin(AggregateFunction.createAnalyticBuiltin("dense_rank", Lists.<Type>newArrayList(), Type.BIGINT, Type.VARCHAR, - prefix + "9rank_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - prefix + "17dense_rank_updateEPN9doris_udf15FunctionContextEPNS1_9StringValE", + "", + "", null, - prefix + "20dense_rank_get_valueEPN9doris_udf15FunctionContextERNS1_9StringValE", - prefix + "13rank_finalizeEPN9doris_udf15FunctionContextERNS1_9StringValE")); + "", + "")); //row_number addBuiltin(AggregateFunction.createAnalyticBuiltin("row_number", new ArrayList<Type>(), Type.BIGINT, Type.BIGINT, - prefix + "18init_zero_not_nullIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextEPT_", - prefix + "17count_star_updateEPN9doris_udf15FunctionContextEPNS1_9BigIntValE", - prefix + "11count_mergeEPN9doris_udf15FunctionContextERKNS1_9BigIntValEPS4_", + "", + "", + "", null, null)); //ntile, we use rewrite sql for ntile, actually we don't really need this. addBuiltin(AggregateFunction.createAnalyticBuiltin("ntile", @@ -2212,25 +1453,25 @@ public class FunctionSet<T> { //vec Rank addBuiltin(AggregateFunction.createAnalyticBuiltin("rank", Lists.<Type>newArrayList(), Type.BIGINT, Type.VARCHAR, - prefix + "9rank_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - prefix + "11rank_updateEPN9doris_udf15FunctionContextEPNS1_9StringValE", + "", + "", null, - prefix + "14rank_get_valueEPN9doris_udf15FunctionContextERNS1_9StringValE", - prefix + "13rank_finalizeEPN9doris_udf15FunctionContextERNS1_9StringValE", true)); + "", + "", true)); //vec Dense rank addBuiltin(AggregateFunction.createAnalyticBuiltin("dense_rank", Lists.<Type>newArrayList(), Type.BIGINT, Type.VARCHAR, - prefix + "9rank_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - prefix + "17dense_rank_updateEPN9doris_udf15FunctionContextEPNS1_9StringValE", + "", + "", null, - prefix + "20dense_rank_get_valueEPN9doris_udf15FunctionContextERNS1_9StringValE", - prefix + "13rank_finalizeEPN9doris_udf15FunctionContextERNS1_9StringValE", true)); + "", + "", true)); //vec row_number addBuiltin(AggregateFunction.createAnalyticBuiltin("row_number", new ArrayList<Type>(), Type.BIGINT, Type.BIGINT, - prefix + "18init_zero_not_nullIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextEPT_", - prefix + "17count_star_updateEPN9doris_udf15FunctionContextEPNS1_9BigIntValE", - prefix + "11count_mergeEPN9doris_udf15FunctionContextERKNS1_9BigIntValEPS4_", + "", + "", + "", null, null, true)); //vec ntile addBuiltin(AggregateFunction.createAnalyticBuiltin("ntile", @@ -2245,67 +1486,67 @@ public class FunctionSet<T> { } addBuiltin(AggregateFunction.createAnalyticBuiltin( "first_value", Lists.newArrayList(t), t, t, - t.isStringType() ? initNullString : initNull, - prefix + FIRST_VALUE_UPDATE_SYMBOL.get(t), + "", + "", null, - t.isStringType() ? stringValGetValue : null, - t.isStringType() ? stringValSerializeOrFinalize : null)); + "", + "")); addBuiltin(AggregateFunction.createAnalyticBuiltin( "last_value", Lists.newArrayList(t), t, t, - t.isStringType() ? initNullString : initNull, - prefix + LAST_VALUE_UPDATE_SYMBOL.get(t), - prefix + LAST_VALUE_REMOVE_SYMBOL.get(t), - t.isStringType() ? stringValGetValue : null, - t.isStringType() ? stringValSerializeOrFinalize : null)); + "", + "", + "", + "", + "")); //vec first_value addBuiltin(AggregateFunction.createAnalyticBuiltin( "first_value", Lists.newArrayList(t), t, t, - t.isStringType() ? initNullString : initNull, - prefix + FIRST_VALUE_UPDATE_SYMBOL.get(t), + "", + "", null, - t.isStringType() ? stringValGetValue : null, - t.isStringType() ? stringValSerializeOrFinalize : null, true)); + "", + "", true)); // Implements FIRST_VALUE for some windows that require rewrites during planning. addBuiltin(AggregateFunction.createAnalyticBuiltin( "first_value_rewrite", Lists.newArrayList(t, Type.BIGINT), t, t, - t.isStringType() ? initNullString : initNull, - prefix + FIRST_VALUE_REWRITE_UPDATE_SYMBOL.get(t), + "", + "", null, - t.isStringType() ? stringValGetValue : null, - t.isStringType() ? stringValSerializeOrFinalize : null, + "", + "", false, false)); //vec last_value addBuiltin(AggregateFunction.createAnalyticBuiltin( "last_value", Lists.newArrayList(t), t, t, - t.isStringType() ? initNullString : initNull, - prefix + LAST_VALUE_UPDATE_SYMBOL.get(t), - prefix + LAST_VALUE_REMOVE_SYMBOL.get(t), - t.isStringType() ? stringValGetValue : null, - t.isStringType() ? stringValSerializeOrFinalize : null, true)); + "", + "", + "", + "", + "", true)); addBuiltin(AggregateFunction.createAnalyticBuiltin( "lag", Lists.newArrayList(t, Type.BIGINT, t), t, t, - prefix + OFFSET_FN_INIT_SYMBOL.get(t), - prefix + OFFSET_FN_UPDATE_SYMBOL.get(t), - null, t.isStringType() ? stringValGetValue : null, null)); + "", + "", + null, "", null)); addBuiltin(AggregateFunction.createAnalyticBuiltin( "lead", Lists.newArrayList(t, Type.BIGINT, t), t, t, - prefix + OFFSET_FN_INIT_SYMBOL.get(t), - prefix + OFFSET_FN_UPDATE_SYMBOL.get(t), - null, t.isStringType() ? stringValGetValue : null, null)); + "", + "", + null, "", null)); //vec addBuiltin(AggregateFunction.createAnalyticBuiltin( "lag", Lists.newArrayList(t, Type.BIGINT, t), t, t, - prefix + OFFSET_FN_INIT_SYMBOL.get(t), - prefix + OFFSET_FN_UPDATE_SYMBOL.get(t), + "", + "", null, null, null, true)); addBuiltin(AggregateFunction.createAnalyticBuiltin( "lead", Lists.newArrayList(t, Type.BIGINT, t), t, t, - prefix + OFFSET_FN_INIT_SYMBOL.get(t), - prefix + OFFSET_FN_UPDATE_SYMBOL.get(t), + "", + "", null, null, null, true)); // lead() and lag() the default offset and the default value should be @@ -2406,4 +1647,8 @@ public class FunctionSet<T> { "_ZN5doris19DummyTableFunctions7explodeEPN9doris_udf15FunctionContextERKNS1_13CollectionValE"); } } + + public boolean isAggFunctionName(String name) { + return aggFunctionNames.contains(name); + } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java index ce1d76e3a0..1d3d353bf3 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java @@ -216,7 +216,7 @@ public class MaterializedIndexMeta implements Writable, GsonPostProcessable { } if (matchedColumn != null) { - LOG.debug("trans old MV, MV: {}, DefineExpr:{}, DefineName:{}", + LOG.info("trans old MV: {}, DefineExpr:{}, DefineName:{}", matchedColumn.getName(), entry.getValue().toSqlWithoutTbl(), entry.getKey()); matchedColumn.setDefineExpr(entry.getValue()); matchedColumn.setDefineName(entry.getKey()); diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/external/HMSExternalTable.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/external/HMSExternalTable.java index 487b4a3e61..ebd9da9425 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/external/HMSExternalTable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/external/HMSExternalTable.java @@ -411,9 +411,8 @@ public class HMSExternalTable extends ExternalTable { tmpSchema.add(new Column(field.getName(), HiveMetaStoreClientHelper.hiveTypeToDorisType(field.getType(), IcebergExternalTable.ICEBERG_DATETIME_SCALE_MS), - true, null, - true, false, null, field.getComment(), true, null, - schema.caseInsensitiveFindField(field.getName()).fieldId(), null, null, null, null)); + true, null, true, false, null, field.getComment(), true, null, + schema.caseInsensitiveFindField(field.getName()).fieldId(), null)); } return tmpSchema; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcMySQLClient.java b/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcMySQLClient.java index 5c5f33f30e..9863bcc1c2 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcMySQLClient.java +++ b/fe/fe-core/src/main/java/org/apache/doris/external/jdbc/JdbcMySQLClient.java @@ -196,8 +196,7 @@ public class JdbcMySQLClient extends JdbcClient { dorisTableSchema.add(new Column(field.getColumnName(), jdbcTypeToDoris(field), field.isKey(), null, field.isAllowNull(), field.isAutoincrement(), field.getDefaultValue(), field.getRemarks(), - true, null, -1, null, - null, null, null)); + true, null, -1, null)); } return dorisTableSchema; } diff --git a/regression-test/data/mv_p0/agg_state/test_agg_state_max_by.out b/regression-test/data/mv_p0/agg_state/test_agg_state_max_by.out new file mode 100644 index 0000000000..e8082f928a --- /dev/null +++ b/regression-test/data/mv_p0/agg_state/test_agg_state_max_by.out @@ -0,0 +1,8 @@ +-- This file is automatically generated. You should know what you did if you want to edit this +-- !select_star -- +\N 4 \N d +-4 -4 -4 d +1 1 1 a +2 2 2 b +3 -3 \N c + diff --git a/regression-test/suites/mv_p0/sum_divede_count/sum_devide_count.groovy b/regression-test/suites/mv_p0/agg_state/test_agg_state_max_by.groovy similarity index 55% copy from regression-test/suites/mv_p0/sum_divede_count/sum_devide_count.groovy copy to regression-test/suites/mv_p0/agg_state/test_agg_state_max_by.groovy index 4e045c18c3..071f36bb69 100644 --- a/regression-test/suites/mv_p0/sum_divede_count/sum_devide_count.groovy +++ b/regression-test/suites/mv_p0/agg_state/test_agg_state_max_by.groovy @@ -17,7 +17,9 @@ import org.codehaus.groovy.runtime.IOGroovyMethods -suite ("sum_devide_count") { +suite ("test_agg_state_max_by") { + + sql """set enable_nereids_planner=true""" sql """ DROP TABLE IF EXISTS d_table; """ @@ -36,39 +38,18 @@ suite ("sum_devide_count") { sql "insert into d_table select 1,1,1,'a';" sql "insert into d_table select 2,2,2,'b';" sql "insert into d_table select 3,-3,null,'c';" + sql "insert into d_table(k4,k2) values('d',4);" - test { - sql "create materialized view kavg as select k1,k4,avg(k2) from d_table group by k1,k4;" - exception "errCode = 2," - } - - createMV ("create materialized view kavg as select k1,k4,sum(k2),count(k2) from d_table group by k1,k4;") + createMV("create materialized view k1mb as select k1,max_by(k2,k3) from d_table group by k1;") sql "insert into d_table select -4,-4,-4,'d';" - sql "insert into d_table select 3,2,null,'c';" - qt_select_star "select * from d_table order by k1,k2,k3,k4;" - - explain { - sql("select k1,k4,sum(k2)/count(k2) from d_table group by k1,k4 order by k1,k4;") - contains "(kavg)" - } - qt_select_mv "select k1,k4,sum(k2)/count(k2) from d_table group by k1,k4 order by k1,k4;" - - explain { - sql("select k1,sum(k2)/count(k2) from d_table group by k1 order by k1;") - contains "(kavg)" - } - qt_select_mv "select k1,sum(k2)/count(k2) from d_table group by k1 order by k1;" - - explain { - sql("select k4,sum(k2)/count(k2) from d_table group by k4 order by k4;") - contains "(kavg)" - } - qt_select_mv "select k4,sum(k2)/count(k2) from d_table group by k4 order by k4;" + qt_select_star "select * from d_table order by k1;" +/* explain { - sql("select sum(k2)/count(k2) from d_table;") - contains "(kavg)" + sql("select k1,max_by(k2,k3) from d_table group by k1 order by k1;") + contains "(k1mb)" } - qt_select_mv "select sum(k2)/count(k2) from d_table;" + qt_select_mv "select k1,max_by(k2,k3) from d_table group by k1 order by k1;" +*/ } diff --git a/regression-test/suites/mv_p0/sum_divede_count/sum_devide_count.groovy b/regression-test/suites/mv_p0/sum_divede_count/sum_devide_count.groovy index 4e045c18c3..cfe5d22c18 100644 --- a/regression-test/suites/mv_p0/sum_divede_count/sum_devide_count.groovy +++ b/regression-test/suites/mv_p0/sum_divede_count/sum_devide_count.groovy @@ -37,11 +37,6 @@ suite ("sum_devide_count") { sql "insert into d_table select 2,2,2,'b';" sql "insert into d_table select 3,-3,null,'c';" - test { - sql "create materialized view kavg as select k1,k4,avg(k2) from d_table group by k1,k4;" - exception "errCode = 2," - } - createMV ("create materialized view kavg as select k1,k4,sum(k2),count(k2) from d_table group by k1,k4;") sql "insert into d_table select -4,-4,-4,'d';" diff --git a/regression-test/suites/nereids_syntax_p0/mv/newMv/sum_devide_count.groovy b/regression-test/suites/nereids_syntax_p0/mv/newMv/sum_devide_count.groovy index 17a08abc11..e881ed3bd8 100644 --- a/regression-test/suites/nereids_syntax_p0/mv/newMv/sum_devide_count.groovy +++ b/regression-test/suites/nereids_syntax_p0/mv/newMv/sum_devide_count.groovy @@ -39,11 +39,6 @@ suite ("sum_devide_count") { sql "SET experimental_enable_nereids_planner=true" sql "SET enable_fallback_to_original_planner=false" - test { - sql "create materialized view kavg as select k1,k4,avg(k2) from sum_devide_count group by k1,k4;" - exception "errCode = 2," - } - createMV ("create materialized view kavg as select k1,k4,sum(k2),count(k2) from sum_devide_count group by k1,k4;") sleep(3000) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org