[
https://issues.apache.org/jira/browse/CALCITE-7396?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated CALCITE-7396:
------------------------------------
Labels: pull-request-available (was: )
> PruneEmptyRules does not support LEFT_MARK JOIN
> -----------------------------------------------
>
> Key: CALCITE-7396
> URL: https://issues.apache.org/jira/browse/CALCITE-7396
> Project: Calcite
> Issue Type: Bug
> Components: core
> Affects Versions: 1.41.0
> Reporter: Zhen Chen
> Assignee: Zhen Chen
> Priority: Major
> Labels: pull-request-available
> Fix For: 1.42.0
>
>
> Running CoreQuidemTest2 will produce the following results and plan. The
> following results and plans are all wrong.
> {code:java}
> select * from dept where deptno not in (select deptno from emp where false);
> +--------+-------+
> | DEPTNO | DNAME |
> +--------+-------+
> +--------+-------+
> (0 rows)
> !ok
> EnumerableValues(tuples=[[]])
> !plan {code}
> After removing the PruneEmptyRules.JOIN_RIGHT_INSTANCE rule, the following
> plan will be obtained.
> {code:java}
> select * from dept where deptno not in (select deptno from emp where false);
> +--------+-------------+
> | DEPTNO | DNAME |
> +--------+-------------+
> | 10 | Sales |
> | 20 | Marketing |
> | 30 | Engineering |
> | 40 | Empty |
> +--------+-------------+
> (4 rows)
> !ok
> EnumerableCalc(expr#0..2=[{inputs}], expr#3=[NOT($t2)], proj#0..1=[{exprs}],
> $condition=[$t3])
> EnumerableHashJoin(condition=[=($0, $2)], joinType=[left_mark])
> EnumerableValues(tuples=[[{ 10, 'Sales ' }, { 20, 'Marketing ' }, {
> 30, 'Engineering' }, { 40, 'Empty ' }]])
> EnumerableValues(tuples=[[]])
> !plan {code}
> Therefore, we should fix the PruneEmptyRules.JOIN_RIGHT_INSTANCE rule to make
> it compatible with LEFT_MARK JOIN.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)