Skip to content

Query Insights: Planner-tree traversal helpers miss shard branches #620

@tnaum-ms

Description

@tnaum-ms

Summary

findStageInPlan() in ExplainPlanAnalyzer.ts and collectPlannerStages() in StagePropertyExtractor.ts only traverse inputStage and inputStages — they do not recurse through shards structures. In contrast, traverseStages() (execution-stage traversal for UI) already handles shards.

This means for sharded DocumentDB clusters, planner-stage signals like isBitmap can be missed when they appear under a shard branch. Only Stage 2 informational badges (bitmap, low-cardinality) are affected — Stage 3 (AI) receives the raw explain JSON and is unaffected.

What needs to change

  • Extend findStageInPlan() to recurse through shards structures (matching traverseStages() behavior).
  • Extend collectPlannerStages() similarly.
  • Add a sharded test case where IXSCAN.isBitmap === true appears under a shard branch.

Related

Origin

Identified during review of PR #616 (R-002 in docs/analysis/pr-616-review.md). Severity: Low.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions