[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:
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user