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

morningman pushed a commit to branch dev-1.0.0
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git

commit 13ad45e298f0d2fc134fb2b7e490910bb7b96e0f
Author: Pxl <[email protected]>
AuthorDate: Thu Mar 10 09:07:07 2022 +0800

    [feature](function) support vectorized digital_masking (#8409)
---
 .../org/apache/doris/catalog/AliasFunction.java    | 35 ++++++++++++++--------
 .../java/org/apache/doris/catalog/Function.java    |  2 +-
 2 files changed, 23 insertions(+), 14 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/AliasFunction.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/AliasFunction.java
index c212976..1203b7f 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/AliasFunction.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/AliasFunction.java
@@ -73,7 +73,7 @@ public class AliasFunction extends Function {
     }
 
     public static AliasFunction createFunction(FunctionName functionName, 
Type[] argTypes, Type retType,
-                                               boolean hasVarArgs, 
List<String> parameters, Expr originFunction) {
+            boolean hasVarArgs, List<String> parameters, Expr originFunction) {
         AliasFunction aliasFunction = new AliasFunction(functionName, 
Arrays.asList(argTypes), retType, hasVarArgs);
         aliasFunction.setBinaryType(TFunctionBinaryType.NATIVE);
         aliasFunction.setUserVisible(true);
@@ -89,7 +89,11 @@ public class AliasFunction extends Function {
              * Please ensure that the condition checks in {@link #analyze} are 
satisfied
              */
             functionSet.addBuiltin(createBuiltin(DIGITAL_MASKING, 
Lists.newArrayList(Type.BIGINT), Type.VARCHAR,
-                    false, Lists.newArrayList("id"), getExpr(oriStmt), true));
+                    false, Lists.newArrayList("id"), getExpr(oriStmt), true, 
false));
+
+            functionSet.addBuiltin(createBuiltin(DIGITAL_MASKING, 
Lists.newArrayList(Type.BIGINT), Type.VARCHAR,
+                    false, Lists.newArrayList("id"), getExpr(oriStmt), true, 
true));
+
         } catch (AnalysisException e) {
             LOG.error("Add builtin alias function error {}", e);
         }
@@ -110,7 +114,7 @@ public class AliasFunction extends Function {
             LOG.info("analysis exception happened when parsing stmt {}, error: 
{}",
                     sql, syntaxError, e);
             if (syntaxError == null) {
-                throw  e;
+                throw e;
             } else {
                 throw new AnalysisException(syntaxError, e);
             }
@@ -126,13 +130,14 @@ public class AliasFunction extends Function {
     }
 
     private static AliasFunction createBuiltin(String name, ArrayList<Type> 
argTypes, Type retType,
-                                              boolean hasVarArgs, List<String> 
parameters, Expr originFunction,
-                                              boolean userVisible) {
+            boolean hasVarArgs, List<String> parameters, Expr originFunction,
+            boolean userVisible, boolean isVectorized) {
         AliasFunction aliasFunction = new AliasFunction(new 
FunctionName(name), argTypes, retType, hasVarArgs);
         aliasFunction.setBinaryType(TFunctionBinaryType.BUILTIN);
         aliasFunction.setUserVisible(userVisible);
         aliasFunction.originFunction = originFunction;
         aliasFunction.parameters = parameters;
+        aliasFunction.vectorized = isVectorized;
         return aliasFunction;
     }
 
@@ -154,7 +159,8 @@ public class AliasFunction extends Function {
 
     public void analyze() throws AnalysisException {
         if (parameters.size() != getArgs().length) {
-            throw new AnalysisException("Alias function [" + functionName() + 
"] args number is not equal to parameters number");
+            throw new AnalysisException(
+                    "Alias function [" + functionName() + "] args number is 
not equal to parameters number");
         }
         List<Expr> exprs;
         if (originFunction instanceof FunctionCallExpr) {
@@ -188,7 +194,8 @@ public class AliasFunction extends Function {
         Set<String> set = new HashSet<>();
         for (String str : parameters) {
             if (!set.add(str)) {
-                throw new AnalysisException("Alias function [" + 
functionName() + "] has duplicate parameter [" + str + "].");
+                throw new AnalysisException(
+                        "Alias function [" + functionName() + "] has duplicate 
parameter [" + str + "].");
             }
             boolean existFlag = false;
             // check exprs
@@ -200,7 +207,8 @@ public class AliasFunction extends Function {
                 existFlag |= typeDefParam.equals(str);
             }
             if (!existFlag) {
-                throw new AnalysisException("Alias function [" + 
functionName() + "]  do not contain parameter [" + str + "].");
+                throw new AnalysisException(
+                        "Alias function [" + functionName() + "]  do not 
contain parameter [" + str + "].");
             }
         }
     }
@@ -227,11 +235,11 @@ public class AliasFunction extends Function {
             sb.append("IF NOT EXISTS ");
         }
         sb.append(signatureString())
-            .append(" WITH PARAMETER(")
-            .append(getParamsSting(parameters))
-            .append(") AS ")
-            .append(originFunction.toSql())
-            .append(";");
+                .append(" WITH PARAMETER(")
+                .append(getParamsSting(parameters))
+                .append(") AS ")
+                .append(originFunction.toSql())
+                .append(";");
         return sb.toString();
     }
 
@@ -273,6 +281,7 @@ public class AliasFunction extends Function {
 
     /**
      * set slotRef label to column name
+     * 
      * @param expr
      */
     private void setSlotRefLabel(Expr expr) {
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 0b11668..2e64112 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
@@ -118,7 +118,7 @@ public class Function implements Writable {
 
     protected NullableMode nullableMode = NullableMode.DEPEND_ON_ARGUMENT;
 
-    private boolean vectorized = false;
+    protected boolean vectorized = false;
 
     // library's checksum to make sure all backends use one library to serve 
user's request
     protected String checksum = "";

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

Reply via email to