[ 
https://issues.apache.org/jira/browse/CALCITE-6040?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17772800#comment-17772800
 ] 

Benchao Li commented on CALCITE-6040:
-------------------------------------

LeastRestrictive type deduction should only be applied to literals from keys or 
values. In your case, it should not deduce {{Integer}} as value type.

> SqlOperatorFixture check result type failed for converted types
> ---------------------------------------------------------------
>
>                 Key: CALCITE-6040
>                 URL: https://issues.apache.org/jira/browse/CALCITE-6040
>             Project: Calcite
>          Issue Type: Bug
>          Components: tests
>    Affects Versions: 1.35.0
>            Reporter: Ran Tao
>            Priority: Major
>
> we have a simple test case:
> {code:java}
> f.checkScalar("map[1, null]", "{1=null}",
> "(INTEGER NOT NULL, INTEGER) MAP NOT NULL"); {code}
> The result is:
> {noformat}
> java.lang.AssertionError: Query: values (map[1, null])
> Expected: is "(INTEGER NOT NULL, INTEGER) MAP NOT NULL"
>      but: was "(INTEGER NOT NULL, NULL) MAP NOT NULL"
> {noformat}
> however, the asserted actual result "(INTEGER NOT NULL, NULL) MAP NOT NULL" 
> for this case is wrong. If we switch to  this asserted actual result it 
> throws another exception:
> {noformat}
> java.lang.AssertionError: Query: select map[p0, null] from (values (1)) as 
> t(p0)
> Expected: is "(INTEGER NOT NULL, NULL) MAP NOT NULL"
>      but: was "(INTEGER NOT NULL, INTEGER) MAP NOT NULL"
> {noformat}
> No matter how you write this result type in test case, it is wrong. 
> but if we use 
> {code:java}
> f.check("select map[1, null]", "{1=null}", "(INTEGER NOT NULL, INTEGER) MAP 
> NOT NULL");  {code}
> it works.
> the reason is map[1, null] will do leastRestrictive, the null will convert to 
> Integer, so the end converted result type is (INTEGER NOT NULL, INTEGER), but 
> the temp type is (INTEGER NOT NULL, NULL). 
> This case indicates that we can not use 'checkScalar' if the expression has 
> converted types.
> btw, Just report this issue, it's probably not a bug. (we can use 
> SqlOperatorFixture.check in this situation)



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

Reply via email to