[ https://issues.apache.org/jira/browse/FLINK-10834?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
sunjincheng updated FLINK-10834: -------------------------------- Description: We have a UDF as follows: {code:java} object FuncRow extends ScalarFunction { def eval(v: Int): Row = { val version = "" + new Random().nextInt() val row = new Row(3) row.setField(0, version) row.setField(1, version) row.setField(2, version) row } override def isDeterministic: Boolean = false override def getResultType(signature: Array[Class[_]]): TypeInformation[_] = Types.ROW(Types.STRING, Types.STRING, Types.STRING) } {code} Do the following Query: {code:sql} val data = new mutable.MutableList[(Int, Long, String)] data.+=((1, 1L, "Hi")) val ds = env.fromCollection(data).toTable(tEnv, 'a, 'b,'c) .select(FuncRow('a).flatten()).as('v1, 'v2, 'v3) {code} The result is : -1189206469,-151367792,1988676906 The result expected by the user should be: v1==v2==v3 . It looks the real reason is that there is no result of the reuse in codegen. was: We have a UDF as follows: <code> object FuncRow extends ScalarFunction { def eval(v: Int): Row = { val version = "" + new Random().nextInt() val row = new Row(3) row.setField(0, version) row.setField(1, version) row.setField(2, version) row } override def isDeterministic: Boolean = false override def getResultType(signature: Array[Class[_]]): TypeInformation[_] = Types.ROW(Types.STRING, Types.STRING, Types.STRING) } </code> <code> ... val data = new mutable.MutableList[(Int, Long, String)] data.+=((1, 1L, "Hi")) val ds = env.fromCollection(data).toTable(tEnv, 'a, 'b,'c) .select(FuncRow('a).flatten()).as('v1, 'v2, 'v3) ... </code> The result is : -1189206469,-151367792,1988676906 The result expected by the user should be: v1==v2==v3 . It looks the real reason is that there is no result of the reuse in codegen. > TableAPI flatten calculated value error > --------------------------------------- > > Key: FLINK-10834 > URL: https://issues.apache.org/jira/browse/FLINK-10834 > Project: Flink > Issue Type: Bug > Components: Table API & SQL > Reporter: sunjincheng > Priority: Major > Fix For: 1.7.1 > > > We have a UDF as follows: > {code:java} > object FuncRow extends ScalarFunction { > def eval(v: Int): Row = > { val version = "" + new Random().nextInt() val row = new > Row(3) row.setField(0, version) row.setField(1, version) > row.setField(2, version) row } > override def isDeterministic: Boolean = false > override def getResultType(signature: Array[Class[_]]): TypeInformation[_] = > Types.ROW(Types.STRING, Types.STRING, Types.STRING) > } > {code} > Do the following Query: > {code:sql} > val data = new mutable.MutableList[(Int, Long, String)] > data.+=((1, 1L, "Hi")) > val ds = env.fromCollection(data).toTable(tEnv, 'a, 'b,'c) > .select(FuncRow('a).flatten()).as('v1, 'v2, 'v3) > {code} > The result is : -1189206469,-151367792,1988676906 > The result expected by the user should be: v1==v2==v3 . > It looks the real reason is that there is no result of the reuse in codegen. > -- This message was sent by Atlassian JIRA (v7.6.3#76005)