[ 
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)

Reply via email to