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

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


The following commit(s) were added to refs/heads/master by this push:
     new 86bc5cd9bd0 [clean](function) remove FunctionSet class (#61378)
86bc5cd9bd0 is described below

commit 86bc5cd9bd0a4e93512b27c9c32c0db8e9bc9577
Author: morrySnow <[email protected]>
AuthorDate: Tue Mar 17 19:53:25 2026 +0800

    [clean](function) remove FunctionSet class (#61378)
---
 .../org/apache/doris/analysis/DataDescription.java |   3 +-
 .../main/java/org/apache/doris/catalog/Env.java    |  10 --
 .../java/org/apache/doris/catalog/FunctionSet.java | 122 ---------------------
 .../doris/nereids/load/NereidsDataDescription.java |   5 +-
 .../nereids/load/NereidsLoadScanProvider.java      |  17 +--
 .../expressions/functions/agg/LinearHistogram.java |  13 +--
 .../planner/normalize/ExprNormalizeVisitor.java    |  36 +++++-
 .../org/apache/doris/qe/OlapQueryCacheTest.java    |   4 -
 8 files changed, 48 insertions(+), 162 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/analysis/DataDescription.java 
b/fe/fe-core/src/main/java/org/apache/doris/analysis/DataDescription.java
index ace1bc5f2be..f65df25d351 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/analysis/DataDescription.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/analysis/DataDescription.java
@@ -21,7 +21,6 @@ import org.apache.doris.analysis.BinaryPredicate.Operator;
 import org.apache.doris.catalog.Column;
 import org.apache.doris.catalog.Database;
 import org.apache.doris.catalog.Env;
-import org.apache.doris.catalog.FunctionSet;
 import org.apache.doris.catalog.OlapTable;
 import org.apache.doris.catalog.info.PartitionNamesInfo;
 import org.apache.doris.common.AnalysisException;
@@ -92,7 +91,7 @@ public class DataDescription {
             "md5sum",
             "replace_value",
             "now",
-            FunctionSet.HLL_HASH,
+            "hll_hash",
             "substitute");
 
     private static final String DEFAULT_READ_JSON_BY_LINE = "true";
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java
index 1b49e786176..d6aadff5dcc 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java
@@ -462,7 +462,6 @@ public class Env {
     private ColocateTableIndex colocateTableIndex;
 
     private CatalogRecycleBin recycleBin;
-    private FunctionSet functionSet;
 
     // for nereids
     private FunctionRegistry functionRegistry;
@@ -761,7 +760,6 @@ public class Env {
         this.tabletInvertedIndex = 
EnvFactory.getInstance().createTabletInvertedIndex();
         this.colocateTableIndex = new ColocateTableIndex();
         this.recycleBin = new CatalogRecycleBin();
-        this.functionSet = new FunctionSet();
 
         this.functionRegistry = new FunctionRegistry();
 
@@ -6516,14 +6514,6 @@ public class Env {
         return functionRegistry;
     }
 
-    public boolean isNondeterministicFunction(String funcName) {
-        return functionSet.isNondeterministicFunction(funcName);
-    }
-
-    public boolean isNullResultWithOneNullParamFunction(String funcName) {
-        return functionSet.isNullResultWithOneNullParamFunctions(funcName);
-    }
-
     @Deprecated
     public long loadCluster(DataInputStream dis, long checksum) throws 
IOException, DdlException {
         return getInternalCatalog().loadCluster(dis, checksum);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionSet.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionSet.java
deleted file mode 100644
index ad792422a5f..00000000000
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/FunctionSet.java
+++ /dev/null
@@ -1,122 +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.
-
-package org.apache.doris.catalog;
-
-import com.google.common.collect.ImmutableSet;
-
-import java.util.Set;
-
-public class FunctionSet<T> {
-
-    // For most build-in functions, it will return NullLiteral when params 
contain NullLiteral.
-    // But a few functions need to handle NullLiteral differently, such as 
"if". It need to add
-    // an attribute to LiteralExpr to mark null and check the attribute to 
decide whether to
-    // replace the result with NullLiteral when function finished. It leaves 
to be realized.
-
-    private ImmutableSet<String> nullResultWithOneNullParamFunctions;
-
-    // Including now(), curdate(), etc..
-    private ImmutableSet<String> nondeterministicFunctions;
-
-    public FunctionSet() {
-    }
-
-    public boolean isNondeterministicFunction(String funcName) {
-        return nondeterministicFunctions.contains(funcName);
-    }
-
-    public boolean isNullResultWithOneNullParamFunctions(String funcName) {
-        return nullResultWithOneNullParamFunctions.contains(funcName);
-    }
-
-    public static final Set<String> nonDeterministicFunctions =
-            ImmutableSet.<String>builder()
-                    .add("RAND")
-                    .add("RANDOM")
-                    .add("RANDOM_BYTES")
-                    .add("CONNECTION_ID")
-                    .add("DATABASE")
-                    .add("USER")
-                    .add("UUID")
-                    .add("CURRENT_USER")
-                    .add("UUID_NUMERIC")
-                    .build();
-
-    public static final Set<String> nonDeterministicTimeFunctions =
-            ImmutableSet.<String>builder()
-                    .add("NOW")
-                    .add("CURDATE")
-                    .add("CURRENT_DATE")
-                    .add("UTC_TIMESTAMP")
-                    .add("CURTIME")
-                    .add("CURRENT_TIMESTAMP")
-                    .add("CURRENT_TIME")
-                    .add("UNIX_TIMESTAMP")
-                    .add()
-                    .build();
-
-    public static final String HLL_HASH = "hll_hash";
-    public static final String HLL_UNION = "hll_union";
-    public static final String HLL_UNION_AGG = "hll_union_agg";
-    public static final String HLL_RAW_AGG = "hll_raw_agg";
-    public static final String HLL_FROM_BASE64 = "hll_from_base64";
-
-    public static final String TO_BITMAP = "to_bitmap";
-    public static final String BITMAP_UNION = "bitmap_union";
-    public static final String BITMAP_UNION_COUNT = "bitmap_union_count";
-    public static final String BITMAP_UNION_INT = "bitmap_union_int";
-    public static final String INTERSECT_COUNT = "intersect_count";
-    public static final String BITMAP_INTERSECT = "bitmap_intersect";
-    public static final String ORTHOGONAL_BITMAP_INTERSECT = 
"orthogonal_bitmap_intersect";
-    public static final String ORTHOGONAL_BITMAP_INTERSECT_COUNT = 
"orthogonal_bitmap_intersect_count";
-    public static final String ORTHOGONAL_BITMAP_UNION_COUNT = 
"orthogonal_bitmap_union_count";
-    public static final String NDV = "ndv";
-    public static final String ORTHOGONAL_BITMAP_EXPR_CALCULATE_COUNT = 
"orthogonal_bitmap_expr_calculate_count";
-    public static final String ORTHOGONAL_BITMAP_EXPR_CALCULATE = 
"orthogonal_bitmap_expr_calculate";
-
-    //TODO(weixiang): is quantile_percent can be replaced by approx_percentile?
-    public static final String COLLECT_LIST = "collect_list";
-    public static final String COLLECT_SET = "collect_set";
-    public static final String HISTOGRAM = "histogram";
-    public static final String LINEAR_HISTOGRAM = "linear_histogram";
-    public static final String MAP_AGG = "map_agg";
-
-    public static final String BITMAP_AGG = "bitmap_agg";
-
-    public static final String COUNT = "count";
-
-    public static final String REGR_INTERCEPT = "regr_intercept";
-
-    public static final String REGR_SLOPE = "regr_slope";
-
-    public static final String REGR_SXX = "regr_sxx";
-
-    public static final String REGR_SXY = "regr_sxy";
-
-    public static final String REGR_SYY = "regr_syy";
-
-    public static final String SEQUENCE_COUNT = "sequence_count";
-
-    public static final String GROUP_ARRAY_INTERSECT = "group_array_intersect";
-
-    public static final String ARRAY_AGG = "array_agg";
-
-    public static final String SUM0 = "sum0";
-
-    public static final String MULTI_DISTINCT_SUM0 = "multi_distinct_sum0";
-}
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/load/NereidsDataDescription.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/load/NereidsDataDescription.java
index 3350ed735b9..1f47be82ae8 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/load/NereidsDataDescription.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/load/NereidsDataDescription.java
@@ -26,7 +26,6 @@ import org.apache.doris.analysis.Separator;
 import org.apache.doris.catalog.Column;
 import org.apache.doris.catalog.Database;
 import org.apache.doris.catalog.Env;
-import org.apache.doris.catalog.FunctionSet;
 import org.apache.doris.catalog.KeysType;
 import org.apache.doris.catalog.OlapTable;
 import org.apache.doris.catalog.info.PartitionNamesInfo;
@@ -104,7 +103,7 @@ public class NereidsDataDescription {
             "md5sum",
             "replace_value",
             "now",
-            FunctionSet.HLL_HASH,
+            "hll_hash",
             "substitute");
 
     private static final String DEFAULT_READ_JSON_BY_LINE = "true";
@@ -497,7 +496,7 @@ public class NereidsDataDescription {
             validateMd5sum(args, columnNameMap);
         } else if (functionName.equalsIgnoreCase("replace_value")) {
             validateReplaceValue(args, mappingColumn);
-        } else if (functionName.equalsIgnoreCase(FunctionSet.HLL_HASH)) {
+        } else if (functionName.equalsIgnoreCase("hll_hash")) {
             validateHllHash(args, columnNameMap);
         } else if (functionName.equalsIgnoreCase("now")) {
             validateNowFunction(mappingColumn);
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/load/NereidsLoadScanProvider.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/load/NereidsLoadScanProvider.java
index 57a79f5ac3b..ee8ee875e06 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/load/NereidsLoadScanProvider.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/load/NereidsLoadScanProvider.java
@@ -19,7 +19,6 @@ package org.apache.doris.nereids.load;
 
 import org.apache.doris.catalog.AggregateType;
 import org.apache.doris.catalog.Column;
-import org.apache.doris.catalog.FunctionSet;
 import org.apache.doris.catalog.OlapTable;
 import org.apache.doris.catalog.PrimitiveType;
 import org.apache.doris.catalog.Table;
@@ -72,6 +71,8 @@ import java.util.TreeSet;
  */
 public class NereidsLoadScanProvider {
     private static final Logger LOG = 
LogManager.getLogger(NereidsLoadScanProvider.class);
+    private static final String HLL_HASH = "hll_hash";
+    private static final String HLL_FROM_BASE64 = "hll_from_base64";
     private NereidsFileGroupInfo fileGroupInfo;
     private Set<String> partialUpdateInputColumns;
 
@@ -314,17 +315,17 @@ public class NereidsLoadScanProvider {
                 // check hll_hash
                 if (column.getDataType() == PrimitiveType.HLL) {
                     if (!(expression instanceof UnboundFunction)) {
-                        throw new AnalysisException("HLL column must use " + 
FunctionSet.HLL_HASH + " function, like "
-                                + columnName + "=" + FunctionSet.HLL_HASH + 
"(xxx)");
+                        throw new AnalysisException("HLL column must use " + 
HLL_HASH + " function, like "
+                                + columnName + "=" + HLL_HASH + "(xxx)");
                     }
                     UnboundFunction function = (UnboundFunction) expression;
                     String functionName = function.getName();
-                    if (!functionName.equalsIgnoreCase(FunctionSet.HLL_HASH)
+                    if (!functionName.equalsIgnoreCase(HLL_HASH)
                             && !functionName.equalsIgnoreCase("hll_empty")
-                            && 
!functionName.equalsIgnoreCase(FunctionSet.HLL_FROM_BASE64)) {
-                        throw new AnalysisException("HLL column must use " + 
FunctionSet.HLL_HASH + " function, like "
-                                + columnName + "=" + FunctionSet.HLL_HASH + 
"(xxx) or "
-                                + columnName + "=" + 
FunctionSet.HLL_FROM_BASE64 + "(xxx) or "
+                            && 
!functionName.equalsIgnoreCase(HLL_FROM_BASE64)) {
+                        throw new AnalysisException("HLL column must use " + 
HLL_HASH + " function, like "
+                                + columnName + "=" + HLL_HASH + "(xxx) or "
+                                + columnName + "=" + HLL_FROM_BASE64 + "(xxx) 
or "
                                 + columnName + "=hll_empty()");
                     }
                 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/LinearHistogram.java
 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/LinearHistogram.java
index 97b42c73464..e23620e38e7 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/LinearHistogram.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/agg/LinearHistogram.java
@@ -17,7 +17,6 @@
 
 package org.apache.doris.nereids.trees.expressions.functions.agg;
 
-import org.apache.doris.catalog.FunctionSet;
 import org.apache.doris.catalog.FunctionSignature;
 import org.apache.doris.nereids.trees.expressions.Expression;
 import 
org.apache.doris.nereids.trees.expressions.functions.ExplicitlyCastableSignature;
@@ -46,23 +45,19 @@ public class LinearHistogram extends 
NotNullableAggregateFunction implements Exp
     );
 
     public LinearHistogram(Expression arg0, Expression arg1) {
-        super(FunctionSet.LINEAR_HISTOGRAM, arg0, arg1);
+        super("linear_histogram", arg0, arg1);
     }
 
     public LinearHistogram(Expression arg0, Expression arg1, Expression arg2) {
-        super(FunctionSet.LINEAR_HISTOGRAM, arg0, arg1, arg2);
-    }
-
-    private LinearHistogram(boolean distinct, List<Expression> args) {
-        super(FunctionSet.LINEAR_HISTOGRAM, distinct, args);
+        super("linear_histogram", arg0, arg1, arg2);
     }
 
     public LinearHistogram(boolean distinct, Expression arg0, Expression arg1) 
{
-        super(FunctionSet.LINEAR_HISTOGRAM, distinct, arg0, arg1);
+        super("linear_histogram", distinct, arg0, arg1);
     }
 
     public LinearHistogram(boolean distinct, Expression arg0, Expression arg1, 
Expression arg2) {
-        super(FunctionSet.LINEAR_HISTOGRAM, distinct, arg0, arg1, arg2);
+        super("linear_histogram", distinct, arg0, arg1, arg2);
     }
 
     /** constructor for withChildren and reuse signature */
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/planner/normalize/ExprNormalizeVisitor.java
 
b/fe/fe-core/src/main/java/org/apache/doris/planner/normalize/ExprNormalizeVisitor.java
index 65d5d819654..084866f9c9b 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/planner/normalize/ExprNormalizeVisitor.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/planner/normalize/ExprNormalizeVisitor.java
@@ -23,12 +23,15 @@ import org.apache.doris.analysis.ExprVisitor;
 import org.apache.doris.analysis.FunctionCallExpr;
 import org.apache.doris.analysis.LambdaFunctionCallExpr;
 import org.apache.doris.analysis.SlotRef;
-import org.apache.doris.catalog.FunctionSet;
 import org.apache.doris.thrift.TExpr;
 import org.apache.doris.thrift.TExprNode;
 import org.apache.doris.thrift.TExprNodeType;
 import org.apache.doris.thrift.TSlotRef;
 
+import com.google.common.collect.ImmutableSet;
+
+import java.util.Set;
+
 /**
  * Visitor that produces a normalized {@link TExprNode} for query cache 
support.
  * Normalization maps slot IDs and tuple IDs through the {@link Normalizer} so 
that
@@ -78,9 +81,8 @@ public class ExprNormalizeVisitor extends ExprVisitor<Void, 
TExprNode> {
     @Override
     public Void visitFunctionCallExpr(FunctionCallExpr expr, TExprNode msg) {
         String functionName = expr.getFnName().getFunction().toUpperCase();
-        if (FunctionSet.nonDeterministicFunctions.contains(functionName)
-                || "NOW".equals(functionName)
-                || 
(FunctionSet.nonDeterministicTimeFunctions.contains(functionName)
+        if (nonDeterministicFunctions.contains(functionName)
+                || (nonDeterministicTimeFunctions.contains(functionName)
                         && expr.getChildren().isEmpty())) {
             throw new IllegalStateException("Can not normalize non 
deterministic functions");
         }
@@ -96,4 +98,30 @@ public class ExprNormalizeVisitor extends ExprVisitor<Void, 
TExprNode> {
 
     // All other visitXxx methods inherit from ExprVisitor and call visit(),
     // which delegates to ExprToThriftVisitor.INSTANCE.
+
+    private static final Set<String> nonDeterministicFunctions =
+            ImmutableSet.<String>builder()
+                    .add("RAND")
+                    .add("RANDOM")
+                    .add("RANDOM_BYTES")
+                    .add("CONNECTION_ID")
+                    .add("DATABASE")
+                    .add("USER")
+                    .add("UUID")
+                    .add("CURRENT_USER")
+                    .add("UUID_NUMERIC")
+                    .build();
+
+    private static final Set<String> nonDeterministicTimeFunctions =
+            ImmutableSet.<String>builder()
+                    .add("NOW")
+                    .add("CURDATE")
+                    .add("CURRENT_DATE")
+                    .add("UTC_TIMESTAMP")
+                    .add("CURTIME")
+                    .add("CURRENT_TIMESTAMP")
+                    .add("CURRENT_TIME")
+                    .add("UNIX_TIMESTAMP")
+                    .add()
+                    .build();
 }
diff --git 
a/fe/fe-core/src/test/java/org/apache/doris/qe/OlapQueryCacheTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/qe/OlapQueryCacheTest.java
index e897ddc0f15..eb065cbffd6 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/qe/OlapQueryCacheTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/qe/OlapQueryCacheTest.java
@@ -26,7 +26,6 @@ import org.apache.doris.analysis.UserIdentity;
 import org.apache.doris.catalog.Column;
 import org.apache.doris.catalog.Database;
 import org.apache.doris.catalog.Env;
-import org.apache.doris.catalog.FunctionSet;
 import org.apache.doris.catalog.KeysType;
 import org.apache.doris.catalog.MaterializedIndex;
 import org.apache.doris.catalog.MaterializedIndex.IndexState;
@@ -149,9 +148,6 @@ public class OlapQueryCacheTest {
             }
         };
 
-        FunctionSet fs = new FunctionSet();
-        Deencapsulation.setField(env, "functionSet", fs);
-
         channel.reset();
 
         new Expectations(channel) {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to