You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@drill.apache.org by "Timothy Chen (JIRA)" <ji...@apache.org> on 2013/02/07 09:39:12 UTC

[jira] [Commented] (DRILL-24) Implement Join Reference Operator

    [ https://issues.apache.org/jira/browse/DRILL-24?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13573314#comment-13573314 ] 

Timothy Chen commented on DRILL-24:
-----------------------------------

Jacques, so I'm right now implementing the various joins but not quite sure how to fit this in the current evaluator and operators.
For example, for a left join I want to go through the left stream one at a time and for each one I need to scan the whole right stream since no index or ordering is implied.
However, currently the iterators are expected to go through it once and done. Alternatively, I can create a internal the list that creates a copy of each data record once I scan through and use that for join, but not sure that's the desire way?
                
> 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
>
> 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