geoffreyclaude commented on issue #22557:
URL: https://github.com/apache/datafusion/issues/22557#issuecomment-4553460932

   Additional context: this is not only a `datafusion-tracing` concern. At 
DataDog, we also have internal `ExecutionPlan` wrappers that are intended to be 
transparent to downstream plan inspection code. I will avoid going into 
implementation details here, but the pattern is the same: the wrapper delegates 
execution-plan behavior to an inner node while preserving the inner node’s 
observable type identity for callers that use `as_any()` / downcasting.
   
   In practice, the overridable `ExecutionPlan::as_any` had become more than 
boilerplate: it was a customization point for wrapper nodes. Removing it and 
replacing it with inherent `dyn ExecutionPlan::is::<T>()` / 
`downcast_ref::<T>()` changes that behavior because wrappers no longer have a 
way to opt into transparency.
   
   So I think the compatibility concern is broader than one public crate: 
transparent wrappers appear to be a real extension pattern around 
`ExecutionPlan`, and it would be useful for DataFusion to either support that 
pattern explicitly or document that downcasting now intentionally reflects only 
the concrete outer wrapper type.


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