[
https://issues.apache.org/jira/browse/CALCITE-6040?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ran Tao updated CALCITE-6040:
-----------------------------
Description:
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 actual result "(INTEGER NOT NULL, NULL) MAP NOT NULL" for this
case is wrong. If we switch to this case it throw 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 [1, null] will do leastRestrictive, the null will cast 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 for converted types. Just
report this issue, it maybe not bug. (we should check)
was:
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 actual result "(INTEGER NOT NULL, NULL) MAP NOT NULL" for this
case is wrong. If we switch to this case it throw 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 [1, null] will do leastRestrictive, the null will cast to
Integer, so the end converted result type is (INTEGER NOT NULL, INTEGER), but
the temp type is (INTEGER NOT NULL, NULL).
> 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 actual result "(INTEGER NOT NULL, NULL) MAP NOT NULL" for this
> case is wrong. If we switch to this case it throw 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 [1, null] will do leastRestrictive, the null will cast 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 for converted types. Just
> report this issue, it maybe not bug. (we should check)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)