shaomeng.wang created FLINK-10965: ------------------------------------- Summary: suggest that change $resultTypeTerm to Object at org.apache.flink.table.codegen.calls.ScalarFunctionCallGen:104 Key: FLINK-10965 URL: https://issues.apache.org/jira/browse/FLINK-10965 Project: Flink Issue Type: Bug Components: Table API & SQL Affects Versions: 1.5.5 Environment: 1.5.4 Reporter: shaomeng.wang
at org.apache.flink.table.codegen.calls.ScalarFunctionCallGen:104 {code:java} val functionCallCode = s""" |${parameters.map(_.code).mkString("\n")} |$resultTypeTerm $resultTerm = $functionReference.eval( | ${parameters.map(_.resultTerm).mkString(", ")}); |""".stripMargin{code} when wrap a scalar function from another, I use the prototype of "eval" and "getResultType" as {code:java} public Object eval(Object... objs) throws Exception public TypeInformation<?> getResultType(Class<?>[] signature) { {code} but, in codegen, it is change to {code:java} String reseult = eval(...){code} when getResultType return Types.STRING and get error message as: {panel:title=error msg} Caused by: org.codehaus.commons.compiler.CompileException: Line 121, Column 13: Assignment conversion not possible from type "java.lang.Object" to type "double" at org.codehaus.janino.UnitCompiler.compileError(UnitCompiler.java:11672) at org.codehaus.janino.UnitCompiler.assignmentConversion(UnitCompiler.java:10528) at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:3452) at org.codehaus.janino.UnitCompiler.access$5200(UnitCompiler.java:212) at org.codehaus.janino.UnitCompiler$9.visitAssignment(UnitCompiler.java:3416) at org.codehaus.janino.UnitCompiler$9.visitAssignment(UnitCompiler.java:3396) at org.codehaus.janino.Java$Assignment.accept(Java.java:4300) at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:3396) at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:2316) at org.codehaus.janino.UnitCompiler.access$1700(UnitCompiler.java:212) at org.codehaus.janino.UnitCompiler$6.visitExpressionStatement(UnitCompiler.java:1450) at org.codehaus.janino.UnitCompiler$6.visitExpressionStatement(UnitCompiler.java:1443) at org.codehaus.janino.Java$ExpressionStatement.accept(Java.java:2848) at org.codehaus.janino.UnitCompiler.compile(UnitCompiler.java:1443) at org.codehaus.janino.UnitCompiler.compileStatements(UnitCompiler.java:1523) at org.codehaus.janino.UnitCompiler.compile2(UnitCompiler.java:1509) at org.codehaus.janino.UnitCompiler.access$1600(UnitCompiler.java:212) {panel} the gen code is: {code:java} @Override public void flatMap(Object _in1, org.apache.flink.util.Collector c) throws Exception { org.apache.flink.types.Row in1 = (org.apache.flink.types.Row) _in1; boolean isNull$1 = (java.lang.String) in1.getField(0) == null; java.lang.String result$0; if (isNull$1) { result$0 = ""; } else { result$0 = (java.lang.String) (java.lang.String) in1.getField(0); } java.lang.String result$2 = function_com$test$Test.eval( isNull$1 ? null : (java.lang.String) result$0); boolean isNull$4 = result$2 == null; java.lang.String result$3; if (isNull$4) { result$3 = ""; } else { result$3 = (java.lang.String) result$2; } if (isNull$4) { out.setField(0, null); } else { out.setField(0, result$3); } c.collect(out); } {code} -- This message was sent by Atlassian JIRA (v7.6.3#76005)