We are lacking test cases to verify query plans even though they directly affect to query processing performance. This is important especially for join queries because their plans can be changed while optimizing join order that affects to performance significantly. So, we need to verify the optimal join plan first.
There can be some approaches to test query plans. Here are some candidates what I consider.
- Adding a special class that verifies query plans while traversing it.
- Verifying the result of EXPLAIN query.
I think that the second approach looks good. Here are some reasons.
- Easy to implement. It's just string match.
- Easy to verify both logical plan and global plan without adding any special classes to traverse query plan.
- This is the most important reason. With the second approach, we can guarantee that our query planner is deterministic.