[ 
https://issues.apache.org/jira/browse/HIVE-1989?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Charles Chen updated HIVE-1989:
-------------------------------

    Description: 
Given

{noformat}
set hive.mapred.mode=strict;
create table invites (foo int, bar string) partitioned by (ds string);
create table invites2 (foo int, bar string) partitioned by (ds string);
select count(*) from invites join invites2 on invites.ds=invites2.ds where 
invites.ds='2011-01-01';
{noformat}

currently an error occurs:

{noformat}
Error in semantic analysis: No Partition Predicate Found for Alias "invites2" 
Table "invites2"
{noformat}

The optimizer should be able to infer a predicate on invites2 via transitivity. 
 The current lack places a burden on the user to add a redundant predicate, and 
makes impossible (at least in strict mode) join views where both underlying 
tables are partitioned (the join select list has to pick one of the tables 
arbitrarily).


  was:
Given

{noformat}
set hive.mapred.mode=strict;
create table invites (foo int, bar string) partitioned by (ds string);
create table invites2 (foo int, bar string) partitioned by (ds string);
select count(*) from invites join invites2 on invites.ds=invites2.ds and 
invites.ds='2011-01-01';
{noformat}

currently an error occurs:

{noformat}
Error in semantic analysis: No Partition Predicate Found for Alias "invites2" 
Table "invites2"
{noformat}

The optimizer should be able to infer a predicate on invites2 via transitivity. 
 The current lack places a burden on the user to add a redundant predicate, and 
makes impossible (at least in strict mode) join views where both underlying 
tables are partitioned (the join select list has to pick one of the tables 
arbitrarily).



This does not cover the case

{noformat}
select count(*) from invites join invites2 on invites.ds=invites2.ds and 
invites.ds='2011-01-01';
{noformat}

where the filtering predicate invites.ds='2011-01-01' is in the on clause 
(because the filter in the "ON" key is pushed down even before the predicate 
pushdown optimizer runs)

> recognize transitivity of predicates on join keys
> -------------------------------------------------
>
>                 Key: HIVE-1989
>                 URL: https://issues.apache.org/jira/browse/HIVE-1989
>             Project: Hive
>          Issue Type: Improvement
>          Components: Query Processor
>    Affects Versions: 0.6.0
>            Reporter: John Sichi
>            Assignee: Charles Chen
>
> Given
> {noformat}
> set hive.mapred.mode=strict;
> create table invites (foo int, bar string) partitioned by (ds string);
> create table invites2 (foo int, bar string) partitioned by (ds string);
> select count(*) from invites join invites2 on invites.ds=invites2.ds where 
> invites.ds='2011-01-01';
> {noformat}
> currently an error occurs:
> {noformat}
> Error in semantic analysis: No Partition Predicate Found for Alias "invites2" 
> Table "invites2"
> {noformat}
> The optimizer should be able to infer a predicate on invites2 via 
> transitivity.  The current lack places a burden on the user to add a 
> redundant predicate, and makes impossible (at least in strict mode) join 
> views where both underlying tables are partitioned (the join select list has 
> to pick one of the tables arbitrarily).

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to