[ https://issues.apache.org/jira/browse/FLINK-31778?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17711359#comment-17711359 ]
Ilya Soin commented on FLINK-31778: ----------------------------------- Proposed solution: move these to statements instead of class fields: {code:java} final CastRuleUtils.CodeWriter writer = new CastRuleUtils.CodeWriter() .declStmt( BinaryRowData.class, rowTerm, constructorCall(BinaryRowData.class, inputFields.size())) .declStmt( BinaryRowWriter.class, writerTerm, constructorCall(BinaryRowWriter.class, rowTerm)); {code} And add tests to [https://github.com/apache/flink/blob/master/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/casting/CastRulesTest.java] Tested it locally – works as expected. Would like to discuss this approach and submit a PR once consensus is reached. > Casting array of rows produces incorrect result > ----------------------------------------------- > > Key: FLINK-31778 > URL: https://issues.apache.org/jira/browse/FLINK-31778 > Project: Flink > Issue Type: Bug > Components: Table SQL / Planner > Affects Versions: 1.16.1, 1.15.4 > Reporter: Ilya Soin > Priority: Major > Attachments: image-2023-04-12-15-23-46-669.png, screenshot-2.png > > > {code:java} > select CAST(commissions AS ARRAY<ROW<amount DOUBLE>>) as commissions > from (select ARRAY[ROW(123), ROW(234)] commissions){code} > Expected output: > {code:java} > +----+--------------------------------+ > | op | commissions | > +----+--------------------------------+ > | +I | [(123.0), (234.0)] | > +----+--------------------------------+ > {code} > Actual output: > {code:java} > +----+--------------------------------+ > | op | commissions | > +----+--------------------------------+ > | +I | [(234.0), (234.0)] | > +----+--------------------------------+ {code} > Full working example: > https://gist.github.com/soin08/5e0038dbefeba9192706e05a78ef3bc1 -- This message was sent by Atlassian Jira (v8.20.10#820010)