[
https://issues.apache.org/jira/browse/FLINK-7596?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ruidong Li updated FLINK-7596:
------------------------------
Description:
If two inputs with Any(GenericRelDataType), when they comes to Set
Operation(Union, minus...), it will cause a {{TableException}} with info is
"Type is not supported: ANY"
Here is the test case:
{{
@Test
def testUnion(): Unit = {
val list = List((1, new NODE), (2, new NODE))
val list2 = List((3, new NODE), (4, new NODE))
val env = StreamExecutionEnvironment.getExecutionEnvironment
val tEnv = TableEnvironment.getTableEnvironment(env)
val s1 = tEnv.fromDataStream(env.fromCollection(list))
val s2 = tEnv.fromDataStream(env.fromCollection(list2))
val result = s1.unionAll(s2).toAppendStream[Row]
result.addSink(new StreamITCase.StringSink[Row])
env.execute()
}
class NODE {
val x = new util.HashMap[String, String]()
}
}}
this bug happens because flink did't handle createSqlType(ANY) and Calcite
does't know the differences between {{ANY}} and {{ANY(GenericRelDataType)}}, so
the {{createSqlType(ANY)}} of Calcite will return a BasicSqlType instead
was:
If two inputs with Any(GenericRelDataType), when they comes to Set
Operation(Union, minus...), it will cause a `TableException` with info is "Type
is not supported: ANY"
Here is the test case:
`
@Test
def testUnion(): Unit = {
val list = List((1, new NODE), (2, new NODE))
val list2 = List((3, new NODE), (4, new NODE))
val env = StreamExecutionEnvironment.getExecutionEnvironment
val tEnv = TableEnvironment.getTableEnvironment(env)
val s1 = tEnv.fromDataStream(env.fromCollection(list))
val s2 = tEnv.fromDataStream(env.fromCollection(list2))
val result = s1.unionAll(s2).toAppendStream[Row]
result.addSink(new StreamITCase.StringSink[Row])
env.execute()
}
class NODE {
val x = new util.HashMap[String, String]()
}
`
this bug happens because flink did't handle createSqlType(ANY) and Calcite
does't know the differences between `ANY` and `ANY(GenericRelDataType)`, so the
`createSqlType(ANY)` of Calcite will return a BasicSqlType instead
> Fix bug during Set Operation (Union, Minus ... ) with Any(GenericRelDataType)
> ------------------------------------------------------------------------------
>
> Key: FLINK-7596
> URL: https://issues.apache.org/jira/browse/FLINK-7596
> Project: Flink
> Issue Type: Bug
> Components: Table API & SQL
> Reporter: Ruidong Li
> Assignee: Ruidong Li
>
> If two inputs with Any(GenericRelDataType), when they comes to Set
> Operation(Union, minus...), it will cause a {{TableException}} with info is
> "Type is not supported: ANY"
> Here is the test case:
> {{
> @Test
> def testUnion(): Unit = {
> val list = List((1, new NODE), (2, new NODE))
> val list2 = List((3, new NODE), (4, new NODE))
> val env = StreamExecutionEnvironment.getExecutionEnvironment
> val tEnv = TableEnvironment.getTableEnvironment(env)
> val s1 = tEnv.fromDataStream(env.fromCollection(list))
> val s2 = tEnv.fromDataStream(env.fromCollection(list2))
> val result = s1.unionAll(s2).toAppendStream[Row]
> result.addSink(new StreamITCase.StringSink[Row])
> env.execute()
> }
> class NODE {
> val x = new util.HashMap[String, String]()
> }
> }}
> this bug happens because flink did't handle createSqlType(ANY) and Calcite
> does't know the differences between {{ANY}} and {{ANY(GenericRelDataType)}},
> so the {{createSqlType(ANY)}} of Calcite will return a BasicSqlType instead
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)