Alessandro Solimando created HIVE-25852:
-------------------------------------------
Summary: Introduce IN clauses at the very end of query planning
Key: HIVE-25852
URL: https://issues.apache.org/jira/browse/HIVE-25852
Project: Hive
Issue Type: Bug
Components: CBO
Affects Versions: 4.0.0
Reporter: Alessandro Solimando
Calcite "explodes" IN clauses into the equivalent OR form, and therefore it
does not handle such clauses in most of the codebase (notably in _RexSimplify_).
In Hive, the same happens, but _HivePointLookupOptimizerRule_ re-introduces IN
clauses, and it happens in _applyPreJoinOrderingTransforms_ phase, which is
pretty early and which mixes several other rules which might not fully support
IN (notably, _HiveReduceExpressionsRule_ which is based on _RexSimplify_).
The problem will become even harder in later versions of Calcite (current is
1.25) based on SARG, which does not support IN clauses.
IN clauses can be converted into efficient runtime operators, we therefore want
to keep them in the final plan, intuitively we just want this translation to
happen in a later step, in order to leave the rest of the codebase (Hive and
Calcite) unaware of IN clauses.
The goal of the ticket is as follows:
# re-convert the output expression of _HivePointLookupOptimizerRule_ into the
OR form (keep the logic as-is to benefit from the rule)
# add a rule, in the last step of the planning process, that only converts
eligible OR expressions into IN clauses
--
This message was sent by Atlassian Jira
(v8.20.1#820001)