You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: distributed EXPLAIN / EXPLAIN ANALYZE via logical extension codec
Add Ballista-specific logical extension nodes (BallistaExplainNode,
BallistaAnalyzeNode) so EXPLAIN/EXPLAIN ANALYZE survive the round-trip
through the scheduler.
The client planner wraps LogicalPlan::Explain / LogicalPlan::Analyze in
the matching extension node before sending to the scheduler. The
scheduler unwraps it back to the native node for optimization and
physical planning. This preserves ExplainFormat (Indent/Tree/
PostgresJSON/Graphviz) and the analyze verbose flag, which were lost by
the default datafusion-proto ExplainNode.
For EXPLAIN ANALYZE, the scheduler strips the Analyze wrapper from the
logical plan, runs the inner plan as a regular distributed job, and on
completion renders per-stage metrics via DisplayableBallistaExecutionPlan
into a new SuccessfulJob.analyzed_plan_text proto field. The client
synthesizes the Analyze output locally from that string instead of
fetching partitions.
Tests:
- 3 codec round-trip unit tests in ballista-core (all ExplainFormat
variants, verbose flags, stable format-string encoding).
- 4 integration tests in ballista-client (EXPLAIN, EXPLAIN FORMAT TREE,
EXPLAIN ANALYZE, EXPLAIN ANALYZE VERBOSE) in standalone + remote
modes, asserting metrics=[] and output_rows= appear in analyze output.
0 commit comments