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

Function test_rewrite

datafusion/expr/src/expr_rewriter/mod.rs:556–582  ·  view source on GitHub ↗

rewrites `expr_from` to `rewrite_to` while preserving the original qualified name by using the `NamePreserver`

(expr_from: Expr, rewrite_to: Expr)

Source from the content-addressed store, hash-verified

554 /// rewrites `expr_from` to `rewrite_to` while preserving the original qualified name
555 /// by using the `NamePreserver`
556 fn test_rewrite(expr_from: Expr, rewrite_to: Expr) {
557 struct TestRewriter {
558 rewrite_to: Expr,
559 }
560
561 impl TreeNodeRewriter for TestRewriter {
562 type Node = Expr;
563
564 fn f_up(&mut self, _: Expr) -> Result<Transformed<Expr>> {
565 Ok(Transformed::yes(self.rewrite_to.clone()))
566 }
567 }
568
569 let mut rewriter = TestRewriter {
570 rewrite_to: rewrite_to.clone(),
571 };
572 let saved_name = NamePreserver { use_alias: true }.save(&expr_from);
573 let new_expr = expr_from.clone().rewrite(&mut rewriter).unwrap().data;
574 let new_expr = saved_name.restore(new_expr);
575
576 let original_name = expr_from.qualified_name();
577 let new_name = new_expr.qualified_name();
578 assert_eq!(
579 original_name, new_name,
580 "mismatch rewriting expr_from: {expr_from} to {rewrite_to}"
581 )
582 }
583}

Callers 1

Calls 5

restoreMethod · 0.80
qualified_nameMethod · 0.80
cloneMethod · 0.45
saveMethod · 0.45
rewriteMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…