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