alamb commented on code in PR #15776:
URL: https://github.com/apache/datafusion/pull/15776#discussion_r2160311996


##########
datafusion/functions-aggregate/src/correlation.rs:
##########
@@ -372,10 +377,8 @@ impl GroupsAccumulator for CorrelationGroupsAccumulator {
         self.sum_xx.resize(total_num_groups, 0.0);
         self.sum_yy.resize(total_num_groups, 0.0);
 
-        let array_x = &cast(&values[0], &DataType::Float64)?;
-        let array_x = downcast_array::<Float64Array>(array_x);
-        let array_y = &cast(&values[1], &DataType::Float64)?;
-        let array_y = downcast_array::<Float64Array>(array_y);
+        let array_x = downcast_array::<Float64Array>(&values[0]);

Review Comment:
   It looks to me like this code only handles `Float64` but the signature of 
the function reports that it accepts any numeric type:
   
   ```rust
   impl Correlation {
       /// Create a new COVAR_POP aggregate function
       pub fn new() -> Self {
           Self {
               signature: Signature::uniform(2, NUMERICS.to_vec(), 
Volatility::Immutable),
           }
       }
   }
   ```
   
   I wonder if you just changed the signature to say the function needs Float64 
argument types, woudl that be enough? 
   
   DataFusion already has a bunch of coercion rules, see 
https://docs.rs/datafusion/latest/datafusion/logical_expr/type_coercion/index.html
 for example



-- 
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: github-unsubscr...@datafusion.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org
For additional commands, e-mail: github-h...@datafusion.apache.org

Reply via email to