Skip to content

Rule 38: suppress when query has explicit MAXDOP 2 hint#304

Merged
erikdarlingdata merged 1 commit intodevfrom
fix/rule-38-respect-maxdop-2-hint
May 2, 2026
Merged

Rule 38: suppress when query has explicit MAXDOP 2 hint#304
erikdarlingdata merged 1 commit intodevfrom
fix/rule-38-respect-maxdop-2-hint

Conversation

@erikdarlingdata
Copy link
Copy Markdown
Owner

Follow-up to #275 (Standard Edition DOP 2 limitation rule).

When the user explicitly sets OPTION (MAXDOP 2) in a query, observing DOP=2 + batch mode operators is just the user's hint doing what was asked — not the Standard Edition batch-mode cap. The warning would be misleading in that case, so suppress it.

Mirrors the same handling Rule 3 (Serial Plan) uses for explicit MAXDOP 1 hints.

Behavior

  • Query has OPTION (MAXDOP 2) (or any case-insensitive `MAXDOP 2` token) in StatementText: no warning, regardless of edition.
  • Query has no MAXDOP hint, edition is Standard, MAXDOP > 2: Warning (unchanged).
  • Query has no MAXDOP hint, edition unknown: Info (unchanged).
  • Query has no MAXDOP hint, edition is Standard with MAXDOP=2: no warning (unchanged — limit isn't biting).

Test plan

  • dotnet test — 77/77 pass (5 pre-existing Rule 38 tests + 2 new)
    • Rule38_StandardEdition_Dop2_BatchMode_MaxDop2QueryHint_NoWarning
    • Rule38_NoServerMetadata_Dop2_BatchMode_MaxDop2QueryHint_NoWarning
  • dotnet build Core + Web — clean

When the user explicitly sets OPTION (MAXDOP 2) in the query, the DOP cap
is intentional and not the SQL Server Standard Edition batch-mode
limitation, so the warning would be misleading. Suppress in that case
(both the Standard-Edition-confirmed Warning path and the unknown-edition
Info path).

Mirrors the existing Rule 3 (Serial Plan) handling for MAXDOP 1 hints.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@erikdarlingdata erikdarlingdata merged commit 47dd5f3 into dev May 2, 2026
2 checks passed
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