Skip to content

C8 expensive-operator rule + C9 columnstore on wide bare scans (#215)#263

Merged
erikdarlingdata merged 1 commit intodevfrom
feature/c8-expensive-operator-c9-columnstore
Apr 22, 2026
Merged

C8 expensive-operator rule + C9 columnstore on wide bare scans (#215)#263
erikdarlingdata merged 1 commit intodevfrom
feature/c8-expensive-operator-c9-columnstore

Conversation

@erikdarlingdata
Copy link
Copy Markdown
Owner

Summary

  • C9: Rule 34 now fires on wide-output bare scans (>3 columns) with columnstore-focused advice. Narrow-output path keeps the NC-index advice.
  • C8: new Rule 35 "Expensive Operator" — emits when an operator's self-time is ≥20% of statement elapsed and no other warning is on the node. Benefit % = self-time share; Critical at ≥50%.

Test plan

  • Neither rule false-positives on private plan or 20260415_1.sqlplan
  • Build green
  • Visual post-deploy

Version 1.7.5 → 1.7.6.

🤖 Generated with Claude Code

…215)

C9: Rule 34 (Bare Scan) previously only fired when the scan output was
≤3 columns, since rowstore nonclustered indexes get expensive with more
columns. Joe's point: columnstore (CCI/NCCI) doesn't care about column
count, so a wide bare scan with nothing to suggest is a missed
recommendation. Rule 34 now also fires on wide outputs (>3 columns) with
columnstore-focused advice. Narrow-output path keeps the NC-index
advice as before.

C8: new Rule 35 "Expensive Operator" — emits when an operator's self-
time is ≥20% of statement elapsed AND no other warning has already
fired on the node. Ensures large work doesn't disappear just because
the tool has nothing specific to suggest (Joe's scan-with-nothing-to-say
case). Benefit % = self-time share; severity Critical at ≥50%, Warning
otherwise. Self-guarded against existing warnings so it never stacks
on top of a spill/lookup/etc.

Neither rule fires on Joe's private plan (every significant operator
already has a warning) or on 20260415_1.sqlplan (parallel work split).
That's the expected "no false positives" behavior.

Version bump 1.7.5 -> 1.7.6.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@erikdarlingdata erikdarlingdata merged commit e05bc69 into dev Apr 22, 2026
2 checks passed
@erikdarlingdata erikdarlingdata deleted the feature/c8-expensive-operator-c9-columnstore branch April 22, 2026 17:17
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