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]

Reply via email to