Github user fhueske commented on a diff in the pull request:
https://github.com/apache/flink/pull/3791#discussion_r114188108
--- Diff:
flink-libraries/flink-table/src/test/scala/org/apache/flink/table/api/scala/stream/table/UserDefinedTableFunctionTest.scala
---
@@ -50,72 +50,85 @@ class UserDefinedTableFunctionTest extends
TableTestBase {
// Java environment
val javaEnv = mock(classOf[JavaExecutionEnv])
- val javaTableEnv = TableEnvironment.getTableEnvironment(javaEnv)
- val in2 = javaTableEnv.fromDataStream(jDs).as("a, b, c")
+ val jtEnv = TableEnvironment.getTableEnvironment(javaEnv)
+ val in2 = jtEnv.fromDataStream(jDs).as("a, b, c")
// test cross join
val func1 = new TableFunc1
- javaTableEnv.registerFunction("func1", func1)
+ jtEnv.registerFunction("func1", func1)
var scalaTable = in1.join(func1('c) as 's).select('c, 's)
- var javaTable = in2.join("func1(c).as(s)").select("c, s")
+ var javaTable = in2.join(jtEnv.tableApply("func1(c)")
+ .as("s")).select("c, s")
verifyTableEquals(scalaTable, javaTable)
// test left outer join
scalaTable = in1.leftOuterJoin(func1('c) as 's).select('c, 's)
- javaTable = in2.leftOuterJoin("as(func1(c), s)").select("c, s")
+ javaTable = in2.leftOuterJoin(
+ jtEnv.tableApply("func1(c)")
+ .as("s")
+ ).select("c, s")
verifyTableEquals(scalaTable, javaTable)
// test overloading
scalaTable = in1.join(func1('c, "$") as 's).select('c, 's)
- javaTable = in2.join("func1(c, '$') as (s)").select("c, s")
+ javaTable = in2.join(jtEnv.tableApply("func1(c, '$')")
+ .as("s")).select("c, s")
verifyTableEquals(scalaTable, javaTable)
// test custom result type
val func2 = new TableFunc2
- javaTableEnv.registerFunction("func2", func2)
+ jtEnv.registerFunction("func2", func2)
scalaTable = in1.join(func2('c) as ('name, 'len)).select('c, 'name,
'len)
- javaTable = in2.join("func2(c).as(name, len)").select("c, name, len")
+ javaTable = in2.join(
+ jtEnv.tableApply("func2(c)")
+ .as("name, len"))
+ .select("c, name, len")
verifyTableEquals(scalaTable, javaTable)
// test hierarchy generic type
val hierarchy = new HierarchyTableFunction
- javaTableEnv.registerFunction("hierarchy", hierarchy)
- scalaTable = in1.join(hierarchy('c) as ('name, 'adult, 'len))
+ jtEnv.registerFunction("hierarchy", hierarchy)
+ scalaTable = in1.join(hierarchy('c) as ('name, 'len, 'adult))
.select('c, 'name, 'len, 'adult)
- javaTable = in2.join("AS(hierarchy(c), name, adult, len)")
+ javaTable = in2.join(jtEnv.tableApply("hierarchy(c)")
+ .as("name, len, adult"))
.select("c, name, len, adult")
verifyTableEquals(scalaTable, javaTable)
// test pojo type
val pojo = new PojoTableFunc
- javaTableEnv.registerFunction("pojo", pojo)
+ jtEnv.registerFunction("pojo", pojo)
scalaTable = in1.join(pojo('c))
.select('c, 'name, 'age)
- javaTable = in2.join("pojo(c)")
+ javaTable = in2.join(jtEnv.tableApply("pojo(c)"))
.select("c, name, age")
verifyTableEquals(scalaTable, javaTable)
// test with filter
scalaTable = in1.join(func2('c) as ('name, 'len))
.select('c, 'name, 'len).filter('len > 2)
- javaTable = in2.join("func2(c) as (name, len)")
+ javaTable = in2.join(jtEnv.tableApply("func2(c)") as ("name, len"))
.select("c, name, len").filter("len > 2")
verifyTableEquals(scalaTable, javaTable)
// test with scalar function
scalaTable = in1.join(func1('c.substring(2)) as 's)
.select('a, 'c, 's)
- javaTable = in2.join("func1(substring(c, 2)) as (s)")
+ javaTable = in2.join(jtEnv.tableApply("func1(substring(c, 2))") as
("s"))
.select("a, c, s")
verifyTableEquals(scalaTable, javaTable)
// check scala object is forbidden
expectExceptionThrown(
tableEnv.registerFunction("func3", ObjectTableFunction), "Scala
object")
expectExceptionThrown(
- javaTableEnv.registerFunction("func3", ObjectTableFunction), "Scala
object")
+ jtEnv.registerFunction("func3", ObjectTableFunction), "Scala object")
expectExceptionThrown(
- in1.join(ObjectTableFunction('a, 1)), "Scala object")
+ {
--- End diff --
Please avoid unnecessary refactorings. They make PRs harder to review and
might be reverted by the next person going over this code.
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---