MCPcopy Create free account
hub / github.com/apache/datafusion / rewrite

Method rewrite

datafusion/core/tests/user_defined/user_defined_plan.rs:431–454  ·  view source on GitHub ↗

Example rewrite pass which impacts validity of the extension node.

(
        &self,
        plan: LogicalPlan,
        _config: &dyn OptimizerConfig,
    )

Source from the content-addressed store, hash-verified

429
430 // Example rewrite pass which impacts validity of the extension node.
431 fn rewrite(
432 &self,
433 plan: LogicalPlan,
434 _config: &dyn OptimizerConfig,
435 ) -> Result<Transformed<LogicalPlan>, DataFusionError> {
436 if let LogicalPlan::Extension(Extension { node }) = &plan
437 && let Some(prev) = node.as_any().downcast_ref::<TopKPlanNode>()
438 {
439 return Ok(Transformed::yes(LogicalPlan::Extension(Extension {
440 node: Arc::new(TopKPlanNode {
441 k: prev.k,
442 input: prev.input.clone(),
443 expr: prev.expr.clone(),
444 // In a real use case, this rewriter could have change the number of inputs, etc
445 invariant_mock: Some(InvariantMock {
446 should_fail_invariant: true,
447 kind: InvariantLevel::Always,
448 }),
449 }),
450 })));
451 };
452
453 Ok(Transformed::no(plan))
454 }
455}
456
457// ------ The implementation of the TopK code follows -----

Callers

nothing calls this directly

Calls 7

ExtensionClass · 0.85
newFunction · 0.85
get_fetch_typeMethod · 0.80
as_anyMethod · 0.45
cloneMethod · 0.45
as_refMethod · 0.45
lenMethod · 0.45

Tested by

no test coverage detected