chryso_planner/
plan_diff.rs1use crate::{LogicalPlan, PhysicalPlan};
2
3pub struct PlanDiff {
4 pub left: String,
5 pub right: String,
6}
7
8pub fn diff_logical(left: &LogicalPlan, right: &LogicalPlan) -> PlanDiff {
9 PlanDiff {
10 left: left.explain(0),
11 right: right.explain(0),
12 }
13}
14
15pub fn diff_physical(left: &PhysicalPlan, right: &PhysicalPlan) -> PlanDiff {
16 PlanDiff {
17 left: left.explain(0),
18 right: right.explain(0),
19 }
20}
21
22#[cfg(test)]
23mod tests {
24 use super::diff_logical;
25 use crate::LogicalPlan;
26
27 #[test]
28 fn diff_logical_outputs_explain() {
29 let left = LogicalPlan::Scan {
30 table: "t1".to_string(),
31 };
32 let right = LogicalPlan::Scan {
33 table: "t2".to_string(),
34 };
35 let diff = diff_logical(&left, &right);
36 assert!(diff.left.contains("t1"));
37 assert!(diff.right.contains("t2"));
38 }
39}