Skip to content

Commit fa7fa2d

Browse files
timsaucerclaude
andcommitted
Use AggregateUDFImpl::downcast_ref and is() instead of as &dyn Any patterns
Replaces `(udaf.inner().as_ref() as &dyn Any).downcast_ref::<T>()` and `.is::<T>()` call sites with the new inherent methods on `dyn AggregateUDFImpl`. Removes now-unused `std::any::Any` imports. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 3fa1869 commit fa7fa2d

4 files changed

Lines changed: 7 additions & 20 deletions

File tree

datafusion/ffi/src/proto/logical_extension_codec.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,7 @@ mod tests {
680680

681681
let returned_udf = foreign_codec.try_decode_udaf(udf.name(), &bytes)?;
682682

683-
assert!((returned_udf.inner().as_ref() as &dyn Any).is::<Sum>());
683+
assert!(returned_udf.inner().is::<Sum>());
684684

685685
Ok(())
686686
}

datafusion/ffi/src/proto/physical_extension_codec.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,7 @@ pub(crate) mod tests {
520520
buf.push(Self::MAGIC_NUMBER);
521521

522522
let udf = node.inner();
523-
let Some(_udf) = (udf.as_ref() as &dyn Any).downcast_ref::<Sum>() else {
523+
let Some(_udf) = udf.downcast_ref::<Sum>() else {
524524
return exec_err!("TestExtensionCodec only expects Sum UDAF");
525525
};
526526

@@ -630,7 +630,7 @@ pub(crate) mod tests {
630630

631631
let returned_udf = foreign_codec.try_decode_udaf(udf.name(), &bytes)?;
632632

633-
assert!((returned_udf.inner().as_ref() as &dyn Any).is::<Sum>());
633+
assert!(returned_udf.inner().is::<Sum>());
634634

635635
Ok(())
636636
}

datafusion/ffi/src/udaf/mod.rs

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
// specific language governing permissions and limitations
1616
// under the License.
1717

18-
use std::any::Any;
1918
use std::ffi::c_void;
2019
use std::hash::{Hash, Hasher};
2120
use std::sync::Arc;
@@ -372,9 +371,7 @@ impl Clone for FFI_AggregateUDF {
372371

373372
impl From<Arc<AggregateUDF>> for FFI_AggregateUDF {
374373
fn from(udaf: Arc<AggregateUDF>) -> Self {
375-
if let Some(udaf) =
376-
(udaf.inner().as_ref() as &dyn Any).downcast_ref::<ForeignAggregateUDF>()
377-
{
374+
if let Some(udaf) = udaf.inner().downcast_ref::<ForeignAggregateUDF>() {
378375
return udaf.udaf.clone();
379376
}
380377

@@ -644,7 +641,6 @@ impl From<AggregateOrderSensitivity> for FFI_AggregateOrderSensitivity {
644641

645642
#[cfg(test)]
646643
mod tests {
647-
use std::any::Any;
648644
use std::collections::HashMap;
649645

650646
use arrow::datatypes::Schema;
@@ -855,20 +851,12 @@ mod tests {
855851

856852
// Verify local libraries can be downcast to their original
857853
let foreign_udaf: Arc<dyn AggregateUDFImpl> = (&ffi_udaf).into();
858-
assert!(
859-
(foreign_udaf.as_ref() as &dyn Any)
860-
.downcast_ref::<Sum>()
861-
.is_some()
862-
);
854+
assert!(foreign_udaf.is::<Sum>());
863855

864856
// Verify different library markers generate foreign providers
865857
ffi_udaf.library_marker_id = crate::mock_foreign_marker_id;
866858
let foreign_udaf: Arc<dyn AggregateUDFImpl> = (&ffi_udaf).into();
867-
assert!(
868-
(foreign_udaf.as_ref() as &dyn Any)
869-
.downcast_ref::<ForeignAggregateUDF>()
870-
.is_some()
871-
);
859+
assert!(foreign_udaf.is::<ForeignAggregateUDF>());
872860

873861
Ok(())
874862
}

datafusion/proto/tests/cases/roundtrip_physical_plan.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1306,8 +1306,7 @@ impl PhysicalExtensionCodec for UDFExtensionCodec {
13061306

13071307
fn try_encode_udaf(&self, node: &AggregateUDF, buf: &mut Vec<u8>) -> Result<()> {
13081308
let binding = node.inner();
1309-
if let Some(udf) = (binding.as_ref() as &dyn Any).downcast_ref::<MyAggregateUDF>()
1310-
{
1309+
if let Some(udf) = binding.downcast_ref::<MyAggregateUDF>() {
13111310
let proto = MyAggregateUdfNode {
13121311
result: udf.result.clone(),
13131312
};

0 commit comments

Comments
 (0)