alamb commented on issue #14029: URL: https://github.com/apache/datafusion/issues/14029#issuecomment-2573901927
Thanks @wiedld -- I don't fully understand the usecase > Take the existing invariant infrastructure provided as part of https://github.com/apache/datafusion/issues/13652#issuecomment-2573659546, and provide extension points for users to define their own invariants. Could you provide an example of such an invariant? I normally think of "invariants" as some property that always holds true for a certain type of node (for example that `LogicalPlan::Join` always has 2 inputs). The invariants in this case are defined by the semantics of the node itself (so as a user I couldn't add a invariant that `LogicalPlan::Join` had 3 inputs) It would perhaps make sense to provide a way to define invariants for [`UserDefinedLogicalNode`](https://docs.rs/datafusion/latest/datafusion/logical_expr/trait.UserDefinedLogicalNode.html) and user provided implementations of [`ExecutionPlan`](https://docs.rs/datafusion/latest/datafusion/physical_plan/trait.ExecutionPlan.html) Defining an invarint check for `ExecutionPlan` I think would satisfy the usecase you mention above having specific rules for `ProgressiveEval` (a user defined extension node) -- 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