[Improvement](log) avoid warn log in specializeTemplateFunction at initialization (#18070)

avoid warn log in specializeTemplateFunction at initialization like this:

```
2023-03-23 21:17:54,931 INFO (leaderCheckpointer|89) [FunctionSet.specializeTemplateFunction():1337] specializeTemplateFunction exception at initialize
org.apache.doris.catalog.TypeException: ARRAY<DECIMALV3(9, 0)> is not MapType
        at org.apache.doris.catalog.MapType.specializeTemplateType(MapType.java:137) ~[fe-common-1.2-SNAPSHOT.jar:1.2-SNAPSHOT]
        at org.apache.doris.catalog.FunctionSet.specializeTemplateFunction(FunctionSet.java:1321) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.catalog.FunctionSet.getFunction(FunctionSet.java:1251) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.catalog.FunctionSet.getFunction(FunctionSet.java:1216) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.catalog.FunctionSet.addBuiltinBothScalaAndVectorized(FunctionSet.java:1449) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.catalog.FunctionSet.addScalarAndVectorizedBuiltin(FunctionSet.java:1432) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.builtins.ScalarBuiltins.initBuiltins(ScalarBuiltins.java:108) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.catalog.FunctionSet.init(FunctionSet.java:87) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.catalog.Env.<init>(Env.java:585) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.catalog.Env.getCurrentEnv(Env.java:665) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.master.Checkpoint.doCheckpoint(Checkpoint.java:143) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.master.Checkpoint.runAfterCatalogReady(Checkpoint.java:77) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.common.util.MasterDaemon.runOneCycle(MasterDaemon.java:58) ~[doris-fe.jar:1.2-SNAPSHOT]
        at org.apache.doris.common.util.Daemon.run(Daemon.java:116) ~[doris-fe.jar:1.2-SNAPSHOT]
```
This commit is contained in:
Kang
2023-03-30 10:17:21 +08:00
committed by GitHub
parent 3094815f8f
commit 58bc18af54

View File

@ -66,6 +66,8 @@ public class FunctionSet<T> {
// Including now(), curdate(), etc..
private ImmutableSet<String> nondeterministicFunctions;
private boolean inited = false;
public FunctionSet() {
functions = Maps.newHashMap();
vectorizedFunctions = Maps.newHashMap();
@ -90,6 +92,8 @@ public class FunctionSet<T> {
// init table function
initTableFunction();
inited = true;
}
public void buildNullResultWithOneNullParamFunction(Set<String> funcNames) {
@ -1249,7 +1253,7 @@ public class FunctionSet<T> {
// then specialize template functions and try them
List<Function> specializedTemplateFunctions = Lists.newArrayList();
for (Function f : templateFunctions) {
f = FunctionSet.specializeTemplateFunction(f, desc, false);
f = specializeTemplateFunction(f, desc, false);
if (f != null) {
specializedTemplateFunctions.add(f);
}
@ -1264,7 +1268,7 @@ public class FunctionSet<T> {
// then specialize variadic template function and try them
List<Function> specializedVariadicTemplateFunctions = Lists.newArrayList();
for (Function f : variadicTemplateFunctions) {
f = FunctionSet.specializeTemplateFunction(f, desc, true);
f = specializeTemplateFunction(f, desc, true);
if (f != null) {
specializedVariadicTemplateFunctions.add(f);
}
@ -1314,7 +1318,7 @@ public class FunctionSet<T> {
return null;
}
public static Function specializeTemplateFunction(Function templateFunction, Function requestFunction, boolean isVariadic) {
public Function specializeTemplateFunction(Function templateFunction, Function requestFunction, boolean isVariadic) {
try {
boolean hasTemplateType = false;
LOG.debug("templateFunction signature: " + templateFunction.signatureString()
@ -1352,7 +1356,8 @@ public class FunctionSet<T> {
specializedFunction = new ScalarFunction(f.getFunctionName(), newArgTypes, newRetType.get(0), f.hasVarArgs(),
f.getSymbolName(), f.getBinaryType(), f.isUserVisible(), f.isVectorized(), f.getNullableMode());
} else {
// TODO(xk)
throw new TypeException(templateFunction
+ " is not support for template since it's not a ScalarFunction");
}
Type[] args = specializedFunction.getArgs();
Map<String, Type> specializedTypeMap = Maps.newHashMap();
@ -1372,7 +1377,9 @@ public class FunctionSet<T> {
+ " return: " + specializedFunction.getReturnType());
return hasTemplateType ? specializedFunction : templateFunction;
} catch (TypeException e) {
LOG.warn("specializeTemplateFunction exception", e);
if (inited) {
LOG.warn("specializeTemplateFunction exception", e);
}
return null;
}
}