[ 
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

Reply via email to