Skip to content

Release v2.1.0#407

Merged
erikdarlingdata merged 105 commits intomainfrom
dev
Mar 3, 2026
Merged

Release v2.1.0#407
erikdarlingdata merged 105 commits intomainfrom
dev

Conversation

@erikdarlingdata
Copy link
Owner

Release v2.1.0

Summary

Test plan

  • Fresh install tested on sql2016
  • Upgrade install tested on sql2017, sql2019, sql2025
  • GUI install tested on sql2022
  • Idempotency tested on all 5 servers (sql2016-sql2025)
  • Post-install validation: 0 errors, 46+ collectors on all servers
  • Dashboard and Lite smoke tested
  • query_snapshots schema mismatch fix verified on sql2019, sql2025

🤖 Generated with Claude Code

ClaudioESSilva and others added 30 commits February 26, 2026 17:20
Text filter operators (Contains, Equals, NotEquals, StartsWith, EndsWith)
now accept comma-separated values. Contains/Equals/StartsWith/EndsWith
match ANY term (OR logic), NotEquals excludes ALL terms (AND logic).
e.g., NotEquals "db1, db2" excludes both databases. Applied to both
Dashboard and Lite popup filters.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…filters

Support comma-separated values in text column filters (#348)
…-tab-control

Feature/sort server list in tab control
…ments

Rule 15: Exact OR expansion chain check (Nested Loops → Merge Interval →
  TopN Sort → Concatenation → Constant Scans) replaces loose ancestor walks
Rule 16: Raise nested loops thresholds to 100K warn / 1M critical
Rule 17: In actual plans, only warn when Merge Join has logical reads
  (worktable was actually used); include read count in message
Rule 22: StartsWith("@") instead of Contains; updated message re: column
  statistics and 2019+ deferred compilation
Rule 24: Include columnstore scans in Top Above Scan detection

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Rules 15-24: Pattern precision, threshold tuning, message improvements
…→2.1.0)

Remove ALTER TABLE blocks from 01_install_database.sql — upgrade logic
belongs in upgrades/ folder, not install scripts. CREATE TABLE already
has the columns for fresh installs. (#337)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…-flags

Move collect_query/collect_plan upgrade to proper upgrade path
PROBE() expressions pushed down from hash joins are bitmap filters,
not real residual predicates. Rule 11 now ignores scans where the
predicate is exclusively PROBE(). When a real predicate exists
alongside PROBE (e.g. [col]=(0) AND PROBE(...)), the rule still fires.

Adds IsProbeOnly() helper to both Dashboard and Lite PlanAnalyzers.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…s-icon

[Feature] Adds Warning Status to Lite
ClaudioESSilva and others added 29 commits March 3, 2026 12:01
Adds a sub-multi tab layer where we can drag and drop or open sqlplan files or paste the XML.
…395

SQL Server's decimal arithmetic produces decimal(38,24) when dividing
decimal(19,4) by bigint, which exceeds .NET System.Decimal's ~29 digit
limit. Wrap all 20 per-second rate and avg-ms-per-wait division results
in CAST(... AS decimal(18, 4)) to bound the result type.

Affects wait stats, signal wait stats, lock wait stats, and execution
count per-second calculations.

Closes #395

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Same decimal(19,2) / bigint => decimal(38,21) overflow risk in the
poison wait delta query used by the Server Health Overview page.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Fix OverflowException on wait stats decimal division (Issue #395)
…ecution-plans

Feature/Allow open/paste execution plans
…ecution-plans

Feature/allow external execution plans - Support multi files (dialog and drag&drop)
…ialog-matching

Feature/make add server dialog matching
…erties, installer validation fix (#400)

- CHANGELOG.md: full 2.1.0 entry (light themes, plan viewer, optional query/plan collection, timezone display, CLI flags)
- README.md: updated feature descriptions, collector counts, edition comparison table
- Upgrade script: added 02_default_trace_events_new_columns.sql for duration_us/end_time columns missing on upgrade from 2.0.0
- Version properties: added explicit AssemblyVersion/FileVersion/InformationalVersion to Dashboard, Lite, InstallerGui csprojs
- Installer validation fix: both CLI and GUI installers now filter collection_log errors by validation start time instead of reporting all historical errors

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…grade (#401)

sp_WhoIsActive inserts into destination tables by ordinal position, not
column name. When sp_WhoIsActive is updated and its output column order
changes, existing daily tables (query_snapshots_YYYYMMDD) have the old
column order, causing "Implicit conversion from data type xml to varchar"
errors until the next day when a new table is created.

Fix: wrap the insert in a nested TRY/CATCH. On error 257 (implicit
conversion), drop and recreate the daily table from the current
sp_WhoIsActive schema, then retry the insert. This makes upgrades
work immediately without waiting for midnight table rotation.

Tested on sql2017, sql2019, sql2025 — all had the error before,
all pass clean after this fix.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
# Conflicts:
#	Dashboard/Controls/MemoryContent.xaml.cs
#	Dashboard/Controls/PlanViewerControl.xaml
#	Dashboard/Controls/PlanViewerControl.xaml.cs
#	Dashboard/Controls/ResourceMetricsContent.xaml.cs
#	Dashboard/Controls/SystemEventsContent.xaml.cs
#	Dashboard/Models/PlanModels.cs
#	Dashboard/Services/PlanAnalyzer.cs
#	Dashboard/Services/ShowPlanParser.cs
#	Lite/Controls/PlanViewerControl.xaml.cs
#	Lite/Controls/ServerTab.xaml.cs
#	Lite/Models/PlanModels.cs
#	Lite/Services/PlanAnalyzer.cs
#	Lite/Services/RemoteCollectorService.QueryStore.cs
#	Lite/Services/RemoteCollectorService.ServerConfig.cs
#	Lite/Services/ShowPlanParser.cs
#	README.md
#	install/09_collect_query_store.sql
#	install/39_collect_database_configuration.sql
Merge main into dev for v2.1.0 release
@erikdarlingdata erikdarlingdata merged commit ae208b3 into main Mar 3, 2026
3 of 7 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.

3 participants