Hi Vladimir, Anton Haidai did a nice visualizer [1] for sets, subsets, and rels using Calcite's logging mechanism. Maybe it suits your needs.
Best, Stamatis [1] https://github.com/anha1/apache-calcite-trace-analyzer Στις Δευ, 28 Ιαν 2019 στις 1:01 μ.μ., ο/η Vladimir Sitnikov < [email protected]> έγραψε: > 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 >
