[
https://issues.apache.org/jira/browse/CALCITE-5930?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17755341#comment-17755341
]
libopeng commented on CALCITE-5930:
-----------------------------------
As far as I know, there are two places where the 'in' subquery becomes a
'join', one is sqlToRel(expand=true) and the other is SubQueryRemoveRule, and I
will try to change both places. As for the validation phase, I don't think it
has anything to do with that.
> When sqlToRel is converted from in to join, condition '=' on both sides will
> have inconsistent data types.
> ----------------------------------------------------------------------------------------------------------
>
> Key: CALCITE-5930
> URL: https://issues.apache.org/jira/browse/CALCITE-5930
> Project: Calcite
> Issue Type: Bug
> Reporter: libopeng
> Priority: Major
>
> Wrong calculation result
> {code:java}
> select *
> from dept
> where deptno in (
> select count(*)
> from emp
> where comm is null);
> +--------+------------+----------+
> | DEPTNO | DNAME | LOC |
> +--------+------------+----------+
> +--------+------------+----------+ {code}
> Correct calculation results
> {code:java}
> select *
> from dept
> where cast(deptno as bigint) in (
> select count(*)
> from emp
> where comm is null);
> +--------+------------+----------+
> | DEPTNO | DNAME | LOC |
> +--------+------------+----------+
> | 10 | ACCOUNTING | NEW YORK |
> +--------+------------+----------+{code}
> The above two cases can be reproduced in agg.iq.
> Or look at this submission
> [https://github.com/apache/calcite/commit/6cef259f29884fbda3f165d579232285998d1b46].
>
>
>
>
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)