Aleksandr Efimov created IMPALA-15298:
-----------------------------------------
Summary: Calcite planner: export Impala's IF as a Substrait IfThen
Key: IMPALA-15298
URL: https://issues.apache.org/jira/browse/IMPALA-15298
Project: IMPALA
Issue Type: Sub-task
Components: Frontend
Reporter: Aleksandr Efimov
IMPALA-15297 mapped the Impala operators that stand in for functions Substrait
already has, which took the direct harness corpus from twenty of twenty-four
shapes to twenty-three. The one left is EXCEPT.
Substrait models a conditional as the IfThen expression rather than as a
function, so Impala's IF has no name for a signature to map to and needs a call
converter instead. Isthmus does the same for Calcite's CASE, which is why a
CASE in the query already exports while an IF does not.
IF is not only what a user writes. ImpalaMinusToDistinctRule builds one while
rewriting EXCEPT, so a query that never mentions IF still ends up carrying one,
and that is what stops the EXCEPT shape.
Add the converter. Isthmus takes converters for functions through its builder
but assembles the call converters in a method, so this goes in by extending
ConverterProvider and overriding getCallConverters.
The null handling needs no special care: Impala returns the else branch when
the condition is null, and a null condition is not true, so Substrait takes the
else clause too.
With this the whole harness corpus exports.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)