[ 
https://issues.apache.org/jira/browse/HIVE-801?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12748151#action_12748151
 ] 

Raghotham Murthy commented on HIVE-801:
---------------------------------------

Couldnt you do exactly the same thing with IF or CASE constructs in the WHERE 
clause? A general disjunctive join can be written as a UNION ALL of several 
join queries. And a general theta join can be done (inefficiently) with a cross 
product.

However, you should be able to achieve what you want in HIVE-783 in the ON 
clause by doing something like the following. Although its a little verbose, 
you end up with a single map-reduce job and is probably the most efficient way 
to doit.

JOIN ON (12345 = (case 12345 when key1 then 12345 when key2 then 12345 when 
key3 then 12345 else null end))

> row-wise IN would be useful
> ---------------------------
>
>                 Key: HIVE-801
>                 URL: https://issues.apache.org/jira/browse/HIVE-801
>             Project: Hadoop Hive
>          Issue Type: New Feature
>            Reporter: Adam Kramer
>
> SELECT * FROM tablename t
> WHERE IN(12345,key1,key2,key3);
> ...IN would operate on a given row, and return True when the first argument 
> equaled at least one of the other arguments. So here IN would return true if 
> 12345=key1 OR 12345=key2 OR 12345=key3 (but wouldn't test the latter two if 
> the first matched).
> This would also help with https://issues.apache.org/jira/browse/HIVE-783, if 
> IN were implemented in a manner that allows it to be used in an ON clause.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to