diff --git a/be/src/util/thrift_rpc_helper.cpp b/be/src/util/thrift_rpc_helper.cpp index 309d2fcedf..bc0861d7ff 100644 --- a/be/src/util/thrift_rpc_helper.cpp +++ b/be/src/util/thrift_rpc_helper.cpp @@ -93,7 +93,7 @@ Status ThriftRpcHelper::rpc(const std::string& ip, const int32_t port, std::chrono::milliseconds(config::thrift_client_retry_interval_ms * 2)); // just reopen to disable this connection client.reopen(timeout_ms); - return Status::RpcError("failed to call frontend service"); + return Status::RpcError("failed to call frontend service, reason: {}", e.what()); } return Status::OK(); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/ArithmeticExpr.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/ArithmeticExpr.java index 0efc993d1e..c863f06194 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/ArithmeticExpr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/ArithmeticExpr.java @@ -104,68 +104,6 @@ public class ArithmeticExpr extends Expr { } public static void initBuiltins(FunctionSet functionSet) { - for (Type t : Type.getNumericTypes()) { - NullableMode mode = t.isDecimalV3() ? NullableMode.CUSTOM : NullableMode.DEPEND_ON_ARGUMENT; - functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( - Operator.MULTIPLY.getName(), Lists.newArrayList(t, t), t, mode)); - functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( - Operator.ADD.getName(), Lists.newArrayList(t, t), t, mode)); - functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( - Operator.SUBTRACT.getName(), Lists.newArrayList(t, t), t, mode)); - } - functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( - Operator.DIVIDE.getName(), - Lists.newArrayList(Type.DOUBLE, Type.DOUBLE), - Type.DOUBLE, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( - Operator.DIVIDE.getName(), - Lists.newArrayList(Type.MAX_DECIMALV2_TYPE, Type.MAX_DECIMALV2_TYPE), - Type.MAX_DECIMALV2_TYPE, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( - Operator.DIVIDE.getName(), - Lists.newArrayList(Type.DECIMAL32, Type.DECIMAL32), - Type.DECIMAL32, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( - Operator.DIVIDE.getName(), - Lists.newArrayList(Type.DECIMAL32, Type.DECIMAL64), - Type.DECIMAL32, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( - Operator.DIVIDE.getName(), - Lists.newArrayList(Type.DECIMAL32, Type.DECIMAL128), - Type.DECIMAL32, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( - Operator.DIVIDE.getName(), - Lists.newArrayList(Type.DECIMAL64, Type.DECIMAL64), - Type.DECIMAL64, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( - Operator.DIVIDE.getName(), - Lists.newArrayList(Type.DECIMAL64, Type.DECIMAL32), - Type.DECIMAL64, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( - Operator.DIVIDE.getName(), - Lists.newArrayList(Type.DECIMAL64, Type.DECIMAL128), - Type.DECIMAL64, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( - Operator.DIVIDE.getName(), - Lists.newArrayList(Type.DECIMAL128, Type.DECIMAL128), - Type.DECIMAL128, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( - Operator.DIVIDE.getName(), - Lists.newArrayList(Type.DECIMAL128, Type.DECIMAL32), - Type.DECIMAL128, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( - Operator.DIVIDE.getName(), - Lists.newArrayList(Type.DECIMAL128, Type.DECIMAL64), - Type.DECIMAL128, Function.NullableMode.ALWAYS_NULLABLE)); - - // MOD(), FACTORIAL(), BITAND(), BITOR(), BITXOR(), and BITNOT() are registered as - // builtins, see palo_functions.py - for (Type t : Type.getIntegerTypes()) { - functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( - Operator.INT_DIVIDE.getName(), Lists.newArrayList(t, t), - t, Function.NullableMode.ALWAYS_NULLABLE)); - } - // init vec build function for (int i = 0; i < Type.getNumericTypes().size(); i++) { Type t1 = Type.getNumericTypes().get(i); @@ -174,81 +112,81 @@ public class ArithmeticExpr extends Expr { Type retType = Type.getNextNumType(Type.getAssignmentCompatibleType(t1, t2, false)); NullableMode mode = retType.isDecimalV3() ? NullableMode.CUSTOM : NullableMode.DEPEND_ON_ARGUMENT; - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.MULTIPLY.getName(), Lists.newArrayList(t1, t2), retType, mode)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.ADD.getName(), Lists.newArrayList(t1, t2), retType, mode)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.SUBTRACT.getName(), Lists.newArrayList(t1, t2), retType, mode)); } } - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.DIVIDE.getName(), Lists.newArrayList(Type.DOUBLE, Type.DOUBLE), Type.DOUBLE, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.DIVIDE.getName(), Lists.newArrayList(Type.MAX_DECIMALV2_TYPE, Type.MAX_DECIMALV2_TYPE), Type.MAX_DECIMALV2_TYPE, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.DIVIDE.getName(), Lists.newArrayList(Type.DECIMAL32, Type.DECIMAL32), Type.DECIMAL32, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.DIVIDE.getName(), Lists.newArrayList(Type.DECIMAL32, Type.DECIMAL64), Type.DECIMAL32, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.DIVIDE.getName(), Lists.newArrayList(Type.DECIMAL32, Type.DECIMAL128), Type.DECIMAL32, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.DIVIDE.getName(), Lists.newArrayList(Type.DECIMAL64, Type.DECIMAL64), Type.DECIMAL64, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.DIVIDE.getName(), Lists.newArrayList(Type.DECIMAL64, Type.DECIMAL128), Type.DECIMAL64, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.DIVIDE.getName(), Lists.newArrayList(Type.DECIMAL128, Type.DECIMAL128), Type.DECIMAL128, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.DIVIDE.getName(), Lists.newArrayList(Type.DECIMAL64, Type.DECIMAL32), Type.DECIMAL32, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.DIVIDE.getName(), Lists.newArrayList(Type.DECIMAL128, Type.DECIMAL64), Type.DECIMAL64, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.DIVIDE.getName(), Lists.newArrayList(Type.DECIMAL128, Type.DECIMAL32), Type.DECIMAL128, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.MOD.getName(), Lists.newArrayList(Type.FLOAT, Type.FLOAT), Type.FLOAT, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.MOD.getName(), Lists.newArrayList(Type.DOUBLE, Type.DOUBLE), Type.DOUBLE, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.MOD.getName(), Lists.newArrayList(Type.MAX_DECIMALV2_TYPE, Type.MAX_DECIMALV2_TYPE), Type.MAX_DECIMALV2_TYPE, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.MOD.getName(), Lists.newArrayList(Type.DECIMAL32, Type.DECIMAL32), Type.DECIMAL32, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.MOD.getName(), Lists.newArrayList(Type.DECIMAL64, Type.DECIMAL64), Type.DECIMAL64, Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.MOD.getName(), Lists.newArrayList(Type.DECIMAL128, Type.DECIMAL128), Type.DECIMAL128, Function.NullableMode.ALWAYS_NULLABLE)); @@ -258,11 +196,11 @@ public class ArithmeticExpr extends Expr { for (int j = 0; j < Type.getIntegerTypes().size(); j++) { Type t2 = Type.getIntegerTypes().get(j); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.INT_DIVIDE.getName(), Lists.newArrayList(t1, t2), Type.getAssignmentCompatibleType(t1, t2, false), Function.NullableMode.ALWAYS_NULLABLE)); - functionSet.addBuiltin(ScalarFunction.createVecBuiltinOperator( + functionSet.addBuiltin(ScalarFunction.createBuiltinOperator( Operator.MOD.getName(), Lists.newArrayList(t1, t2), Type.getAssignmentCompatibleType(t1, t2, false), Function.NullableMode.ALWAYS_NULLABLE)); diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java index f07a3f48fc..8cc25b9b27 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/CastExpr.java @@ -181,51 +181,16 @@ public class CastExpr extends Expr { return targetTypeDef; } - private static boolean disableRegisterCastingFunction(Type fromType, Type toType) { - // Disable casting from boolean to decimal or datetime or date - if (fromType.isBoolean() && toType.isDateType()) { - return true; - } - - // Disable casting operation of hll/bitmap/quantile_state - if (fromType.isObjectStored() || toType.isObjectStored()) { - return true; - } - // Disable no-op casting - return fromType.equals(toType) && !fromType.isDecimalV3() && !fromType.isDatetimeV2(); - } - public static void initBuiltins(FunctionSet functionSet) { - for (Type fromType : Type.getSupportedTypes()) { + for (Type fromType : Type.getTrivialTypes()) { if (fromType.isNull()) { continue; } - for (Type toType : Type.getSupportedTypes()) { - if (toType.isNull() || disableRegisterCastingFunction(fromType, toType)) { - continue; - } - String beClass = toType.isDecimalV2() || fromType.isDecimalV2() - ? "DecimalV2Operators" : "CastFunctions"; - if (fromType.isTime()) { - beClass = "TimeOperators"; - } - String typeName = Function.getUdfTypeName(toType.getPrimitiveType()); - // only refactor date/datetime for vectorized engine. - if (toType.getPrimitiveType() == PrimitiveType.DATE) { - typeName = "date_val"; - } - if (toType.getPrimitiveType() == PrimitiveType.DATEV2) { - typeName = "datev2_val"; - } - if (toType.getPrimitiveType() == PrimitiveType.DATETIMEV2) { - typeName = "datetimev2_val"; - } - String beSymbol = "doris::" + beClass + "::cast_to_" - + typeName; + for (Type toType : Type.getTrivialTypes()) { functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltin(getFnName(toType), toType, TYPE_NULLABLE_MODE.get(Pair.of(fromType, toType)), Lists.newArrayList(fromType), false, - beSymbol, null, null, true)); + null, null, null, true)); } } } diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionArgs.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionArgs.java deleted file mode 100644 index cb00b06923..0000000000 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/FunctionArgs.java +++ /dev/null @@ -1,51 +0,0 @@ -// Licensed to the Apache Software Foundation (ASF) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The ASF licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. -// This file is copied from -// https://github.com/apache/impala/blob/branch-2.9.0/fe/src/main/java/org/apache/impala/FunctionArgs.java -// and modified by Doris - -package org.apache.doris.analysis; - -import org.apache.doris.catalog.Type; - -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; - -import java.util.ArrayList; - -// Wrapper class around argument types and if it has varArgs -public class FunctionArgs { - public final ArrayList argTypes; - public boolean hasVarArgs; - - public FunctionArgs() { - argTypes = Lists.newArrayList(); - hasVarArgs = false; - } - - public FunctionArgs(ArrayList argTypes, boolean varArgs) { - this.argTypes = argTypes; - this.hasVarArgs = varArgs; - if (varArgs) { - Preconditions.checkState(argTypes.size() > 0); - } - } - - public void setHasVarArgs(boolean b) { - hasVarArgs = b; - } -} diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/InPredicate.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/InPredicate.java index 2608c060d5..dcc8c694b5 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/InPredicate.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/InPredicate.java @@ -54,8 +54,6 @@ public class InPredicate extends Predicate { private static final String IN_ITERATE = "in_iterate"; private static final String NOT_IN_ITERATE = "not_in_iterate"; private final boolean isNotIn; - private static final String IN = "in"; - private static final String NOT_IN = "not_in"; private static final NullLiteral NULL_LITERAL = new NullLiteral(); @@ -64,31 +62,29 @@ public class InPredicate extends Predicate { if (t.isNull()) { continue; } - // TODO we do not support codegen for CHAR and the In predicate must be codegened + // TODO we do not support codegen for CHAR and the In predicate must be + // codegened // because it has variable number of arguments. This will force CHARs to be - // cast up to strings; meaning that "in" comparisons will not have CHAR comparison + // cast up to strings; meaning that "in" comparisons will not have CHAR + // comparison // semantics. if (t.getPrimitiveType() == PrimitiveType.CHAR) { continue; } - String typeString = Function.getUdfTypeName(t.getPrimitiveType()); - functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltin(IN_ITERATE, Type.BOOLEAN, Lists.newArrayList(t, t), true, - "doris::InPredicate::in_iterate", null, null, false)); + null, null, null, false)); functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltin(NOT_IN_ITERATE, Type.BOOLEAN, Lists.newArrayList(t, t), true, - "doris::InPredicate::not_in_iterate", null, null, false)); + null, null, null, false)); - String prepareFn = "doris::InPredicate::set_lookup_prepare_" + typeString; - String closeFn = "doris::InPredicate::set_lookup_close_" + typeString; functionSet.addBuiltin(ScalarFunction.createBuiltin(IN_SET_LOOKUP, Type.BOOLEAN, Lists.newArrayList(t, t), true, - "doris::InPredicate::in_set_lookup", prepareFn, closeFn, false)); + null, null, null, false)); functionSet.addBuiltin(ScalarFunction.createBuiltin(NOT_IN_SET_LOOKUP, Type.BOOLEAN, Lists.newArrayList(t, t), true, - "doris::InPredicate::not_in_set_lookup", prepareFn, closeFn, false)); + null, null, null, false)); } } @@ -150,7 +146,7 @@ public class InPredicate extends Predicate { } public List getListChildren() { - return children.subList(1, children.size()); + return children.subList(1, children.size()); } public boolean isNotIn() { @@ -176,7 +172,8 @@ public class InPredicate extends Predicate { super.analyzeImpl(analyzer); if (contains(Subquery.class)) { - // An [NOT] IN predicate with a subquery must contain two children, the second of + // An [NOT] IN predicate with a subquery must contain two children, the second + // of // which is a Subquery. if (children.size() != 2 || !(getChild(1) instanceof Subquery)) { throw new AnalysisException("Unsupported IN predicate with a subquery: " + toSql()); @@ -219,12 +216,14 @@ public class InPredicate extends Predicate { } } boolean useSetLookup = allConstant; - // Only lookup fn_ if all subqueries have been rewritten. If the second child is a + // Only lookup fn_ if all subqueries have been rewritten. If the second child is + // a // subquery, it will have type ArrayType, which cannot be resolved to a builtin // function and will fail analysis. - Type[] argTypes = {getChild(0).type, getChild(1).type}; + Type[] argTypes = { getChild(0).type, getChild(1).type }; if (useSetLookup) { - // fn = getBuiltinFunction(analyzer, isNotIn ? NOT_IN_SET_LOOKUP : IN_SET_LOOKUP, + // fn = getBuiltinFunction(analyzer, isNotIn ? NOT_IN_SET_LOOKUP : + // IN_SET_LOOKUP, // argTypes, Function.CompareMode.IS_NONSTRICT_SUPERTYPE_OF); opcode = isNotIn ? TExprOpcode.FILTER_NOT_IN : TExprOpcode.FILTER_IN; } else { diff --git a/fe/fe-core/src/main/java/org/apache/doris/analysis/IsNullPredicate.java b/fe/fe-core/src/main/java/org/apache/doris/analysis/IsNullPredicate.java index 545bfc5185..087b4a7c39 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/analysis/IsNullPredicate.java +++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/IsNullPredicate.java @@ -41,38 +41,26 @@ public class IsNullPredicate extends Predicate { if (t.isNull()) { continue; } - String isNullSymbol; - if (t == Type.BOOLEAN) { - isNullSymbol = "_ZN5doris15IsNullPredicate7is_nullIN9doris_udf10BooleanValE" - + "EES3_PNS2_15FunctionContextERKT_"; - } else { - String udfType = Function.getUdfType(t.getPrimitiveType()); - isNullSymbol = "_ZN5doris15IsNullPredicate7is_nullIN9doris_udf" - + udfType.length() + udfType - + "EEENS2_10BooleanValEPNS2_15FunctionContextERKT_"; - } - functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltinOperator(IS_NULL, isNullSymbol, + functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltinOperator(IS_NULL, null, Lists.newArrayList(t), Type.BOOLEAN, NullableMode.ALWAYS_NOT_NULLABLE)); - String isNotNullSymbol = isNullSymbol.replace("7is_null", "11is_not_null"); functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltinOperator(IS_NOT_NULL, - isNotNullSymbol, Lists.newArrayList(t), Type.BOOLEAN, NullableMode.ALWAYS_NOT_NULLABLE)); + null, Lists.newArrayList(t), Type.BOOLEAN, NullableMode.ALWAYS_NOT_NULLABLE)); // for array type for (Type complexType : Lists.newArrayList(Type.ARRAY, Type.MAP, Type.GENERIC_STRUCT)) { - functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltinOperator(IS_NULL, isNullSymbol, + functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltinOperator(IS_NULL, null, Lists.newArrayList(complexType), Type.BOOLEAN, NullableMode.ALWAYS_NOT_NULLABLE)); functionSet.addBuiltinBothScalaAndVectorized(ScalarFunction.createBuiltinOperator(IS_NOT_NULL, - isNotNullSymbol, Lists.newArrayList(complexType), Type.BOOLEAN, + null, Lists.newArrayList(complexType), Type.BOOLEAN, NullableMode.ALWAYS_NOT_NULLABLE)); } } } - private final boolean isNotNull; public IsNullPredicate(Expr e, boolean isNotNull) { diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/AggregateFunction.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/AggregateFunction.java index c3ae7709ed..7e3179da6e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/AggregateFunction.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/AggregateFunction.java @@ -215,16 +215,6 @@ public class AggregateFunction extends Function { this.returnsNonNullOnEmpty = returnsNonNullOnEmpty; } - public static AggregateFunction createBuiltin(String name, - List argTypes, Type retType, Type intermediateType, - String initFnSymbol, String updateFnSymbol, String mergeFnSymbol, - String serializeFnSymbol, String finalizeFnSymbol, boolean ignoresDistinct, - boolean isAnalyticFn, boolean returnsNonNullOnEmpty) { - return createBuiltin(name, argTypes, retType, intermediateType, - initFnSymbol, updateFnSymbol, mergeFnSymbol, - serializeFnSymbol, finalizeFnSymbol, ignoresDistinct, isAnalyticFn, returnsNonNullOnEmpty, false); - } - public static AggregateFunction createBuiltin(String name, List argTypes, Type retType, Type intermediateType, String initFnSymbol, String updateFnSymbol, String mergeFnSymbol, @@ -235,18 +225,6 @@ public class AggregateFunction extends Function { ignoresDistinct, isAnalyticFn, returnsNonNullOnEmpty, vectorized); } - public static AggregateFunction createBuiltin(String name, - List argTypes, Type retType, Type intermediateType, - String initFnSymbol, String updateFnSymbol, String mergeFnSymbol, - String serializeFnSymbol, String getValueFnSymbol, String removeFnSymbol, - String finalizeFnSymbol, boolean ignoresDistinct, boolean isAnalyticFn, - boolean returnsNonNullOnEmpty) { - return createBuiltin(name, argTypes, retType, intermediateType, - initFnSymbol, updateFnSymbol, mergeFnSymbol, - serializeFnSymbol, getValueFnSymbol, removeFnSymbol, - finalizeFnSymbol, ignoresDistinct, isAnalyticFn, returnsNonNullOnEmpty, false); - } - public static AggregateFunction createBuiltin(String name, List argTypes, Type retType, Type intermediateType, String initFnSymbol, String updateFnSymbol, String mergeFnSymbol, @@ -259,17 +237,6 @@ public class AggregateFunction extends Function { finalizeFnSymbol, ignoresDistinct, isAnalyticFn, returnsNonNullOnEmpty, vectorized); } - public static AggregateFunction createBuiltin(String name, - List argTypes, Type retType, Type intermediateType, boolean hasVarArgs, - String initFnSymbol, String updateFnSymbol, String mergeFnSymbol, - String serializeFnSymbol, String getValueFnSymbol, String removeFnSymbol, - String finalizeFnSymbol, boolean ignoresDistinct, boolean isAnalyticFn, - boolean returnsNonNullOnEmpty) { - return createBuiltin(name, argTypes, retType, intermediateType, hasVarArgs, initFnSymbol, updateFnSymbol, - mergeFnSymbol, serializeFnSymbol, getValueFnSymbol, removeFnSymbol, finalizeFnSymbol, ignoresDistinct, - isAnalyticFn, returnsNonNullOnEmpty, false); - } - public static AggregateFunction createBuiltin(String name, List argTypes, Type retType, Type intermediateType, boolean hasVarArgs, String initFnSymbol, String updateFnSymbol, String mergeFnSymbol, @@ -300,7 +267,7 @@ public class AggregateFunction extends Function { String getValueFnSymbol, String finalizeFnSymbol) { return createAnalyticBuiltin(name, argTypes, retType, intermediateType, initFnSymbol, updateFnSymbol, removeFnSymbol, getValueFnSymbol, finalizeFnSymbol, - true, false); + true, true); } public static AggregateFunction createAnalyticBuiltin(String name, @@ -328,6 +295,22 @@ public class AggregateFunction extends Function { return fn; } + public AggregateFunction(AggregateFunction other) { + super(other); + if (other == null) { + return; + } + ignoresDistinct = other.ignoresDistinct; + isAnalyticFn = other.isAnalyticFn; + isAggregateFn = other.isAggregateFn; + returnsNonNullOnEmpty = other.returnsNonNullOnEmpty; + } + + @Override + public Function clone() { + return new AggregateFunction(this); + } + // Used to create UDAF public AggregateFunction(FunctionName fnName, Type[] argTypes, Type retType, boolean hasVarArgs, Type intermediateType, URI location, diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Function.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Function.java index ce3f77cb09..0ae8247579 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Function.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Function.java @@ -122,7 +122,7 @@ public class Function implements Writable { protected NullableMode nullableMode = NullableMode.DEPEND_ON_ARGUMENT; - protected boolean vectorized = false; + protected boolean vectorized = true; // library's checksum to make sure all backends use one library to serve user's request protected String checksum = ""; @@ -135,7 +135,7 @@ public class Function implements Writable { } public Function(FunctionName name, List args, Type retType, boolean varArgs) { - this(0, name, args, retType, varArgs, false, NullableMode.DEPEND_ON_ARGUMENT); + this(0, name, args, retType, varArgs, true, NullableMode.DEPEND_ON_ARGUMENT); } public Function(FunctionName name, List args, Type retType, boolean varArgs, boolean vectorized) { @@ -189,6 +189,10 @@ public class Function implements Writable { this.checksum = other.checksum; } + public Function clone() { + return new Function(this); + } + public FunctionName getFunctionName() { return name; } @@ -540,108 +544,6 @@ public class Function implements Writable { return ""; } - public static String getUdfTypeName(PrimitiveType t) { - switch (t) { - case BOOLEAN: - return "boolean_val"; - case TINYINT: - return "tiny_int_val"; - case SMALLINT: - return "small_int_val"; - case INT: - return "int_val"; - case BIGINT: - return "big_int_val"; - case LARGEINT: - return "large_int_val"; - case FLOAT: - return "float_val"; - case DOUBLE: - case TIME: - case TIMEV2: - return "double_val"; - case VARCHAR: - case CHAR: - case HLL: - case BITMAP: - case QUANTILE_STATE: - case STRING: - return "string_val"; - case JSONB: - return "jsonb_val"; - case DATE: - case DATETIME: - return "datetime_val"; - case DATEV2: - return "datev2_val"; - case DATETIMEV2: - return "datetimev2_val"; - case DECIMALV2: - return "decimalv2_val"; - case DECIMAL32: - return "decimal32_val"; - case DECIMAL64: - return "decimal64_val"; - case DECIMAL128: - return "decimal128_val"; - default: - Preconditions.checkState(false, t.toString()); - return ""; - } - } - - public static String getUdfType(PrimitiveType t) { - switch (t) { - case NULL_TYPE: - return "AnyVal"; - case BOOLEAN: - return "BooleanVal"; - case TINYINT: - return "TinyIntVal"; - case SMALLINT: - return "SmallIntVal"; - case INT: - return "IntVal"; - case BIGINT: - return "BigIntVal"; - case LARGEINT: - return "LargeIntVal"; - case FLOAT: - return "FloatVal"; - case DOUBLE: - case TIME: - case TIMEV2: - return "DoubleVal"; - case VARCHAR: - case CHAR: - case HLL: - case BITMAP: - case QUANTILE_STATE: - case STRING: - return "StringVal"; - case JSONB: - return "JsonbVal"; - case DATE: - case DATETIME: - return "DateTimeVal"; - case DATEV2: - return "DateV2Val"; - case DATETIMEV2: - return "DateTimeV2Val"; - case DECIMALV2: - return "DecimalV2Val"; - case DECIMAL32: - return "Decimal32Val"; - case DECIMAL64: - return "Decimal64Val"; - case DECIMAL128: - return "Decimal128Val"; - default: - Preconditions.checkState(false, t.toString()); - return ""; - } - } - public static Function getFunction(List fns, Function desc, CompareMode mode) { if (fns == null) { return null; 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 3b8818bc95..a879c14ae3 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 @@ -51,7 +51,6 @@ public class FunctionSet { // This includes both UDFs and UDAs. Updates are made thread safe by synchronizing // on this map. Functions are sorted in a canonical order defined by // FunctionResolutionOrder. - private final HashMap> functions; private final HashMap> vectorizedFunctions; private final HashMap> tableFunctions; // For most build-in functions, it will return NullLiteral when params contain NullLiteral. @@ -69,7 +68,6 @@ public class FunctionSet { private boolean inited = false; public FunctionSet() { - functions = Maps.newHashMap(); vectorizedFunctions = Maps.newHashMap(); tableFunctions = Maps.newHashMap(); } @@ -248,69 +246,6 @@ public class FunctionSet { "3maxIN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextERKT_PS6_") .build(); - private static final Map ANY_INIT_SYMBOL = - ImmutableMap.builder() - .put(Type.BOOLEAN, - "8any_initIN9doris_udf10BooleanValEEEvPNS2_15FunctionContextEPT_") - .put(Type.TINYINT, - "8any_initIN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextEPT_") - .put(Type.SMALLINT, - "8any_initIN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextEPT_") - .put(Type.INT, - "8any_initIN9doris_udf6IntValEEEvPNS2_15FunctionContextEPT_") - .put(Type.BIGINT, - "8any_initIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextEPT_") - .put(Type.FLOAT, - "8any_initIN9doris_udf8FloatValEEEvPNS2_15FunctionContextEPT_") - .put(Type.DOUBLE, - "8any_initIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextEPT_") - // .put(Type.CHAR, - // "3anyIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.VARCHAR, - "8any_initIN9doris_udf9StringValEEEvPNS2_15FunctionContextEPT_") - .put(Type.STRING, - "8any_initIN9doris_udf9StringValEEEvPNS2_15FunctionContextEPT_") - .put(Type.DATE, - "8any_initIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextEPT_") - .put(Type.DATETIME, - "8any_initIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextEPT_") - .put(Type.MAX_DECIMALV2_TYPE, - "8any_initIN9doris_udf12DecimalV2ValEEEvPNS2_15FunctionContextEPT_") - .put(Type.LARGEINT, - "8any_initIN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextEPT_") - .build(); - - private static final Map ANY_UPDATE_SYMBOL = - ImmutableMap.builder() - .put(Type.BOOLEAN, - "3anyIN9doris_udf10BooleanValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.TINYINT, - "3anyIN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.SMALLINT, - "3anyIN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.INT, - "3anyIN9doris_udf6IntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.BIGINT, - "3anyIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.FLOAT, - "3anyIN9doris_udf8FloatValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.DOUBLE, - "3anyIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextERKT_PS6_") - // .put(Type.CHAR, - // "3anyIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.VARCHAR, - "3anyIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.STRING, - "3anyIN9doris_udf9StringValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.DATE, - "3anyIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.DATETIME, - "3anyIN9doris_udf11DateTimeValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.MAX_DECIMALV2_TYPE, - "3anyIN9doris_udf12DecimalV2ValEEEvPNS2_15FunctionContextERKT_PS6_") - .put(Type.LARGEINT, - "3anyIN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextERKT_PS6_") - .build(); private static final Map MULTI_DISTINCT_SUM_RETURN_TYPE = ImmutableMap.builder() @@ -480,24 +415,6 @@ public class FunctionSet { "16knuth_var_updateEPN9doris_udf15FunctionContextERKNS1_12DecimalV2ValEPNS1_9StringValE") .build(); - - private static final Map STDDEV_REMOVE_SYMBOL = - ImmutableMap.builder() - .put(Type.TINYINT, - "16knuth_var_removeIN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .put(Type.SMALLINT, - "16knuth_var_removeIN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .put(Type.INT, - "16knuth_var_removeIN9doris_udf6IntValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .put(Type.BIGINT, - "16knuth_var_removeIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .put(Type.FLOAT, - "16knuth_var_removeIN9doris_udf8FloatValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .put(Type.DOUBLE, - "16knuth_var_removeIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") - .put(Type.MAX_DECIMALV2_TYPE, - "16knuth_var_removeEPN9doris_udf15FunctionContextERKNS1_12DecimalV2ValEPNS1_9StringValE") - .build(); private static final Map STDDEV_MERGE_SYMBOL = ImmutableMap.builder() .put(Type.TINYINT, @@ -534,24 +451,6 @@ public class FunctionSet { "31decimalv2_knuth_stddev_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") .build(); - private static final Map STDDEV_GET_VALUE_SYMBOL = - ImmutableMap.builder() - .put(Type.TINYINT, - "22knuth_stddev_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.SMALLINT, - "22knuth_stddev_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.INT, - "22knuth_stddev_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.BIGINT, - "22knuth_stddev_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.FLOAT, - "22knuth_stddev_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.DOUBLE, - "22knuth_stddev_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.MAX_DECIMALV2_TYPE, - "32decimalv2_knuth_stddev_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .build(); - private static final Map STDDEV_POP_FINALIZE_SYMBOL = ImmutableMap.builder() .put(Type.TINYINT, @@ -570,23 +469,6 @@ public class FunctionSet { "35decimalv2_knuth_stddev_pop_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") .build(); - private static final Map STDDEV_POP_GET_VALUE_SYMBOL = - ImmutableMap.builder() - .put(Type.TINYINT, - "26knuth_stddev_pop_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.SMALLINT, - "26knuth_stddev_pop_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.INT, - "26knuth_stddev_pop_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.BIGINT, - "26knuth_stddev_pop_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.FLOAT, - "26knuth_stddev_pop_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.DOUBLE, - "26knuth_stddev_pop_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.MAX_DECIMALV2_TYPE, - "36decimalv2_knuth_stddev_pop_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .build(); private static final Map VAR_FINALIZE_SYMBOL = ImmutableMap.builder() @@ -606,23 +488,6 @@ public class FunctionSet { "28decimalv2_knuth_var_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") .build(); - private static final Map VAR_GET_VALUE_SYMBOL = - ImmutableMap.builder() - .put(Type.TINYINT, - "19knuth_var_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.SMALLINT, - "19knuth_var_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.INT, - "19knuth_var_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.BIGINT, - "19knuth_var_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.FLOAT, - "19knuth_var_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.DOUBLE, - "19knuth_var_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.MAX_DECIMALV2_TYPE, - "29decimalv2_knuth_var_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .build(); private static final Map VAR_POP_FINALIZE_SYMBOL = ImmutableMap.builder() @@ -642,23 +507,6 @@ public class FunctionSet { "32decimalv2_knuth_var_pop_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE") .build(); - private static final Map VAR_POP_GET_VALUE_SYMBOL = - ImmutableMap.builder() - .put(Type.TINYINT, - "23knuth_var_pop_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.SMALLINT, - "23knuth_var_pop_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.INT, - "23knuth_var_pop_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.BIGINT, - "23knuth_var_pop_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.FLOAT, - "23knuth_var_pop_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.DOUBLE, - "23knuth_var_pop_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .put(Type.MAX_DECIMALV2_TYPE, - "33decimalv2_knuth_var_pop_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE") - .build(); public static final String HLL_HASH = "hll_hash"; public static final String HLL_UNION = "hll_union"; @@ -698,17 +546,6 @@ public class FunctionSet { "10hll_updateIN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE") .build(); - - private static final Map HLL_UNION_AGG_UPDATE_SYMBOL = - ImmutableMap.builder() - .put(Type.VARCHAR, - "_ZN5doris12HllFunctions9hll_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_") - .put(Type.STRING, - "_ZN5doris12HllFunctions9hll_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_") - .put(Type.HLL, - "_ZN5doris12HllFunctions9hll_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_") - .build(); - private static final Map OFFSET_FN_INIT_SYMBOL = ImmutableMap.builder() .put(Type.BOOLEAN, @@ -946,92 +783,6 @@ public class FunctionSet { public static final String HISTOGRAM = "histogram"; public static final String HIST = "hist"; - private static final Map ORTHOGONAL_BITMAP_INTERSECT_INIT_SYMBOL = - ImmutableMap.builder() - .put(Type.TINYINT, - "_ZN5doris15BitmapFunctions32orthogonal_bitmap_intersect_initIaN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.SMALLINT, - "_ZN5doris15BitmapFunctions32orthogonal_bitmap_intersect_initIsN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.INT, - "_ZN5doris15BitmapFunctions32orthogonal_bitmap_intersect_initIiN9doris_udf6IntValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.BIGINT, - "_ZN5doris15BitmapFunctions32orthogonal_bitmap_intersect_initIlN9doris_udf9BigIntValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.FLOAT, - "_ZN5doris15BitmapFunctions32orthogonal_bitmap_intersect_initIfN9doris_udf8FloatValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.DOUBLE, - "_ZN5doris15BitmapFunctions32orthogonal_bitmap_intersect_initIdN9doris_udf9DoubleValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.CHAR, - "_ZN5doris15BitmapFunctions32orthogonal_bitmap_intersect_initINS_11StringValueEN9doris_udf9StringValEEEvPNS3_15FunctionContextEPS4_") - .put(Type.VARCHAR, - "_ZN5doris15BitmapFunctions32orthogonal_bitmap_intersect_initINS_11StringValueEN9doris_udf9StringValEEEvPNS3_15FunctionContextEPS4_") - .put(Type.STRING, - "_ZN5doris15BitmapFunctions32orthogonal_bitmap_intersect_initINS_11StringValueEN9doris_udf9StringValEEEvPNS3_15FunctionContextEPS4_") - .build(); - - private static final Map ORTHOGONAL_BITMAP_INTERSECT_SERIALIZE_SYMBOL = - ImmutableMap.builder() - .put(Type.TINYINT, - "_ZN5doris15BitmapFunctions37orthogonal_bitmap_intersect_serializeIaEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.SMALLINT, - "_ZN5doris15BitmapFunctions37orthogonal_bitmap_intersect_serializeIsEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.INT, - "_ZN5doris15BitmapFunctions37orthogonal_bitmap_intersect_serializeIiEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.BIGINT, - "_ZN5doris15BitmapFunctions37orthogonal_bitmap_intersect_serializeIlEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.FLOAT, - "_ZN5doris15BitmapFunctions37orthogonal_bitmap_intersect_serializeIfEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.DOUBLE, - "_ZN5doris15BitmapFunctions37orthogonal_bitmap_intersect_serializeIdEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.CHAR, - "_ZN5doris15BitmapFunctions37orthogonal_bitmap_intersect_serializeINS_11StringValueEEEN9doris_udf9StringValEPNS3_15FunctionContextERKS4_") - .put(Type.VARCHAR, - "_ZN5doris15BitmapFunctions37orthogonal_bitmap_intersect_serializeINS_11StringValueEEEN9doris_udf9StringValEPNS3_15FunctionContextERKS4_") - .put(Type.STRING, - "_ZN5doris15BitmapFunctions37orthogonal_bitmap_intersect_serializeINS_11StringValueEEEN9doris_udf9StringValEPNS3_15FunctionContextERKS4_") - .build(); - private static final Map ORTHOGONAL_BITMAP_INTERSECT_COUNT_INIT_SYMBOL = - ImmutableMap.builder() - .put(Type.TINYINT, - "_ZN5doris15BitmapFunctions38orthogonal_bitmap_intersect_count_initIaN9doris_udf10TinyIntValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.SMALLINT, - "_ZN5doris15BitmapFunctions38orthogonal_bitmap_intersect_count_initIsN9doris_udf11SmallIntValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.INT, - "_ZN5doris15BitmapFunctions38orthogonal_bitmap_intersect_count_initIiN9doris_udf6IntValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.BIGINT, - "_ZN5doris15BitmapFunctions38orthogonal_bitmap_intersect_count_initIlN9doris_udf9BigIntValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.FLOAT, - "_ZN5doris15BitmapFunctions38orthogonal_bitmap_intersect_count_initIfN9doris_udf8FloatValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.DOUBLE, - "_ZN5doris15BitmapFunctions38orthogonal_bitmap_intersect_count_initIdN9doris_udf9DoubleValEEEvPNS2_15FunctionContextEPNS2_9StringValE") - .put(Type.CHAR, - "_ZN5doris15BitmapFunctions38orthogonal_bitmap_intersect_count_initINS_11StringValueEN9doris_udf9StringValEEEvPNS3_15FunctionContextEPS4_") - .put(Type.VARCHAR, - "_ZN5doris15BitmapFunctions38orthogonal_bitmap_intersect_count_initINS_11StringValueEN9doris_udf9StringValEEEvPNS3_15FunctionContextEPS4_") - .put(Type.STRING, - "_ZN5doris15BitmapFunctions38orthogonal_bitmap_intersect_count_initINS_11StringValueEN9doris_udf9StringValEEEvPNS3_15FunctionContextEPS4_") - .build(); - private static final Map ORTHOGONAL_BITMAP_INTERSECT_COUNT_SERIALIZE_SYMBOL = - ImmutableMap.builder() - .put(Type.TINYINT, - "_ZN5doris15BitmapFunctions43orthogonal_bitmap_intersect_count_serializeIaEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.SMALLINT, - "_ZN5doris15BitmapFunctions43orthogonal_bitmap_intersect_count_serializeIsEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.INT, - "_ZN5doris15BitmapFunctions43orthogonal_bitmap_intersect_count_serializeIiEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.BIGINT, - "_ZN5doris15BitmapFunctions43orthogonal_bitmap_intersect_count_serializeIlEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.FLOAT, - "_ZN5doris15BitmapFunctions43orthogonal_bitmap_intersect_count_serializeIfEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.DOUBLE, - "_ZN5doris15BitmapFunctions43orthogonal_bitmap_intersect_count_serializeIdEEN9doris_udf9StringValEPNS2_15FunctionContextERKS3_") - .put(Type.CHAR, - "_ZN5doris15BitmapFunctions43orthogonal_bitmap_intersect_count_serializeINS_11StringValueEEEN9doris_udf9StringValEPNS3_15FunctionContextERKS4_") - .put(Type.VARCHAR, - "_ZN5doris15BitmapFunctions43orthogonal_bitmap_intersect_count_serializeINS_11StringValueEEEN9doris_udf9StringValEPNS3_15FunctionContextERKS4_") - .put(Type.STRING, - "_ZN5doris15BitmapFunctions43orthogonal_bitmap_intersect_count_serializeINS_11StringValueEEEN9doris_udf9StringValEPNS3_15FunctionContextERKS4_") - .build(); - private static final Map BITMAP_UNION_INT_SYMBOL = ImmutableMap.builder() .put(Type.TINYINT, @@ -1220,10 +971,8 @@ public class FunctionSet { List fns; if (isTableFunction) { fns = tableFunctions.get(desc.functionName()); - } else if (desc.isVectorized()) { - fns = vectorizedFunctions.get(desc.functionName()); } else { - fns = functions.get(desc.functionName()); + fns = vectorizedFunctions.get(desc.functionName()); } if (fns == null) { return null; @@ -1454,7 +1203,7 @@ public class FunctionSet { } public Function getFunction(String signatureString, boolean vectorized) { - for (List fns : vectorized ? vectorizedFunctions.values() : functions.values()) { + for (List fns : vectorizedFunctions.values()) { for (Function f : fns) { if (f.signatureString().equals(signatureString)) { return f; @@ -1469,14 +1218,10 @@ public class FunctionSet { if (getFunction(fn, Function.CompareMode.IS_INDISTINGUISHABLE) != null) { return false; } - List fns = fn.isVectorized() ? vectorizedFunctions.get(fn.functionName()) : functions.get(fn.functionName()); + List fns = vectorizedFunctions.get(fn.functionName()); if (fns == null) { fns = Lists.newArrayList(); - if (fn.isVectorized()) { - vectorizedFunctions.put(fn.functionName(), fns); - } else { - functions.put(fn.functionName(), fns); - } + vectorizedFunctions.put(fn.functionName(), fns); } fns.add(fn); return true; @@ -1525,15 +1270,6 @@ public class FunctionSet { if (getFunction(fn, Function.CompareMode.IS_INDISTINGUISHABLE) != null) { return; } - Preconditions.checkState(!fn.isVectorized()); - - // add scala function - List fns = functions.get(fn.functionName()); - if (fns == null) { - fns = Lists.newArrayList(); - functions.put(fn.functionName(), fns); - } - fns.add(fn); // add vectorized function List vecFns = vectorizedFunctions.get(fn.functionName()); @@ -1541,12 +1277,7 @@ public class FunctionSet { vecFns = Lists.newArrayList(); vectorizedFunctions.put(fn.functionName(), vecFns); } - ScalarFunction scalarFunction = (ScalarFunction) fn; - vecFns.add(ScalarFunction.createVecBuiltin(scalarFunction.functionName(), scalarFunction.getPrepareFnSymbol(), - scalarFunction.getSymbolName(), scalarFunction.getCloseFnSymbol(), - Lists.newArrayList(scalarFunction.getArgs()), scalarFunction.hasVarArgs(), - scalarFunction.getReturnType(), scalarFunction.isUserVisible(), - scalarFunction.getNullableMode())); + vecFns.add(fn); } @@ -1578,14 +1309,6 @@ public class FunctionSet { // Type stringType[] = {Type.CHAR, Type.VARCHAR}; // count(*) - addBuiltin(AggregateFunction.createBuiltin(FunctionSet.COUNT, - new ArrayList(), 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)); // vectorized addBuiltin(AggregateFunction.createBuiltin(FunctionSet.COUNT, new ArrayList(), Type.BIGINT, Type.BIGINT, @@ -1617,21 +1340,6 @@ public class FunctionSet { null, false, true, true, true)); } - // windowFunnel - addBuiltin(AggregateFunction.createBuiltin(FunctionSet.WINDOW_FUNNEL, - Lists.newArrayList(Type.BIGINT, Type.STRING, Type.DATETIME, Type.BOOLEAN), - Type.INT, - Type.VARCHAR, - true, - prefix + "18window_funnel_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - prefix + "20window_funnel_updateEPN9doris_udf15FunctionContextERKNS1_9BigIntValERKNS1_9StringValERKNS1_11DateTimeValEiPKNS1_10BooleanValEPS7_", - prefix + "19window_funnel_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - prefix + "23window_funnel_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "", - "", - prefix + "22window_funnel_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - true, false, true)); - // Vectorization does not need symbol any more, we should clean it in the future. addBuiltin(AggregateFunction.createBuiltin(FunctionSet.WINDOW_FUNNEL, Lists.newArrayList(Type.BIGINT, Type.STRING, Type.DATETIME, Type.BOOLEAN), @@ -1761,7 +1469,34 @@ public class FunctionSet { "", true, false, true, true)); - for (Type t : Type.getSupportedTypes()) { + addBuiltin(AggregateFunction.createBuiltin("hll_union_agg", + Lists.newArrayList(Type.HLL), Type.BIGINT, Type.VARCHAR, + "", + "", + "", + "", + "", + null, + "", + true, true, true, true)); + addBuiltin(AggregateFunction.createBuiltin(HLL_UNION, + Lists.newArrayList(Type.HLL), Type.HLL, Type.HLL, + "", + "", + "", + "", + "", + true, false, true, true)); + addBuiltin(AggregateFunction.createBuiltin("hll_raw_agg", + Lists.newArrayList(Type.HLL), Type.HLL, Type.HLL, + "", + "", + "", + "", + "", + true, false, true, true)); + + for (Type t : Type.getTrivialTypes()) { if (t.isNull()) { continue; // NULL is handled through type promotion. } @@ -1769,14 +1504,6 @@ public class FunctionSet { continue; // promoted to STRING } // Count - 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)); // vectorized addBuiltin(AggregateFunction.createBuiltin(FunctionSet.COUNT, Lists.newArrayList(t), Type.BIGINT, Type.BIGINT, @@ -1789,17 +1516,6 @@ public class FunctionSet { // count in multi distinct if (t.equals(Type.CHAR) || t.equals(Type.VARCHAR)) { - addBuiltin(AggregateFunction.createBuiltin("multi_distinct_count", Lists.newArrayList(t), - Type.BIGINT, - Type.VARCHAR, - prefix + "26count_distinct_string_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - prefix + "28count_distinct_string_updateEPN9doris_udf15FunctionContextERNS1_9StringValEPS4_", - prefix + "27count_distinct_string_mergeEPN9doris_udf15FunctionContextERNS1_9StringValEPS4_", - prefix + "31count_distinct_string_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - null, - null, - prefix + "30count_distinct_string_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - false, true, true)); // vectorized addBuiltin(AggregateFunction.createBuiltin("multi_distinct_count", Lists.newArrayList(t), Type.BIGINT, @@ -1813,18 +1529,6 @@ public class FunctionSet { 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 + "26count_distinct_string_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - prefix + "28count_distinct_string_updateEPN9doris_udf15FunctionContextERNS1_9StringValEPS4_", - prefix + "27count_distinct_string_mergeEPN9doris_udf15FunctionContextERNS1_9StringValEPS4_", - prefix + "31count_distinct_string_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - null, - null, - prefix + "30count_distinct_string_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - false, true, true)); - // vectorized addBuiltin(AggregateFunction.createBuiltin("multi_distinct_count", Lists.newArrayList(t), Type.BIGINT, Type.STRING, @@ -1838,17 +1542,6 @@ public class FunctionSet { 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)) { - addBuiltin(AggregateFunction.createBuiltin("multi_distinct_count", Lists.newArrayList(t), - Type.BIGINT, - Type.VARCHAR, - 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)); // vectorized addBuiltin(AggregateFunction.createBuiltin("multi_distinct_count", Lists.newArrayList(t), Type.BIGINT, @@ -1862,31 +1555,8 @@ public class FunctionSet { prefix + MULTI_DISTINCT_COUNT_FINALIZE_SYMBOL.get(t), false, true, true, true)); } else if (t.equals(Type.DATE) || t.equals(Type.DATETIME)) { - addBuiltin(AggregateFunction.createBuiltin("multi_distinct_count", Lists.newArrayList(t), - Type.BIGINT, - Type.VARCHAR, - prefix + "24count_distinct_date_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - prefix + "26count_distinct_date_updateEPN9doris_udf15FunctionContextERNS1_11DateTimeValEPNS1_9StringValE", - prefix + "25count_distinct_date_mergeEPN9doris_udf15FunctionContextERNS1_9StringValEPS4_", - prefix + "29count_distinct_date_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - null, - null, - prefix + "28count_distinct_date_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - false, true, true)); - // vectorized // now we don't support datetime distinct } else if (t.equals(Type.MAX_DECIMALV2_TYPE)) { - addBuiltin(AggregateFunction.createBuiltin("multi_distinct_count", Lists.newArrayList(t), - Type.BIGINT, - Type.VARCHAR, - prefix + "36count_or_sum_distinct_decimalv2_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - prefix + "38count_or_sum_distinct_decimalv2_updateEPN9doris_udf15FunctionContextERNS1_12DecimalV2ValEPNS1_9StringValE", - prefix + "37count_or_sum_distinct_decimalv2_mergeEPN9doris_udf15FunctionContextERNS1_9StringValEPS4_", - prefix + "41count_or_sum_distinct_decimalv2_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - null, - null, - prefix + "33count_distinct_decimalv2_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - false, true, true)); // vectorized addBuiltin(AggregateFunction.createBuiltin("multi_distinct_count", Lists.newArrayList(t), Type.BIGINT, @@ -1942,19 +1612,6 @@ public class FunctionSet { // sum in multi distinct if (t.equals(Type.BIGINT) || t.equals(Type.LARGEINT) || t.equals(Type.DOUBLE)) { - addBuiltin(AggregateFunction.createBuiltin("multi_distinct_sum", Lists.newArrayList(t), - t, - Type.VARCHAR, - 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)); - - // vectorized addBuiltin(AggregateFunction.createBuiltin("multi_distinct_sum", Lists.newArrayList(t), t, t, @@ -1967,17 +1624,6 @@ public class FunctionSet { prefix + MULTI_DISTINCT_SUM_FINALIZE_SYMBOL.get(t), false, true, true, true)); } else if (t.equals(Type.MAX_DECIMALV2_TYPE)) { - addBuiltin(AggregateFunction.createBuiltin("multi_distinct_sum", Lists.newArrayList(t), - MULTI_DISTINCT_SUM_RETURN_TYPE.get(t), - Type.VARCHAR, - prefix + "36count_or_sum_distinct_decimalv2_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - prefix + "38count_or_sum_distinct_decimalv2_updateEPN9doris_udf15FunctionContextERNS1_12DecimalV2ValEPNS1_9StringValE", - prefix + "37count_or_sum_distinct_decimalv2_mergeEPN9doris_udf15FunctionContextERNS1_9StringValEPS4_", - prefix + "41count_or_sum_distinct_decimalv2_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - null, - null, - prefix + "31sum_distinct_decimalv2_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - false, true, true)); // vectorized addBuiltin(AggregateFunction.createBuiltin("multi_distinct_sum", Lists.newArrayList(t), MULTI_DISTINCT_SUM_RETURN_TYPE.get(t), @@ -2031,13 +1677,6 @@ public class FunctionSet { // 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)); - // vectorized addBuiltin(AggregateFunction.createBuiltin("min", Lists.newArrayList(t), t, t, prefix + MIN_INIT_SYMBOL.get(t), prefix + MIN_UPDATE_SYMBOL.get(t), @@ -2046,13 +1685,6 @@ public class FunctionSet { null, minMaxSerializeOrFinalize, 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)); - // vectorized addBuiltin(AggregateFunction.createBuiltin("max", Lists.newArrayList(t), t, t, prefix + MAX_INIT_SYMBOL.get(t), prefix + MAX_UPDATE_SYMBOL.get(t), @@ -2061,28 +1693,14 @@ public class FunctionSet { null, minMaxSerializeOrFinalize, true, true, false, true)); // Any - addBuiltin(AggregateFunction.createBuiltin("any", - Lists.newArrayList(t), t, t, prefix + ANY_INIT_SYMBOL.get(t), - prefix + ANY_UPDATE_SYMBOL.get(t), - prefix + ANY_UPDATE_SYMBOL.get(t), - minMaxSerializeOrFinalize, minMaxGetValue, - null, minMaxSerializeOrFinalize, true, true, false)); - // vectorized addBuiltin(AggregateFunction.createBuiltin("any", Lists.newArrayList(t), t, t, null, null, null, null, null, null, null, true, false, false, true)); // Any_Value - addBuiltin(AggregateFunction.createBuiltin("any_value", - Lists.newArrayList(t), t, t, prefix + ANY_INIT_SYMBOL.get(t), - prefix + ANY_UPDATE_SYMBOL.get(t), - prefix + ANY_UPDATE_SYMBOL.get(t), - minMaxSerializeOrFinalize, minMaxGetValue, - null, minMaxSerializeOrFinalize, true, true, false)); - // vectorized addBuiltin(AggregateFunction.createBuiltin("any_value", Lists.newArrayList(t), t, t, null, null, null, null, null, null, null, true, false, false, true)); // vectorized - for (Type kt : Type.getSupportedTypes()) { + for (Type kt : Type.getTrivialTypes()) { if (kt.isNull()) { continue; } @@ -2094,17 +1712,6 @@ public class FunctionSet { true, true, false, true)); } - - // NDV - // ndv return string - 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, false, true)); - // vectorized addBuiltin(AggregateFunction.createBuiltin("ndv", Lists.newArrayList(t), Type.BIGINT, Type.VARCHAR, "_ZN5doris12HllFunctions8hll_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", @@ -2114,17 +1721,6 @@ public class FunctionSet { "_ZN5doris12HllFunctions12hll_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", true, true, true, true)); - // APPROX_COUNT_DISTINCT - // alias of ndv, compute approx count distinct use HyperLogLog - 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, false, true)); - // vectorized addBuiltin(AggregateFunction.createBuiltin("approx_count_distinct", Lists.newArrayList(t), Type.BIGINT, Type.VARCHAR, @@ -2135,15 +1731,6 @@ public class FunctionSet { "_ZN5doris12HllFunctions12hll_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", true, true, true, true)); - // BITMAP_UNION_INT - addBuiltin(AggregateFunction.createBuiltin(BITMAP_UNION_INT, - Lists.newArrayList(t), Type.BIGINT, Type.VARCHAR, - "_ZN5doris15BitmapFunctions11bitmap_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - BITMAP_UNION_INT_SYMBOL.get(t), - "_ZN5doris15BitmapFunctions12bitmap_unionEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris15BitmapFunctions16bitmap_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "_ZN5doris15BitmapFunctions15bitmap_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - true, false, true)); // vectorized addBuiltin(AggregateFunction.createBuiltin(BITMAP_UNION_INT, Lists.newArrayList(t), Type.BIGINT, t, @@ -2154,19 +1741,6 @@ public class FunctionSet { "", true, false, true, true)); - - // 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)); - // VEC_INTERSECT_COUNT addBuiltin( AggregateFunction.createBuiltin(INTERSECT_COUNT, Lists.newArrayList(Type.BITMAP, t, t), Type.BIGINT, @@ -2175,88 +1749,8 @@ public class FunctionSet { BITMAP_INTERSECT_SERIALIZE_SYMBOL.get(t), null, null, BITMAP_INTERSECT_FINALIZE_SYMBOL.get(t), true, false, true, true)); - // HLL_UNION_AGG - addBuiltin(AggregateFunction.createBuiltin("hll_union_agg", - Lists.newArrayList(t), Type.BIGINT, Type.VARCHAR, - "_ZN5doris12HllFunctions8hll_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - HLL_UNION_AGG_UPDATE_SYMBOL.get(t), - "_ZN5doris12HllFunctions9hll_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris12HllFunctions13hll_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "_ZN5doris12HllFunctions13hll_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE", - null, - "_ZN5doris12HllFunctions12hll_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - true, true, true)); - - // HLL_UNION_AGG vectorized - addBuiltin(AggregateFunction.createBuiltin("hll_union_agg", - Lists.newArrayList(t), Type.BIGINT, Type.VARCHAR, - "_ZN5doris12HllFunctions8hll_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - HLL_UNION_AGG_UPDATE_SYMBOL.get(t), - "_ZN5doris12HllFunctions9hll_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris12HllFunctions13hll_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "_ZN5doris12HllFunctions13hll_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE", - null, - "_ZN5doris12HllFunctions12hll_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - true, true, true, true)); - - // HLL_UNION - addBuiltin(AggregateFunction.createBuiltin(HLL_UNION, - Lists.newArrayList(t), Type.HLL, Type.HLL, - "_ZN5doris12HllFunctions8hll_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - "_ZN5doris12HllFunctions9hll_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris12HllFunctions9hll_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris12HllFunctions13hll_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "_ZN5doris12HllFunctions13hll_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - true, false, true)); - - // HLL_UNION vectorized - addBuiltin(AggregateFunction.createBuiltin(HLL_UNION, - Lists.newArrayList(t), Type.HLL, Type.HLL, - "_ZN5doris12HllFunctions8hll_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - "_ZN5doris12HllFunctions9hll_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris12HllFunctions9hll_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris12HllFunctions13hll_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "_ZN5doris12HllFunctions13hll_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - true, false, true, true)); - - // HLL_RAW_AGG is alias of HLL_UNION - addBuiltin(AggregateFunction.createBuiltin("hll_raw_agg", - Lists.newArrayList(t), Type.HLL, Type.HLL, - "_ZN5doris12HllFunctions8hll_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - "_ZN5doris12HllFunctions9hll_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris12HllFunctions9hll_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris12HllFunctions13hll_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "_ZN5doris12HllFunctions13hll_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - true, false, true)); - - // HLL_RAW_AGG is alias of HLL_UNION vectorized - addBuiltin(AggregateFunction.createBuiltin("hll_raw_agg", - Lists.newArrayList(t), Type.HLL, Type.HLL, - "_ZN5doris12HllFunctions8hll_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - "_ZN5doris12HllFunctions9hll_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris12HllFunctions9hll_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris12HllFunctions13hll_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "_ZN5doris12HllFunctions13hll_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - true, false, true, true)); - // TopN if (TOPN_UPDATE_SYMBOL.containsKey(t)) { - 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)); - 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)); // vectorized addBuiltin(AggregateFunction.createBuiltin("topn", Lists.newArrayList(t, Type.INT), Type.VARCHAR, Type.VARCHAR, @@ -2277,33 +1771,6 @@ public class FunctionSet { } if (STDDEV_UPDATE_SYMBOL.containsKey(t)) { - addBuiltin(AggregateFunction.createBuiltin("stddev", - Lists.newArrayList(t), STDDEV_RETTYPE_SYMBOL.get(t), Type.VARCHAR, - prefix + STDDEV_INIT_SYMBOL.get(t), - prefix + STDDEV_UPDATE_SYMBOL.get(t), - prefix + STDDEV_MERGE_SYMBOL.get(t), - null, prefix + STDDEV_POP_GET_VALUE_SYMBOL.get(t), prefix + STDDEV_REMOVE_SYMBOL.get(t), - prefix + STDDEV_POP_FINALIZE_SYMBOL.get(t), - false, true, false)); - - addBuiltin(AggregateFunction.createBuiltin("stddev_samp", - Lists.newArrayList(t), STDDEV_RETTYPE_SYMBOL.get(t), Type.VARCHAR, - prefix + STDDEV_INIT_SYMBOL.get(t), - prefix + STDDEV_UPDATE_SYMBOL.get(t), - prefix + STDDEV_MERGE_SYMBOL.get(t), - null, prefix + STDDEV_GET_VALUE_SYMBOL.get(t), prefix + STDDEV_REMOVE_SYMBOL.get(t), - prefix + STDDEV_FINALIZE_SYMBOL.get(t), - false, true, false)); - - addBuiltin(AggregateFunction.createBuiltin("stddev_pop", - Lists.newArrayList(t), STDDEV_RETTYPE_SYMBOL.get(t), Type.VARCHAR, - prefix + STDDEV_INIT_SYMBOL.get(t), - prefix + STDDEV_UPDATE_SYMBOL.get(t), - prefix + STDDEV_MERGE_SYMBOL.get(t), - null, prefix + STDDEV_POP_GET_VALUE_SYMBOL.get(t), prefix + STDDEV_REMOVE_SYMBOL.get(t), - prefix + STDDEV_POP_FINALIZE_SYMBOL.get(t), - false, true, false)); - //vec stddev stddev_samp stddev_pop addBuiltin(AggregateFunction.createBuiltin("stddev", Lists.newArrayList(t), STDDEV_RETTYPE_SYMBOL.get(t), t, @@ -2372,51 +1839,6 @@ public class FunctionSet { prefix + VAR_FINALIZE_SYMBOL.get(t), false, true, false, true)); - addBuiltin(AggregateFunction.createBuiltin("variance", - Lists.newArrayList(t), STDDEV_RETTYPE_SYMBOL.get(t), Type.VARCHAR, - prefix + STDDEV_INIT_SYMBOL.get(t), - prefix + STDDEV_UPDATE_SYMBOL.get(t), - prefix + STDDEV_MERGE_SYMBOL.get(t), - null, prefix + VAR_POP_GET_VALUE_SYMBOL.get(t), prefix + STDDEV_REMOVE_SYMBOL.get(t), - prefix + VAR_POP_FINALIZE_SYMBOL.get(t), - false, true, false)); - - addBuiltin(AggregateFunction.createBuiltin("variance_samp", - Lists.newArrayList(t), STDDEV_RETTYPE_SYMBOL.get(t), Type.VARCHAR, - prefix + STDDEV_INIT_SYMBOL.get(t), - prefix + STDDEV_UPDATE_SYMBOL.get(t), - prefix + STDDEV_MERGE_SYMBOL.get(t), - null, prefix + VAR_GET_VALUE_SYMBOL.get(t), prefix + STDDEV_REMOVE_SYMBOL.get(t), - prefix + VAR_FINALIZE_SYMBOL.get(t), - false, true, false)); - - addBuiltin(AggregateFunction.createBuiltin("var_samp", - Lists.newArrayList(t), STDDEV_RETTYPE_SYMBOL.get(t), Type.VARCHAR, - prefix + STDDEV_INIT_SYMBOL.get(t), - prefix + STDDEV_UPDATE_SYMBOL.get(t), - prefix + STDDEV_MERGE_SYMBOL.get(t), - null, prefix + VAR_GET_VALUE_SYMBOL.get(t), prefix + STDDEV_REMOVE_SYMBOL.get(t), - prefix + VAR_FINALIZE_SYMBOL.get(t), - false, true, false)); - - addBuiltin(AggregateFunction.createBuiltin("variance_pop", - Lists.newArrayList(t), STDDEV_RETTYPE_SYMBOL.get(t), Type.VARCHAR, - prefix + STDDEV_INIT_SYMBOL.get(t), - prefix + STDDEV_UPDATE_SYMBOL.get(t), - prefix + STDDEV_MERGE_SYMBOL.get(t), - null, prefix + VAR_POP_GET_VALUE_SYMBOL.get(t), prefix + STDDEV_REMOVE_SYMBOL.get(t), - prefix + VAR_POP_FINALIZE_SYMBOL.get(t), - false, true, false)); - - addBuiltin(AggregateFunction.createBuiltin("var_pop", - Lists.newArrayList(t), STDDEV_RETTYPE_SYMBOL.get(t), Type.VARCHAR, - prefix + STDDEV_INIT_SYMBOL.get(t), - prefix + STDDEV_UPDATE_SYMBOL.get(t), - prefix + STDDEV_MERGE_SYMBOL.get(t), - null, prefix + VAR_POP_GET_VALUE_SYMBOL.get(t), prefix + STDDEV_REMOVE_SYMBOL.get(t), - prefix + VAR_POP_FINALIZE_SYMBOL.get(t), - false, true, false)); - addBuiltin(AggregateFunction.createBuiltin("avg_weighted", Lists.newArrayList(t, Type.DOUBLE), Type.DOUBLE, Type.DOUBLE, "", "", "", "", "", "", "", @@ -2427,43 +1849,6 @@ public class FunctionSet { // Sum String []sumNames = {"sum", "sum_distinct"}; for (String name : sumNames) { - addBuiltin(AggregateFunction.createBuiltin(name, - Lists.newArrayList(Type.BIGINT), Type.BIGINT, Type.BIGINT, prefix + "14init_zero_nullIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextEPT_", - prefix + "3sumIN9doris_udf9BigIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", - prefix + "3sumIN9doris_udf9BigIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", - null, null, - prefix + "10sum_removeIN9doris_udf9BigIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", - null, false, true, false)); - addBuiltin(AggregateFunction.createBuiltin(name, - Lists.newArrayList(Type.DOUBLE), Type.DOUBLE, Type.DOUBLE, prefix + "14init_zero_nullIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextEPT_", - prefix + "3sumIN9doris_udf9DoubleValES3_EEvPNS2_15FunctionContextERKT_PT0_", - prefix + "3sumIN9doris_udf9DoubleValES3_EEvPNS2_15FunctionContextERKT_PT0_", - null, null, - prefix + "10sum_removeIN9doris_udf9DoubleValES3_EEvPNS2_15FunctionContextERKT_PT0_", - null, false, true, false)); - addBuiltin(AggregateFunction.createBuiltin(name, - Lists.newArrayList(Type.MAX_DECIMALV2_TYPE), Type.MAX_DECIMALV2_TYPE, Type.MAX_DECIMALV2_TYPE, prefix + "14init_zero_nullIN9doris_udf12DecimalV2ValEEEvPNS2_15FunctionContextEPT_", - prefix + "3sumIN9doris_udf12DecimalV2ValES3_EEvPNS2_15FunctionContextERKT_PT0_", - prefix + "3sumIN9doris_udf12DecimalV2ValES3_EEvPNS2_15FunctionContextERKT_PT0_", - null, null, - prefix + "10sum_removeIN9doris_udf12DecimalV2ValES3_EEvPNS2_15FunctionContextERKT_PT0_", - null, false, true, false)); - addBuiltin(AggregateFunction.createBuiltin(name, - Lists.newArrayList(Type.LARGEINT), Type.LARGEINT, Type.LARGEINT, prefix + "14init_zero_nullIN9doris_udf11LargeIntValEEEvPNS2_15FunctionContextEPT_", - prefix + "3sumIN9doris_udf11LargeIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", - prefix + "3sumIN9doris_udf11LargeIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", - null, null, - prefix + "10sum_removeIN9doris_udf11LargeIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", - null, false, true, false)); - - // vectorized - addBuiltin(AggregateFunction.createBuiltin(name, - Lists.newArrayList(Type.BOOLEAN), Type.BIGINT, Type.BIGINT, initNull, - "", - "", - null, null, - "", - null, false, true, false, true)); addBuiltin(AggregateFunction.createBuiltin(name, Lists.newArrayList(Type.TINYINT), Type.BIGINT, Type.BIGINT, initNull, prefix + "3sumIN9doris_udf9BigIntValES3_EEvPNS2_15FunctionContextERKT_PT0_", @@ -2539,33 +1924,6 @@ public class FunctionSet { Type[] types = {Type.SMALLINT, Type.TINYINT, Type.INT, Type.BIGINT, Type.FLOAT, Type.DOUBLE, Type.CHAR, Type.VARCHAR, Type.STRING}; for (Type t : types) { - addBuiltin(AggregateFunction.createBuiltin(ORTHOGONAL_BITMAP_INTERSECT, - Lists.newArrayList(Type.BITMAP, t, t), - Type.BITMAP, - Type.VARCHAR, - true, - ORTHOGONAL_BITMAP_INTERSECT_INIT_SYMBOL.get(t), - BITMAP_INTERSECT_UPDATE_SYMBOL.get(t), - "_ZN5doris15BitmapFunctions12bitmap_unionEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - ORTHOGONAL_BITMAP_INTERSECT_SERIALIZE_SYMBOL.get(t), - "", - "", - "_ZN5doris15BitmapFunctions16bitmap_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - true, false, true)); - addBuiltin(AggregateFunction.createBuiltin(ORTHOGONAL_BITMAP_INTERSECT_COUNT, - Lists.newArrayList(Type.BITMAP, t, t), - Type.BIGINT, - Type.VARCHAR, - true, - ORTHOGONAL_BITMAP_INTERSECT_COUNT_INIT_SYMBOL.get(t), - BITMAP_INTERSECT_UPDATE_SYMBOL.get(t), - "_ZN5doris15BitmapFunctions29orthogonal_bitmap_count_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - ORTHOGONAL_BITMAP_INTERSECT_COUNT_SERIALIZE_SYMBOL.get(t), - "", - "", - "_ZN5doris15BitmapFunctions32orthogonal_bitmap_count_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - true, false, true)); - //vec ORTHOGONAL_BITMAP_INTERSECT and ORTHOGONAL_BITMAP_INTERSECT_COUNT addBuiltin( AggregateFunction.createBuiltin(ORTHOGONAL_BITMAP_INTERSECT, Lists.newArrayList(Type.BITMAP, t, t), @@ -2578,34 +1936,6 @@ public class FunctionSet { Type[] ntypes = {Type.CHAR, Type.VARCHAR, Type.STRING}; for (Type t : ntypes) { - addBuiltin(AggregateFunction.createBuiltin(ORTHOGONAL_BITMAP_EXPR_CALCULATE, - Lists.newArrayList(Type.BITMAP, t, Type.STRING), - Type.BITMAP, - Type.VARCHAR, - true, - "_ZN5doris15BitmapFunctions37orthogonal_bitmap_expr_calculate_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - "_ZN5doris15BitmapFunctions39orthogonal_bitmap_expr_calculate_updateEPN9doris_udf15FunctionContextERKNS1_9StringValES6_iPS5_S7_", - "_ZN5doris15BitmapFunctions12bitmap_unionEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris15BitmapFunctions42orthogonal_bitmap_expr_calculate_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "", - "", - "_ZN5doris15BitmapFunctions16bitmap_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - true, false, true)); - - addBuiltin(AggregateFunction.createBuiltin(ORTHOGONAL_BITMAP_EXPR_CALCULATE_COUNT, - Lists.newArrayList(Type.BITMAP, t, Type.STRING), - Type.BIGINT, - Type.VARCHAR, - true, - "_ZN5doris15BitmapFunctions43orthogonal_bitmap_expr_calculate_count_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - "_ZN5doris15BitmapFunctions39orthogonal_bitmap_expr_calculate_updateEPN9doris_udf15FunctionContextERKNS1_9StringValES6_iPS5_S7_", - "_ZN5doris15BitmapFunctions29orthogonal_bitmap_count_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris15BitmapFunctions48orthogonal_bitmap_expr_calculate_count_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "", - "", - "_ZN5doris15BitmapFunctions32orthogonal_bitmap_count_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - true, false, true)); - //vec ORTHOGONAL_BITMAP_EXPR_CALCULATE and ORTHOGONAL_BITMAP_EXPR_CALCULATE_COUNT addBuiltin( AggregateFunction.createBuiltin(ORTHOGONAL_BITMAP_EXPR_CALCULATE, Lists.newArrayList(Type.BITMAP, t, Type.STRING), @@ -2616,17 +1946,6 @@ public class FunctionSet { true, false, true, true)); } - // bitmap - addBuiltin(AggregateFunction.createBuiltin(BITMAP_UNION, Lists.newArrayList(Type.BITMAP), - Type.BITMAP, - Type.VARCHAR, - "_ZN5doris15BitmapFunctions11bitmap_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - "_ZN5doris15BitmapFunctions12bitmap_unionEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris15BitmapFunctions12bitmap_unionEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris15BitmapFunctions16bitmap_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "_ZN5doris15BitmapFunctions16bitmap_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - true, false, true)); - addBuiltin(AggregateFunction.createBuiltin(BITMAP_UNION, Lists.newArrayList(Type.BITMAP), Type.BITMAP, Type.BITMAP, @@ -2636,20 +1955,6 @@ public class FunctionSet { "", "", true, false, true, true)); - - - addBuiltin(AggregateFunction.createBuiltin(BITMAP_UNION_COUNT, Lists.newArrayList(Type.BITMAP), - Type.BIGINT, - Type.VARCHAR, - "_ZN5doris15BitmapFunctions11bitmap_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - "_ZN5doris15BitmapFunctions12bitmap_unionEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris15BitmapFunctions12bitmap_unionEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris15BitmapFunctions16bitmap_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "_ZN5doris15BitmapFunctions16bitmap_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE", - null, - "_ZN5doris15BitmapFunctions15bitmap_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - true, true, true)); - addBuiltin(AggregateFunction.createBuiltin(BITMAP_UNION_COUNT, Lists.newArrayList(Type.BITMAP), Type.BIGINT, Type.BITMAP, @@ -2661,32 +1966,10 @@ public class FunctionSet { null, "", true, true, true, true)); - - addBuiltin(AggregateFunction.createBuiltin(ORTHOGONAL_BITMAP_UNION_COUNT, Lists.newArrayList(Type.BITMAP), - Type.BIGINT, - Type.VARCHAR, - "_ZN5doris15BitmapFunctions34orthogonal_bitmap_union_count_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - "_ZN5doris15BitmapFunctions12bitmap_unionEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris15BitmapFunctions29orthogonal_bitmap_count_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris15BitmapFunctions33orthogonal_bitmap_count_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - null, - null, - "_ZN5doris15BitmapFunctions32orthogonal_bitmap_count_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - true, true, true)); // ORTHOGONAL_BITMAP_UNION_COUNT vectorized addBuiltin(AggregateFunction.createBuiltin(ORTHOGONAL_BITMAP_UNION_COUNT, Lists.newArrayList(Type.BITMAP), Type.BIGINT, Type.BITMAP, "", "", "", "", null, null, "", true, true, true, true)); - // TODO(ml): supply function symbol - addBuiltin(AggregateFunction.createBuiltin(BITMAP_INTERSECT, Lists.newArrayList(Type.BITMAP), - Type.BITMAP, Type.VARCHAR, - "_ZN5doris15BitmapFunctions20nullable_bitmap_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - "_ZN5doris15BitmapFunctions16bitmap_intersectEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris15BitmapFunctions16bitmap_intersectEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris15BitmapFunctions16bitmap_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "_ZN5doris15BitmapFunctions16bitmap_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - true, false, true)); - addBuiltin(AggregateFunction.createBuiltin(BITMAP_INTERSECT, Lists.newArrayList(Type.BITMAP), Type.BITMAP, Type.BITMAP, "", @@ -2696,15 +1979,6 @@ public class FunctionSet { "", true, false, true, true)); - addBuiltin(AggregateFunction.createBuiltin("group_bitmap_xor", Lists.newArrayList(Type.BITMAP), - Type.BITMAP, Type.VARCHAR, - "_ZN5doris15BitmapFunctions11bitmap_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - "_ZN5doris15BitmapFunctions16group_bitmap_xorEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris15BitmapFunctions16group_bitmap_xorEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris15BitmapFunctions16bitmap_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "_ZN5doris15BitmapFunctions16bitmap_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - true, false, true)); - // vec group_bitmap_xor addBuiltin(AggregateFunction.createBuiltin("group_bitmap_xor", Lists.newArrayList(Type.BITMAP), Type.BITMAP, Type.BITMAP, @@ -2726,16 +2000,6 @@ public class FunctionSet { Lists.newArrayList(t), t, t, "", "", "", "", "", false, true, false, true)); } - //quantile_state - addBuiltin(AggregateFunction.createBuiltin(QUANTILE_UNION, Lists.newArrayList(Type.QUANTILE_STATE), - Type.QUANTILE_STATE, - Type.QUANTILE_STATE, - "_ZN5doris22QuantileStateFunctions19quantile_state_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - "_ZN5doris22QuantileStateFunctions14quantile_unionEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris22QuantileStateFunctions14quantile_unionEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - "_ZN5doris22QuantileStateFunctions24quantile_state_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - "_ZN5doris22QuantileStateFunctions24quantile_state_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - true, false, true)); addBuiltin(AggregateFunction.createBuiltin(QUANTILE_UNION, Lists.newArrayList(Type.QUANTILE_STATE), Type.QUANTILE_STATE, @@ -2746,33 +2010,6 @@ public class FunctionSet { "", "", true, false, true, true)); - //Percentile - 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, false, false)); - - //PercentileApprox - addBuiltin(AggregateFunction.createBuiltin("percentile_approx", - Lists.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, false, false)); - addBuiltin(AggregateFunction.createBuiltin("percentile_approx", - Lists.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, false, false)); //vec percentile and percentile_approx addBuiltin(AggregateFunction.createBuiltin("percentile", @@ -2864,59 +2101,6 @@ public class FunctionSet { // Avg // TODO: switch to CHAR(sizeof(AvgIntermediateType) when that becomes available - addBuiltin(AggregateFunction.createBuiltin("avg", - Lists.newArrayList(Type.BIGINT), Type.DOUBLE, Type.VARCHAR, - prefix + "8avg_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - prefix + "10avg_updateIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE", - prefix + "9avg_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - stringValSerializeOrFinalize, - prefix + "13avg_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE", - prefix + "10avg_removeIN9doris_udf9BigIntValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE", - prefix + "12avg_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - false, true, false)); - addBuiltin(AggregateFunction.createBuiltin("avg", - Lists.newArrayList(Type.DOUBLE), Type.DOUBLE, Type.VARCHAR, - prefix + "8avg_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - prefix + "10avg_updateIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE", - prefix + "9avg_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - stringValSerializeOrFinalize, - prefix + "13avg_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE", - prefix + "10avg_removeIN9doris_udf9DoubleValEEEvPNS2_15FunctionContextERKT_PNS2_9StringValE", - prefix + "12avg_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - false, true, false)); - - addBuiltin(AggregateFunction.createBuiltin("avg", - Lists.newArrayList(Type.MAX_DECIMALV2_TYPE), Type.MAX_DECIMALV2_TYPE, Type.VARCHAR, - prefix + "18decimalv2_avg_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - prefix + "20decimalv2_avg_updateEPN9doris_udf15FunctionContextERKNS1_12DecimalV2ValEPNS1_9StringValE", - prefix + "19decimalv2_avg_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - prefix + "23decimalv2_avg_serializeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - prefix + "23decimalv2_avg_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE", - prefix + "20decimalv2_avg_removeEPN9doris_udf15FunctionContextERKNS1_12DecimalV2ValEPNS1_9StringValE", - prefix + "22decimalv2_avg_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - false, true, false)); - - // Avg(Timestamp) - addBuiltin(AggregateFunction.createBuiltin("avg", - Lists.newArrayList(Type.DATE), Type.DATE, Type.VARCHAR, - prefix + "8avg_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - prefix + "20timestamp_avg_updateEPN9doris_udf15FunctionContextERKNS1_11DateTimeValEPNS1_9StringValE", - prefix + "9avg_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - stringValSerializeOrFinalize, - prefix + "23timestamp_avg_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE", - prefix + "20timestamp_avg_removeEPN9doris_udf15FunctionContextERKNS1_11DateTimeValEPNS1_9StringValE", - prefix + "22timestamp_avg_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - false, true, false)); - addBuiltin(AggregateFunction.createBuiltin("avg", - Lists.newArrayList(Type.DATETIME), Type.DATETIME, Type.DATETIME, - prefix + "8avg_initEPN9doris_udf15FunctionContextEPNS1_9StringValE", - prefix + "20timestamp_avg_updateEPN9doris_udf15FunctionContextERKNS1_11DateTimeValEPNS1_9StringValE", - prefix + "9avg_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - stringValSerializeOrFinalize, - prefix + "23timestamp_avg_get_valueEPN9doris_udf15FunctionContextERKNS1_9StringValE", - prefix + "20timestamp_avg_removeEPN9doris_udf15FunctionContextERKNS1_11DateTimeValEPNS1_9StringValE", - prefix + "22timestamp_avg_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", - false, true, false)); // vectorized avg addBuiltin(AggregateFunction.createBuiltin("avg", @@ -2960,22 +2144,6 @@ public class FunctionSet { "", "", "", "", "", "", "", false, true, false, true)); - // Group_concat(string) - addBuiltin(AggregateFunction.createBuiltin("group_concat", Lists.newArrayList(Type.VARCHAR), Type.VARCHAR, - Type.VARCHAR, initNullString, - prefix + "20string_concat_updateEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - prefix + "19string_concat_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - stringValSerializeOrFinalize, - prefix + "22string_concat_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", false, - false, false)); - // Group_concat(string, string) - addBuiltin(AggregateFunction.createBuiltin("group_concat", Lists.newArrayList(Type.VARCHAR, Type.VARCHAR), - Type.VARCHAR, Type.VARCHAR, initNullString, - prefix + "20string_concat_updateEPN9doris_udf15FunctionContextERKNS1_9StringValES6_PS4_", - prefix + "19string_concat_mergeEPN9doris_udf15FunctionContextERKNS1_9StringValEPS4_", - stringValSerializeOrFinalize, - prefix + "22string_concat_finalizeEPN9doris_udf15FunctionContextERKNS1_9StringValE", false, - false, false)); // Group_concat(string) vectorized addBuiltin(AggregateFunction.createBuiltin("group_concat", Lists.newArrayList(Type.VARCHAR), Type.VARCHAR, Type.VARCHAR, initNullString, "", "", "", "", false, true, false, true)); @@ -3158,7 +2326,7 @@ public class FunctionSet { public List getBulitinFunctions() { List builtinFunctions = Lists.newArrayList(); - for (Map.Entry> entry : functions.entrySet()) { + for (Map.Entry> entry : vectorizedFunctions.entrySet()) { builtinFunctions.addAll(entry.getValue()); } return builtinFunctions; diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/ScalarFunction.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/ScalarFunction.java index 6495b8ae70..a8caf28532 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/ScalarFunction.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/ScalarFunction.java @@ -22,13 +22,10 @@ import org.apache.doris.analysis.FunctionName; import org.apache.doris.common.io.IOUtils; import org.apache.doris.common.io.Text; import org.apache.doris.common.util.URI; -import org.apache.doris.common.util.VectorizedUtil; import org.apache.doris.thrift.TFunction; import org.apache.doris.thrift.TFunctionBinaryType; import org.apache.doris.thrift.TScalarFunction; -import com.google.common.base.Preconditions; -import com.google.common.collect.Lists; import com.google.common.collect.Maps; import com.google.gson.Gson; import org.apache.logging.log4j.LogManager; @@ -61,7 +58,7 @@ public class ScalarFunction extends Function { public ScalarFunction(FunctionName fnName, List argTypes, Type retType, boolean hasVarArgs, boolean userVisible) { - this(fnName, argTypes, retType, hasVarArgs, TFunctionBinaryType.BUILTIN, userVisible, false); + this(fnName, argTypes, retType, hasVarArgs, TFunctionBinaryType.BUILTIN, userVisible, true); } public ScalarFunction(FunctionName fnName, List argTypes, Type retType, boolean hasVarArgs, @@ -110,7 +107,6 @@ public class ScalarFunction extends Function { String name, Type retType, NullableMode nullableMode, ArrayList argTypes, boolean hasVarArgs, String symbol, String prepareFnSymbol, String closeFnSymbol, boolean userVisible) { - Preconditions.checkNotNull(symbol); ScalarFunction fn = new ScalarFunction( new FunctionName(name), argTypes, retType, hasVarArgs, userVisible); fn.symbolName = symbol; @@ -126,164 +122,16 @@ public class ScalarFunction extends Function { } /** - * Creates a builtin scalar operator function. This is a helper that wraps a few steps + * Creates a builtin scalar operator function. This is a helper that wraps a few + * steps * into one call. * TODO: this needs to be kept in sync with what generates the be operator - * implementations. (gen_functions.py). Is there a better way to coordinate this. + * implementations. (gen_functions.py). Is there a better way to coordinate + * this. */ public static ScalarFunction createBuiltinOperator( String name, ArrayList argTypes, Type retType, NullableMode nullableMode) { - // Operators have a well defined symbol based on the function name and type. - // Convert Add(TINYINT, TINYINT) --> Add_TinyIntVal_TinyIntVal - String beFn = name; - boolean usesDecimal = false; - boolean usesDecimalV2 = false; - for (int i = 0; i < argTypes.size(); ++i) { - switch (argTypes.get(i).getPrimitiveType()) { - case BOOLEAN: - beFn += "_boolean_val"; - break; - case TINYINT: - beFn += "_tiny_int_val"; - break; - case SMALLINT: - beFn += "_small_int_val"; - break; - case INT: - beFn += "_int_val"; - break; - case BIGINT: - beFn += "_big_int_val"; - break; - case LARGEINT: - beFn += "_large_int_val"; - break; - case FLOAT: - beFn += "_float_val"; - break; - case DOUBLE: - case TIME: - case TIMEV2: - beFn += "_double_val"; - break; - case CHAR: - case VARCHAR: - case HLL: - case BITMAP: - case STRING: - case QUANTILE_STATE: - beFn += "_string_val"; - break; - case DATE: - case DATETIME: - case DATEV2: - case DATETIMEV2: - beFn += "_datetime_val"; - break; - case DECIMALV2: - case DECIMAL32: - case DECIMAL64: - case DECIMAL128: - beFn += "_decimalv2_val"; - usesDecimalV2 = true; - break; - case JSONB: - beFn += "_jsonb_val"; - break; - default: - Preconditions.checkState(false, "Argument type not supported: " + argTypes.get(i)); - } - } - String beClass = usesDecimal ? "DecimalOperators" : "Operators"; - if (usesDecimalV2) { - beClass = "DecimalV2Operators"; - } - String symbol = "doris::" + beClass + "::" + beFn; - return createBuiltinOperator(name, symbol, argTypes, retType, nullableMode); - } - - public static ScalarFunction createVecBuiltinOperator( - String name, ArrayList argTypes, Type retType) { - return createVecBuiltinOperator(name, argTypes, retType, NullableMode.DEPEND_ON_ARGUMENT); - } - - /** - * Creates a builtin scala vec operator function. This is a helper that wraps a few steps - * into one call. - * TODO: this needs to be kept in sync with what generates the be operator - * implementations. (gen_functions.py). Is there a better way to coordinate this. - */ - public static ScalarFunction createVecBuiltinOperator( - String name, ArrayList argTypes, Type retType, NullableMode nullableMode) { - StringBuilder beFn = new StringBuilder(name); - boolean usesDecimal = false; - boolean usesDecimalV2 = false; - - // just mock a fake symbol for vec function, we treat - // all argument is same as first argument - for (int i = 0; i < argTypes.size(); ++i) { - switch (argTypes.get(0).getPrimitiveType()) { - case BOOLEAN: - beFn.append("_boolean_val"); - break; - case TINYINT: - beFn.append("_tiny_int_val"); - break; - case SMALLINT: - beFn.append("_small_int_val"); - break; - case INT: - beFn.append("_int_val"); - break; - case BIGINT: - beFn.append("_big_int_val"); - break; - case LARGEINT: - beFn.append("_large_int_val"); - break; - case FLOAT: - beFn.append("_float_val"); - break; - case DOUBLE: - case TIME: - case TIMEV2: - beFn.append("_double_val"); - break; - case CHAR: - case VARCHAR: - case HLL: - case BITMAP: - beFn.append("_string_val"); - break; - case JSONB: - beFn.append("_jsonb_val"); - break; - case LAMBDA_FUNCTION: - beFn.append("_lambda_function"); - break; - case DATE: - case DATETIME: - case DATEV2: - case DATETIMEV2: - beFn.append("_datetime_val"); - break; - case DECIMALV2: - case DECIMAL32: - case DECIMAL64: - case DECIMAL128: - beFn.append("_decimalv2_val"); - usesDecimalV2 = true; - break; - default: - Preconditions.checkState(false, "Argument type not supported: " + argTypes.get(i)); - } - } - String beClass = usesDecimal ? "DecimalOperators" : "Operators"; - if (usesDecimalV2) { - beClass = "DecimalV2Operators"; - } - String symbol = "doris::" + beClass + "::" + beFn; - return createVecBuiltinOperator(name, symbol, argTypes, retType, nullableMode); + return createBuiltinOperator(name, null, argTypes, retType, nullableMode); } public static ScalarFunction createBuiltinOperator( @@ -306,41 +154,6 @@ public class ScalarFunction extends Function { return fn; } - public static ScalarFunction createVecBuiltinOperator( - String name, String symbol, ArrayList argTypes, Type retType, NullableMode nullableMode) { - return createVecBuiltin(name, null, symbol, null, argTypes, false, retType, false, nullableMode); - } - - // TODO: This method should not be here, move to other place in the future - public static ScalarFunction createVecBuiltin(String name, String prepareFnSymbolBName, String symbol, - String closeFnSymbolName, ArrayList argTypes, boolean hasVarArgs, Type retType, boolean userVisible, - NullableMode nullableMode) { - ScalarFunction fn = new ScalarFunction(new FunctionName(name), argTypes, retType, hasVarArgs, userVisible, - true); - if (prepareFnSymbolBName != null) { - fn.prepareFnSymbol = prepareFnSymbolBName; - } - fn.symbolName = symbol; - if (closeFnSymbolName != null) { - fn.closeFnSymbol = closeFnSymbolName; - } - fn.nullableMode = nullableMode; - return fn; - } - - /** - * Create a function that is used to search the catalog for a matching builtin. Only - * the fields necessary for matching function prototypes are specified. - */ - public static ScalarFunction createBuiltinSearchDesc( - String name, Type[] argTypes, boolean hasVarArgs) { - ArrayList fnArgs = - (argTypes == null) ? new ArrayList() : Lists.newArrayList(argTypes); - ScalarFunction fn = new ScalarFunction( - new FunctionName(name), fnArgs, Type.INVALID, hasVarArgs, true); - return fn; - } - public static ScalarFunction createUdf( TFunctionBinaryType binaryType, FunctionName name, Type[] args, @@ -419,14 +232,8 @@ public class ScalarFunction extends Function { public TFunction toThrift(Type realReturnType, Type[] realArgTypes) { TFunction fn = super.toThrift(realReturnType, realArgTypes); fn.setScalarFn(new TScalarFunction()); - if (getBinaryType() != TFunctionBinaryType.BUILTIN || !VectorizedUtil.isPipeline()) { + if (getBinaryType() != TFunctionBinaryType.BUILTIN) { fn.getScalarFn().setSymbol(symbolName); - if (prepareFnSymbol != null) { - fn.getScalarFn().setPrepareFnSymbol(prepareFnSymbol); - } - if (closeFnSymbol != null) { - fn.getScalarFn().setCloseFnSymbol(closeFnSymbol); - } } else { fn.getScalarFn().setSymbol(""); }