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

Sergey Nuyanzin updated CALCITE-4603:
-------------------------------------
    Description: 
It seems least restrictive always returns the type of the last element from the 
collection.
For instance for
{code:sql}
 select array[array['hello'], array['world'], array['!']] as "array"
{code}
least restrictive gives {{CHAR(1) ARRAY ARRAY}} instead of {{CHAR(5) ARRAY 
ARRAY}}
 for
{code:sql}
select map[map[1.1, 2.1], map[1.1, 2.1], map[1, 1], map[1, 1]] as "map";
{code}
least restrictive gives {{((INTEGER, INTEGER) MAP, (INTEGER, INTEGER) MAP) 
MAP}} instead of \{{((DECIMAL(2, 1), DECIMAL(2, 1)) MAP, (DECIMAL(2, 1), 
DECIMAL(2, 1)) MAP) MAP }}
 for
{code:sql}
select multiset[array['hello'], array['world'], array['!']] as "multiset";
{code}
least restrictive gives {{CHAR(1) ARRAY MULTISET }} instead of {{CHAR(5) ARRAY 
MULTISET }}

  was:
It seems least restrictive always returns the type of the last element from the 
collection.
For instance for
{code:sql}
 select array[array['hello'], array['world'], array['!']] as "array"
{code}
least restrictive gives {{CHAR(1) ARRAY ARRAY}} instead of {{CHAR(5) ARRAY 
ARRAY}}
 for
{code:sql}
select map[map[1.1, 2.1], map[1.1, 2.1], map[1, 1], map[1, 1]] as "map";
{code}
least restrictive gives {{((INTEGER, INTEGER) MAP, (INTEGER, INTEGER) MAP) 
MAP}} instead of \{{((DECIMAL(2, 1), DECIMAL(2, 1)) MAP, (DECIMAL(2, 1), 
DECIMAL(2, 1)) MAP) MAP }}
 for
{code:sql}
select multiset[array['hello'], array['world'], array['!']] as "multiset";
{code}
least restrictive gives \{{CHAR(1) ARRAY MULTISET }} instead of \{{CHAR(5) 
ARRAY MULTISET }}


> Least restrictive type considers only the last element in collections of 
> collections
> ------------------------------------------------------------------------------------
>
>                 Key: CALCITE-4603
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4603
>             Project: Calcite
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 1.26.0
>            Reporter: Sergey Nuyanzin
>            Priority: Major
>
> It seems least restrictive always returns the type of the last element from 
> the collection.
> For instance for
> {code:sql}
>  select array[array['hello'], array['world'], array['!']] as "array"
> {code}
> least restrictive gives {{CHAR(1) ARRAY ARRAY}} instead of {{CHAR(5) ARRAY 
> ARRAY}}
>  for
> {code:sql}
> select map[map[1.1, 2.1], map[1.1, 2.1], map[1, 1], map[1, 1]] as "map";
> {code}
> least restrictive gives {{((INTEGER, INTEGER) MAP, (INTEGER, INTEGER) MAP) 
> MAP}} instead of \{{((DECIMAL(2, 1), DECIMAL(2, 1)) MAP, (DECIMAL(2, 1), 
> DECIMAL(2, 1)) MAP) MAP }}
>  for
> {code:sql}
> select multiset[array['hello'], array['world'], array['!']] as "multiset";
> {code}
> least restrictive gives {{CHAR(1) ARRAY MULTISET }} instead of {{CHAR(5) 
> ARRAY MULTISET }}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to