[ 
https://issues.apache.org/jira/browse/FLINK-34898?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chloe He updated FLINK-34898:
-----------------------------
    Affects Version/s: 1.19.0
          Description: 
I want to construct data that consists of arrays of named STRUCT. For example, 
one field may look like `[\{"a": 1}]`. I am able to construct this named STRUCT 
as
{code:java}
SELECT CAST(ROW(1) as ROW<a INT>) AS row1;  {code}
but when I try to wrap this in an ARRAY, it fails:
{code:java}
SELECT ARRAY[CAST(ROW(1) as ROW<a INT>)] AS row1;  

// error
Caused by: java.lang.UnsupportedOperationException: class 
org.apache.calcite.sql.SqlBasicCall: ROW(1)
{code}
These are the workarounds that I found:
{code:java}
SELECT ROW(ROW(CAST(ROW(1) as ROW<a INT>))) AS row1; 
// or
SELECT cast(ARRAY[ROW(1)] as ARRAY<ROW<a INT>>); {code}
but I think this is a bug that we need to follow up and fix.

  was:
I'm trying to create named structs using Flink SQL and I found a previous 
ticket https://issues.apache.org/jira/browse/FLINK-9161 that mentions the use 
of the following syntax:
{code:java}
SELECT CAST(('a', 1) as ROW<a STRING, b INT>) AS row1;
{code}
However, my named struct has a single field and effectively it should look 
something like `\{"a": 1}`. I can't seem to be able to find a way to construct 
this. I have experimented with a few different syntax and it either throws 
parsing error or casting error:
{code:java}
Cast function cannot convert value of type INTEGER to type 
RecordType(VARCHAR(2147483647) a) {code}

              Summary: Cannot create ARRAY of named STRUCTs  (was: Cannot 
create named STRUCT with a single field)

> Cannot create ARRAY of named STRUCTs
> ------------------------------------
>
>                 Key: FLINK-34898
>                 URL: https://issues.apache.org/jira/browse/FLINK-34898
>             Project: Flink
>          Issue Type: Bug
>    Affects Versions: 1.19.0
>            Reporter: Chloe He
>            Priority: Major
>         Attachments: image-2024-03-21-12-00-00-183.png
>
>
> I want to construct data that consists of arrays of named STRUCT. For 
> example, one field may look like `[\{"a": 1}]`. I am able to construct this 
> named STRUCT as
> {code:java}
> SELECT CAST(ROW(1) as ROW<a INT>) AS row1;  {code}
> but when I try to wrap this in an ARRAY, it fails:
> {code:java}
> SELECT ARRAY[CAST(ROW(1) as ROW<a INT>)] AS row1;  
> // error
> Caused by: java.lang.UnsupportedOperationException: class 
> org.apache.calcite.sql.SqlBasicCall: ROW(1)
> {code}
> These are the workarounds that I found:
> {code:java}
> SELECT ROW(ROW(CAST(ROW(1) as ROW<a INT>))) AS row1; 
> // or
> SELECT cast(ARRAY[ROW(1)] as ARRAY<ROW<a INT>>); {code}
> but I think this is a bug that we need to follow up and fix.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to