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]
