[
https://issues.apache.org/jira/browse/DRILL-24?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13580730#comment-13580730
]
Jacques Nadeau commented on DRILL-24:
-------------------------------------
Maybe I make sure to clarify some definitions:
Inner: when join condition left record doesn't match any right record, exclude
left record. Same goes in the opposite direction.
Outer: when join condition left record doesn't match any right record, include
left record. Same goes in the opposite direction.
Left: when join condition left record doesn't match any right record, include
left record. When right record doesn't match any left record, exclude right
record.
A right is the same as a left with the inputs swapped. Logically, they are the
same thing. Remember that the logical plan doesn't give any sense of the
physical nature of implementation. A left join could occur where either side
is large or small. Another way to name it would be a uni-directional join or
something similar.
The parser needs to simply determine the logical nature of the join and build
the logical plan. The optimizer will be responsible for generating the
physical plan which will manage things like join type and ordering.
> Implement Join Reference Operator
> ---------------------------------
>
> Key: DRILL-24
> URL: https://issues.apache.org/jira/browse/DRILL-24
> Project: Apache Drill
> Issue Type: New Feature
> Reporter: Timothy Chen
> Assignee: Timothy Chen
> Labels: logical
> Attachments: join.patch
>
>
> Join (M)
> Joins two inputs based on one or more join conditions. The output of this
> operator is the combination of the two inputs. This is done by providing a
> combination record of each set of input records that matches all provided
> join conditions. In the case that no conditions are provided, a cartesian
> join is generated. The combination record is a single record that contains a
> merged map of values from both provided input records. For example, if the
> left record is {donuts: [data]} and the right is {purchases: [data]}, the
> combination record would be {donuts: [data], purchases: [data]}. Join also
> requires a condition type variable which. This describes what happens when a
> record doesn’t match the join conditions. Inner means only records that
> match the join conditions should be included. Outer means if a record is
> Avaiable relationship types ‘Reltypes’ include: >, >=, <=, <, !=, ==
> { @id†: <opref>, op: “join”,
> left: <input>,
> right: <input>,
> type: <inner|outer|right|left>,
> conditions*: [
> {relationship: <reltype>, left: <expr>, right: <expr>}, ...
> ]
> }
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira