Skip to content

Sync columnstore + Parallelism subtype icons from PerformanceStudio#903

Merged
erikdarlingdata merged 1 commit intodevfrom
sync/parallelism-columnstore-icons-from-ps
Apr 28, 2026
Merged

Sync columnstore + Parallelism subtype icons from PerformanceStudio#903
erikdarlingdata merged 1 commit intodevfrom
sync/parallelism-columnstore-icons-from-ps

Conversation

@erikdarlingdata
Copy link
Copy Markdown
Owner

Summary

Ports the plan-viewer icon-routing work from PerformanceStudio PRs #285 and #288 (PS v1.9.0). Net result, since #288 replaced the temporary R/D/G overlay from #285 with real icons.

What ports

PlanIconMapper.GetIconName(physicalOp, storageType, logicalOp) — two new optional params:

  • storageType="ColumnStore" on a Clustered Index Scan / Index Scan / Columnstore Index Scan (and the matching delete/insert/update/merge variants) routes to the columnstore_index_* icon. Covers both CCI and NCCI.
  • logicalOp for PhysicalOp="Parallelism" routes the three subtypes to their own icons:
    • Repartition Streams → parallelism_repartition_streams
    • Distribute Streams → parallelism_distribute_streams
    • Gather Streams → parallelism_gather_streams (horizontal mirror of distribute, matching SSMS)

ShowPlanParser — the IconName assignment moves from right after PhysicalOp is parsed to after StorageType and LogicalOp are populated, so the new routing has the inputs it needs.

Three new icons added to Dashboard/Resources/PlanIcons/ and Lite/Resources/PlanIcons/. MIT-licensed contribution from @rferraton via PS #288. The existing <Resource Include="Resources\PlanIcons\*.png" /> glob in each csproj picks them up automatically.

What was deliberately not ported

Background

Last upstream sync from PerformanceStudio was PR #856 on 2026-04-16, scoped to PlanAnalyzer.cs + BenefitScorer.cs. This is a follow-up scoped to plan-viewer icon routing only — no analyzer logic, no UI rewrites.

Test plan

  • Dashboard builds clean (0 errors, only pre-existing warnings)
  • Lite builds clean (0 errors, only pre-existing warnings)
  • Open a plan with a columnstore scan in Dashboard — verify the columnstore icon shows
  • Open a parallel plan in Dashboard — verify Repartition/Distribute/Gather Streams nodes show distinct icons
  • Same checks in Lite

🤖 Generated with Claude Code

…manceStudio

Ports PerformanceStudio PRs #285 and #288 (net result; the temporary R/D/G
overlay from #285 was replaced by real icons in #288).

PlanIconMapper.GetIconName now takes optional storageType and logicalOp:
- Columnstore scans (Clustered/Index Scan with Storage="ColumnStore" on the
  Object element) route to the columnstore_index_* icons. Covers both CCI
  and NCCI for scan/delete/insert/update/merge.
- The three Parallelism subtypes (Repartition/Distribute/Gather Streams)
  route to their own icons instead of all sharing parallelism.png.

ShowPlanParser: the IconName assignment moves from immediately after PhysicalOp
parsing to after StorageType and LogicalOp are populated, so the new routing
has the inputs it needs.

Three new icons (MIT-licensed contribution from @rferraton via PS #288) added
to both Dashboard and Lite Resources/PlanIcons. The existing Resource glob
in each csproj picks them up automatically.

Last upstream sync from PerformanceStudio was 2026-04-16 (#856), scoped to
PlanAnalyzer + BenefitScorer. This is a follow-up scoped to plan-viewer
icon routing.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@erikdarlingdata erikdarlingdata merged commit 2ad8c67 into dev Apr 28, 2026
3 checks passed
@erikdarlingdata erikdarlingdata deleted the sync/parallelism-columnstore-icons-from-ps branch April 28, 2026 01:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant