sunshone opened a new issue, #13457:
URL: https://github.com/apache/gluten/issues/13457
### Description
Description:
Motivation
NOT, IS FALSE, IS NOT TRUE, and IS NOT FALSE are the three-valued-logic
operators of Flink SQL. Today gluten-flink maps none of them, so any query
projecting or filtering on them fails function offload ("Function not
supported") and stays on the native path. IS TRUE is the only family member
already mapped (via IsTrueRexCallConverter).
Proposal
Offload them to the velox flinksql function set:
velox side (companion PR): implementations under velox/functions/flinksql/ —
not as a vector function with the kNot canonical name, registered via
registerStatefulVectorFunction (the vector-function registry takes precedence
over the simple-UDF registry in name resolution, so a simple-UDF not would be
shadowed by the prestosql/sparksql vector entry); is_false / is_not_true /
is_not_false as three-valued predicates that never return NULL (callNullable;
UNKNOWN → FALSE / TRUE / TRUE).
planner side (this repo): plain name mappings in RexCallConverterFactory —
NOT → not, IS FALSE → is_false, IS NOT TRUE → is_not_true, IS NOT FALSE →
is_not_false. IS TRUE keeps its existing mapping (unchanged).
Semantics to preserve: the three-valued truth tables (NOT preserves NULL;
the IS_* predicates never return NULL), null propagation through nested forms,
planner-absorbed NOT in filters.
Gluten version: main branch (gluten-flink)
### Gluten version
None
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]