diff --git a/src/ir/explain/tests.rs b/src/ir/explain/tests.rs index dea4ebe64fdbe2fdd4a80c90ff3a7af8fb846067..152049aa9fd08a5927e91126de577042e442aea8 100644 --- a/src/ir/explain/tests.rs +++ b/src/ir/explain/tests.rs @@ -282,3 +282,23 @@ motion [policy: segment([ref("identification_number")]), generation: none] assert_eq!(actual_explain, explain_tree.to_string()) } + +#[test] +fn unary_condition_plan() { + let query = r#"SELECT "id", "FIRST_NAME" FROM "test_space" WHERE "id" IS NULL and "FIRST_NAME" IS NOT NULL"#; + + let plan = sql_to_optimized_ir(query, vec![]); + + let top = &plan.get_top().unwrap(); + let explain_tree = FullExplain::new(&plan, *top).unwrap(); + + let mut actual_explain = String::new(); + actual_explain.push_str( + r#"projection ("test_space"."id" -> "id", "test_space"."FIRST_NAME" -> "FIRST_NAME") + selection ROW("test_space"."FIRST_NAME") is not null and ROW("test_space"."id") is null + scan "test_space" +"#, + ); + + assert_eq!(actual_explain, explain_tree.to_string()) +}