xiemeilong created FLINK-17683: ---------------------------------- Summary: Pojo with no-args constructor will be treated as ROW when returned by ScalarFunction, but not when it is a field of case class. Key: FLINK-17683 URL: https://issues.apache.org/jira/browse/FLINK-17683 Project: Flink Issue Type: Bug Components: Table SQL / API Affects Versions: 1.10.1 Reporter: xiemeilong
Pojo.java {code:java} @Data @NoArgsConstructor public class Pojo { private String foo; } {code} {code:java} object Fun extends ScalarFunction { def eval(): Pojo = { new Pojo() } } case class CaseClass(pojo:Pojo) {code} {code:java} tableEnv.registerFunction("fun", Fun) val table = tableEnv.sqlQuery("select fun() as pojo") table.toRetractStream[CaseClass].print() {code} exception: {code:java} Exception in thread "main" org.apache.flink.table.api.ValidationException: Field types of query result and registered TableSink do not match. Query schema: [pojo: ROW<`foo` STRING>] Sink schema: [pojo: LEGACY('STRUCTURED_TYPE', 'POJO<com.yunmo.iot.Pojo>')] {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)