Description
Follow-up of HIVE-15211.
Currently, we have some restrictions on the predicates that we can use in ON clauses for outer joins.
This patch is an extension to overcome these restrictions. Follow-up work will focus on identifying some cases, such as disjunctive predicates, that can be run more efficiently than with a cartesian product.
It will allow to write queries that currently fail in Hive such as:
-- Disjunctions SELECT * FROM src1 LEFT OUTER JOIN src ON (src1.key=src.key OR src1.value between 100 and 102 OR src.value between 100 and 102) LIMIT 10; -- Conjunction with multiple inputs references in one side SELECT * FROM src1 RIGHT OUTER JOIN src ON (src1.key+src.key >= 100 AND src1.key+src.key <= 102) LIMIT 10; -- Conjunct with no references SELECT * FROM src1 FULL OUTER JOIN src ON (src1.value between 100 and 102 AND src.value between 100 and 102 AND true) LIMIT 10;
Attachments
Attachments
Issue Links
- breaks
-
HIVE-15369 Extend column pruner to account for residual filter expression in Join operator
-
- Closed
-
-
HIVE-15370 Include Join residual filter expressions in user level EXPLAIN
-
- Closed
-
- is blocked by
-
HIVE-15327 Outerjoin might produce wrong result depending on joinEmitInterval value
-
- Closed
-
- relates to
-
HIVE-15211 Provide support for complex expressions in ON clauses for INNER joins
-
- Closed
-
- links to