Aleksandr Efimov created IMPALA-15301:
-----------------------------------------

             Summary: Calcite planner: export Impala's explicit cast as a 
Substrait cast
                 Key: IMPALA-15301
                 URL: https://issues.apache.org/jira/browse/IMPALA-15301
             Project: IMPALA
          Issue Type: Sub-task
          Components: Frontend
            Reporter: Aleksandr Efimov


ImpalaOperatorTable rewrites cast into an operator of its own, named 
EXPLICIT_CAST and carrying SqlKind.OTHER, to keep Calcite from folding it. The 
converter Isthmus already has for SqlKind.CAST therefore never sees it, and 
every explicit cast stops the export. Over the TPC-DS queries that carry 
Calcite goldens this is what blocks seven of them.

Add a call converter that emits a Substrait Cast, the same way IMPALA-15298 
handles IF.

The failure behaviour is the closest of the two Substrait offers rather than an 
exact match, and this is worth stating plainly. Measured against a running 
Impala: casting an unparseable string returns NULL, and an integer that does 
not fit wraps round silently, so 99999999999 cast to int comes back as 
1215752191. Impala never raises. RETURN_NULL states the first half. There is no 
Substrait failure behaviour for the second, so a consumer would produce NULL 
where Impala produces the wrapped value.

Almost every EXPLICIT_CAST in a plan is one the planner inserted to line types 
up, where nothing overflows. A narrowing cast a user wrote is a real 
difference, and the alternative is not exporting any plan that contains a cast 
at all.



--
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