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

Jihoon Son updated TAJO-1352:
-----------------------------
    Attachment: JoinGraph.png

The requirements in this issue are as follows:
* Basically, the join order is left-to-right.
* Only the order of associative join types can be changed.
* The associativity checking routine should be easily extendible.

However, I found that it is hard to meet these requirements using our current 
JoinGraph implementation. This is because the lack of inherent join order 
scheme, inextensible associativity checking routine, and so on.

So, I'd like to suggest a new join graph. Here are some brief descriptions of 
the graph.
* It consists of _JoinVertexes_ and _JoinEdges_.
* JoinVertex types:
** _RelationVertex_ contains a single relation.
** _AssociativeGroupVertex_ contains a set of JoinVertexes, and all possible 
JoinEdges between them.
** _NonAssociativeGroupVertex_ contains a left JoinVertex, a right JoinVertex, 
and a JoinEdge between them.
* A JoinEdge contains the join type, a left vertex, a right vertex, and a set 
of join conditions.

The attached figure is an example graph of the following query:
{noformat}
default> select * from c1 left outer join n1 on ... inner join c2 on ... inner 
join c3 on ... right outer join n2 on ...
{noformat}

For your convenience, LOJ, ROJ, and IJ are shorts for left outer join, right 
outer join, and inner join, respectively.

> Improve the join order algorithm to consider missed cases of associative join 
> operators
> ---------------------------------------------------------------------------------------
>
>                 Key: TAJO-1352
>                 URL: https://issues.apache.org/jira/browse/TAJO-1352
>             Project: Tajo
>          Issue Type: Improvement
>          Components: planner/optimizer
>            Reporter: Jihoon Son
>            Assignee: Jihoon Son
>         Attachments: JoinGraph.png
>
>
> TAJO-1277 fixes a bug related to the associativity of join operators, but 
> there are still some missed cases that join operators are associative. This 
> work should include the cases described in the following links:
> * http://stackoverflow.com/questions/20022196/are-left-outer-joins-associative
> * https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Joins



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

Reply via email to