[
https://issues.apache.org/jira/browse/CALCITE-6447?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Julian Hyde updated CALCITE-6447:
---------------------------------
Description:
For SQL:
{code:java}
select *
from tbl_a
join tbl_b on tbl_a.id = tbl_b.id
where (tbl_a.x > 100 and tbl_b.y < 10)
or (tbl_a.x > 100 and tbl_b.z > 20){code}
we can rewrite it to
{code:java}
select *
from tbl_a
join tbl_b on tbl_a.id = tbl_b.id
where tbl_a.x > 100
and (tbl_b.y < 10 or tbl_b.z > 20){code}
And in this way *tbl_a.x > 100* can be pushed down and it is likely that this
will help reduce the amount of data involved in the join.
was:
For SQL:
{code:java}
select * from tbl_a join tbl_b on tbl_a.id = tbl_b.id where (tbl_a.x > 100 and
tbl_b.y < 10) or (tbl_a.x > 100 and tbl_b.z > 20){code}
we can rewrite it to
{code:java}
select * from tbl_a join tbl_b on tbl_a.id = tbl_b.id where tbl_a.x > 100 and
(tbl_b.y < 10 or tbl_b.z > 20){code}
And in this way *tbl_a.x > 100* can be pushed down and it is likely that this
will help reduce the amount of data involved in the join.
> extract common expressions for disjunctions in Join
> ---------------------------------------------------
>
> Key: CALCITE-6447
> URL: https://issues.apache.org/jira/browse/CALCITE-6447
> Project: Calcite
> Issue Type: New Feature
> Components: core
> Affects Versions: 1.37.0
> Reporter: ruanhui
> Priority: Minor
> Fix For: 1.37.0
>
>
> For SQL:
> {code:java}
> select *
> from tbl_a
> join tbl_b on tbl_a.id = tbl_b.id
> where (tbl_a.x > 100 and tbl_b.y < 10)
> or (tbl_a.x > 100 and tbl_b.z > 20){code}
> we can rewrite it to
> {code:java}
> select *
> from tbl_a
> join tbl_b on tbl_a.id = tbl_b.id
> where tbl_a.x > 100
> and (tbl_b.y < 10 or tbl_b.z > 20){code}
> And in this way *tbl_a.x > 100* can be pushed down and it is likely that this
> will help reduce the amount of data involved in the join.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)