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)