[
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)