Hi, I've been debugging VolcanoPlanner for quite some time recently, and it looks like its transparency leaves much to be desired.
Key issues I've run into: 1) It is complicated to understand "what happens" during rule execution. call.transformTo(..) is used a lot, and it is really hard to keep in head the IDs of rels, subsets, etc 2) It takes time to draw the rels on a paper 3) "CannotPlanException" is not human readable. I can read it now, however it really takes time to navigate through IDs. I think a visual representation of the planner state would help a lot for both debugging and/or crash analysis. Does anyone have a tool to visualize sets, subsets, rels and friends? For instance: A) Add String VolcanoPlanner#toGraphViz() so a dump of the current planner state can be obtained and printed (e.g. during debug) B) Implement automatic dump of "before and after" images for each rule execution. In other words, display a source state, highlight rule operands there, and display the final state. Bonus point for an animated gif :) C) Add a GraphViz-compatible bit to CannotPlanException, so the state can be visualized. D) Highlight possible root cause in CannotPlanException output. For instance, empty subset is a strong indicator. In case it can be related to original plan (or even SQL), then it would be great to have that pointer as well. Vladimir
