[ 
https://issues.apache.org/jira/browse/IMPALA-15297?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Aleksandr Efimov resolved IMPALA-15297.
---------------------------------------
    Resolution: Duplicate

Folded into IMPALA-15296 before review. The work was first cut one sub-task per 
finding, which came to nine on top of the two the series started with; 
regrouped by subject so that a reviewer reads the mechanism once and the 
applications after it. Nothing described here is dropped: the code and the 
reasoning both live on in IMPALA-15296, and the Gerrit change was abandoned 
with the same note.

> Calcite planner: map Impala operators onto Substrait functions
> --------------------------------------------------------------
>
>                 Key: IMPALA-15297
>                 URL: https://issues.apache.org/jira/browse/IMPALA-15297
>             Project: IMPALA
>          Issue Type: Sub-task
>          Components: Frontend
>            Reporter: Aleksandr Efimov
>            Assignee: Aleksandr Efimov
>            Priority: Major
>              Labels: substrait
>
> IMPALA-15296 added a test-scoped exporter for the pre-conversion logical 
> plan. Twenty of the twenty-four query shapes the direct harness covers export 
> end to end. The rest stop on an operator Isthmus cannot resolve.
> Isthmus resolves a call by looking the operator up in a map keyed on the 
> operator itself, and Calcite compares operators by class, name and kind. 
> Impala substitutes its own classes for a good number of functions, so an 
> operator that means exactly what Substrait's does still misses. Isthmus takes 
> additional signatures for this: they say which Substrait function an Impala 
> operator stands for and leave the operand matching alone.
> Add them for the operators that have a counterpart. For scalars that is 
> coalesce, concat, length, and floor and ceil with their d-prefixed spellings; 
> Impala reaches those by three routes, the USE_IMPALA_OPERATOR set in 
> ImpalaOperatorTable, builtins Calcite has no operator for, and the 
> replacements in ImpalaCustomOperatorTable, and all three resolve by name. For 
> windows it is lag, first_value and last_value, resolved through a converter 
> of their own that first tries to normalise the aggregate by SqlKind; Impala's 
> window operators carry SqlKind.OTHER, so normalisation passes them through 
> and the lookup lands on the operator itself. lead needs nothing, since 
> USE_IMPALA_OPERATOR lists lag but not lead.
> Together that takes the corpus from twenty to twenty-three.
> What is left needs a different mechanism rather than another name. Substrait 
> models a conditional as the IfThen expression rather than as a function, so 
> Impala's IF has no name to map to, and it is the one corpus shape still not 
> exporting. Substrait's round takes its digit count as i32 where Impala types 
> the literal as i8, so the name lines up but the operands do not, and 
> Substrait has no truncate at all. NDV is left out on other grounds: 
> approx_count_distinct is the obvious counterpart, but that is a rename 
> carrying a claim about the estimator rather than a matter of operator class.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to