Description
Summary
Five math scalar functions — sin, tan, tanh, radians, and ln — are mapped in
ExpressionMappings.scala (Spark expression → Substrait function name) but are not
registered in Gluten's Velox C++ function registry (RegistrationAllFunctions.cc).
As a result, queries using these functions silently fall back to vanilla Spark instead
of executing natively in Velox.
Root Cause
RegistrationAllFunctions.cc does not call velox::registerFunction<> for:
ln → velox::functions::LnFunction
radians → velox::functions::RadiansFunction
sin → velox::functions::SinFunction
tan → velox::functions::TanFunction
tanh → velox::functions::TanhFunction
All five implementations exist in Velox's prestosql arithmetic library
(velox/functions/prestosql/Arithmetic.h).
Fix
Register the five functions in registerFunctionOverwrite() and add Scala integration
tests in MathFunctionsValidateSuite to verify native execution.
Gluten version
main branch
Description
Summary
Five math scalar functions —
sin,tan,tanh,radians, andln— are mapped inExpressionMappings.scala(Spark expression → Substrait function name) but are notregistered in Gluten's Velox C++ function registry (
RegistrationAllFunctions.cc).As a result, queries using these functions silently fall back to vanilla Spark instead
of executing natively in Velox.
Root Cause
RegistrationAllFunctions.ccdoes not callvelox::registerFunction<>for:ln→velox::functions::LnFunctionradians→velox::functions::RadiansFunctionsin→velox::functions::SinFunctiontan→velox::functions::TanFunctiontanh→velox::functions::TanhFunctionAll five implementations exist in Velox's prestosql arithmetic library
(
velox/functions/prestosql/Arithmetic.h).Fix
Register the five functions in
registerFunctionOverwrite()and add Scala integrationtests in
MathFunctionsValidateSuiteto verify native execution.Gluten version
main branch