Skip to main content

chryso_planner/
plan_diff.rs

1use 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}