[ https://issues.apache.org/jira/browse/HIVE13807?page=com.atlassian.jira.plugin.system.issuetabpanels:alltabpanel
]
Jesus Camacho Rodriguez updated HIVE13807:

Description:
Followup of HIVE13068.
Currently, when we pull up predicates through Union operation with Calcite metadata provider,
we just create a single conjunction of pulled up predicates.
E.g. Assume operators _I1, I2, I3_ with predicates {{P1, P2, P3}} that can be pulled up through
them, respectively.
For an operation _Union (I1, I2, I3)_ we infer a new predicate {{Pu}}, such that {{Pu = P1
OR P2 OR P3}}.
While this is correct, we miss some chances for simplification e.g. if there are common factors
in P1, P2, and P3. Further, this inference differs slightly from the way that the metadata
provider pulls up predicates for other operators, thus breaking some assumptions and missing
some optimization opportunities.
Ex. ql/src/test/results/clientpositive/input26.q.out
{noformat}
explain
select * from (
select * from (select * from srcpart a where a.ds = '20080408' and a.hr = '11' order by
a.key limit 5)pa
union all
select * from (select * from srcpart b where b.ds = '20080408' and b.hr = '14' limit 5)pb
)subq
{noformat}
was:
Followup of HIVE13068.
Currently, when we pull up predicates through Union operation with Calcite metadata provider,
we just create a single conjunction of pulled up predicates.
E.g. Assume operators {{I1, I2, I3}} with predicates {{P1, P2, P3}} that can be pulled up
through them, respectively.
For an operation _Union (I1, I2, I3)_ we infer a new predicate {{Pu}}, such that {{Pu = P1
OR P2 OR P3}}.
While this is correct, we miss some chances for simplification e.g. if there are common factors
in P1, P2, and P3. Further, this inference differs slightly from the way that the metadata
provider pulls up predicates for other operators, thus breaking some assumptions and missing
some optimization opportunities.
Ex. ql/src/test/results/clientpositive/input26.q.out
{noformat}
explain
select * from (
select * from (select * from srcpart a where a.ds = '20080408' and a.hr = '11' order by
a.key limit 5)pa
union all
select * from (select * from srcpart b where b.ds = '20080408' and b.hr = '14' limit 5)pb
)subq
{noformat}
> Extend metadata provider to pull up predicates through Union
> 
>
> Key: HIVE13807
> URL: https://issues.apache.org/jira/browse/HIVE13807
> Project: Hive
> Issue Type: Subtask
> Components: CBO
> Affects Versions: 2.1.0
> Reporter: Jesus Camacho Rodriguez
> Assignee: Jesus Camacho Rodriguez
>
> Followup of HIVE13068.
> Currently, when we pull up predicates through Union operation with Calcite metadata provider,
we just create a single conjunction of pulled up predicates.
> E.g. Assume operators _I1, I2, I3_ with predicates {{P1, P2, P3}} that can be pulled
up through them, respectively.
> For an operation _Union (I1, I2, I3)_ we infer a new predicate {{Pu}}, such that {{Pu
= P1 OR P2 OR P3}}.
> While this is correct, we miss some chances for simplification e.g. if there are common
factors in P1, P2, and P3. Further, this inference differs slightly from the way that the
metadata provider pulls up predicates for other operators, thus breaking some assumptions
and missing some optimization opportunities.
> Ex. ql/src/test/results/clientpositive/input26.q.out
> {noformat}
> explain
> select * from (
> select * from (select * from srcpart a where a.ds = '20080408' and a.hr = '11' order
by a.key limit 5)pa
> union all
> select * from (select * from srcpart b where b.ds = '20080408' and b.hr = '14' limit
5)pb
> )subq
> {noformat}

This message was sent by Atlassian JIRA
(v6.3.4#6332)
