Promote dev to main: Updates_20260801 - #848
Merged
Merged
Conversation
The two CATCH blocks that guard logging-mode inserts raise severity 11 instead of downgrading every failure to an informational note, so a SQL Agent job whose logging silently breaks reports failure instead of success (verified: exit code 1 under sqlcmd -b with a broken logging table, both paths firing, collection continuing past the failure). The two client-path CATCH blocks stay informational and now say why: they run only when logging is off, so logging breakage cannot reach them. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The two RETURNs after severity-11 RAISERRORs in database validation are removed with comments explaining that control passes to the CATCH block, whose THROW re-raises. Check 4103 (memory grant timeouts) gets @memory_grant_timeout_warning (10) and @memory_grant_timeout_critical (100) mirroring 4101's convention, wired into help, defaulting, and the README, with boundary-equivalence verified against the old hardcoded tiers. Five #databases columns orphaned by removed checks are gone from the table, the dynamic SQL, and the insert list. Harness: 39 passed, 0 failed on SQL Server 2022. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
waits_per_second/hour/day in HumanEvents_WaitsByDatabase had two stacked defects: integer division floored every sub-1 rate to zero, and the numerator was COUNT_BIG(*) over one-row groups, which is always 1, so the column reported 1/span rather than waits/span. The view blob is re-encoded with waits.total_waits * 1.0 wrapped in CONVERT(decimal(38,2), ...), verified by decoding the new blob, byte-comparing all but the three changed lines, and reading real numbers off the created view: 3 waits over 50 seconds reads 0.06, 3 waits over 4 days reads 0.75 per day. executions_per_second in the interactive available-plans result set gets the same truncation fix, where 100 executions over an hour used to read 0 and now reads 0.03. Harness: 195 passed, 0 failed on SQL Server 2022. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@procedure_name = 'MyDb.dbo.MyProc', exactly what people paste from sp_QuickieStore output, now resolves instead of being QUOTENAME'd whole into a single identifier and blamed on Query Store. The name parsing hoists above the database defaulting so a parsed database can feed it, matching sp_QuickieStore's ordering and precedence: an explicitly passed @database_name always wins, and the three-part database is adopted only when @database_name is NULL. Two-part and one-part behavior verified byte-identical against the previous build. Harness grows a procname family proven as regression tests (all five three-part cases fail against the pre-fix build with the exact reported symptom): 265 passed, 0 failed on SQL Server 2022, with installs verified on 2017, 2019, 2022, and 2025. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The @min_reads/@min_writes floor now gates the Rule 7.5/7.5b/7.6 unique-constraint family and Rule 3's merge-target subquery, matching the five rules that already honored it and the promise the help text makes. Rule 7.6 was the live one: a below-floor key duplicate was demonstrably handed a DISABLE script, reachable precisely because Rule 5 correctly declines the same pairing. Rule 7.5b's gate is defensive (transitively covered via Rule 7 today), and Rule 4 is closed through Rule 3's fix since it only consumes Rule 3's targets. rule_coverage_test.py gains Group H: 16 assertions over three floor fixtures, proven as regression tests against the pre-fix build, where seven behavioral assertions fail with the exact defect scripts. Full suite on SQL Server 2022: run_tests 32/32, fixture_cases 31/31, no_access 4/4, rule_coverage 50/53 with the three failures reproduced identically on the unmodified build (uptime-dependent Rule 1 interactions on a long-running instance; green in fresh CI containers). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The procname fixture failed on a cold CI container: Query Store initialization is asynchronous, so the desired READ_WRITE state can lead the actual state and compiles during initialization are silently lost, leaving zero captured rows for the resolution cases. The fixture now waits for actual_state_desc = READ_WRITE in both scratch databases before the workload, and runs the execute-flush-verify sequence in a retry loop instead of a single shot. 265/265 on SQL Server 2022 and 26/26 procname cases on 2025. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Second and final promotion for Updates_20260801: the five audit-ruling fixes that finish the release.
The Updates_20260801 tag and release get recreated on the CI build commit after this merges. All version stamps already read .8 / 20260801.
Harness state on SQL Server 2022: QuickieStore 157/157, ReproBuilder 265/265, HumanEvents 195/195, PerfCheck 39/39, IndexCleanup 32/32 + 31/31 + 4/4 + rule coverage green in CI.
🤖 Generated with Claude Code