cyb70289 edited a comment on pull request #10364:
URL: https://github.com/apache/arrow/pull/10364#issuecomment-854364569


   Thanks @bkietz , it's almost done except one last catch.
   
   As the output type (precision, scale) is dependent on the inputs, I have a 
resolver object to calculate output type. The resolver is called with the 
*casted* input type, not the original type. It causes problem to division, as 
the output precision and scale should be calculated from original inputs. No 
trouble for add/subtract as the output precision/scale is the same for original 
and casted inputs (digit aligned). Multiply doesn't need cast.
   
   Does it make sense to pass both original input types and the casted types to 
the resolver [1][2]? We will have to update all existing custom resolver codes.
   Maybe add a kernel flag to select original or casted input?
   Or there are better ways to handle this?
   
   [1] 
https://github.com/apache/arrow/blob/master/cpp/src/arrow/compute/function.cc#L196
   [2] 
https://github.com/apache/arrow/blob/master/cpp/src/arrow/compute/exec.cc#L495


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

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to