[ https://issues.apache.org/jira/browse/FLINK-10834?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16681180#comment-16681180 ]
Fabian Hueske commented on FLINK-10834: --------------------------------------- Do you know what the SQL standard defines for non-deterministic functions (or how other DBMS handle the situation)? Should they be evaluated just once per row? If not, than this behavior might be actually fine. This might also be a Calcite issue. > 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 > Assignee: Hequn Cheng > 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)