fix: Panic in UNION ALL queries (#4796)

* fix/union_all_panic:
 Improve MetricCollector by incrementing level and fix underflow issue; add tests for UNION ALL queries

* chore: remove useless documentation

* fix/union_all_panic: Add order by clause to UNION ALL select queries in tests
This commit is contained in:
Lei, HUANG
2024-10-11 16:23:01 +08:00
committed by GitHub
parent d168bde226
commit 7dd0e3ab37
3 changed files with 13 additions and 2 deletions

View File

@@ -329,6 +329,7 @@ impl ExecutionPlanVisitor for MetricCollector {
level: self.current_level,
metrics: vec![],
});
self.current_level += 1;
return Ok(true);
};
@@ -365,8 +366,7 @@ impl ExecutionPlanVisitor for MetricCollector {
}
fn post_visit(&mut self, _plan: &dyn ExecutionPlan) -> std::result::Result<bool, Self::Error> {
// the last minus will underflow
self.current_level = self.current_level.wrapping_sub(1);
self.current_level -= 1;
Ok(true)
}
}

View File

@@ -0,0 +1,10 @@
SELECT 123 as a, 'h' as b UNION ALL SELECT 456 as a, 'e' as b UNION ALL SELECT 789 as a, 'l' as b order by a;
+-----+---+
| a | b |
+-----+---+
| 123 | h |
| 456 | e |
| 789 | l |
+-----+---+

View File

@@ -0,0 +1 @@
SELECT 123 as a, 'h' as b UNION ALL SELECT 456 as a, 'e' as b UNION ALL SELECT 789 as a, 'l' as b order by a;