Skip to content

Weasel 9.48.0, and MySqlConnector 2.6.1 with it - #5335

Merged
jeremydmiller merged 2 commits into
mainfrom
bump/weasel-9.48.0
Nov 2, 2026
Merged

jeremydmiller merged 2 commits into
mainfrom
bump/weasel-9.48.0

Conversation

@jeremydmiller

Copy link
Copy Markdown
Member

Weasel 9.48.0, published today. Release notes: https://weasel.jasperfx.net/release-9-48

Nine PRs went into it: the parameter-type catch-all fix (weasel#758/#759 → #760) and the three issues it uncovered (#761, #762, #763), three SQL Server bugs found from Polecat (#764, #765, #766), MySqlConnector 2.6.1 for GHSA-473q-m89c-ghf8 (#767) and JasperFx 2.98.0 (#769).

MySqlConnector 2.6.1 is required, not tidy

Weasel.MySql 9.48.0 declares a floor of MySqlConnector >= 2.6.1, so at the 2.4.0 this repo pinned the restore fails with NU1605, a package downgrade promoted to an error:

WolverineFx.MySql -> Weasel.MySql 9.48.0 -> MySqlConnector (>= 2.6.1)
WolverineFx.MySql -> MySqlConnector (>= 2.4.0)

Weasel took that bump for GHSA-473q-m89c-ghf8 (weasel#767), so the advisory closes for WolverineFx.MySql here too. That is the one part of this PR that is not a version string.

What else reaches Wolverine

Wolverine pins all eight Weasel packages, the widest surface of the four consumers, but most of this release lands on paths it does not take.

  • weasel#758/Azure Service Bus listener honors the default message type. Closes GH… #759 — Wolverine does not call ToParameterType itself; it hands SqlServerProvider.Instance and PostgresqlProvider.Instance to the Weasel base classes, so what it gets is the corrected resolution underneath. On SQL Server, short, byte, float, char, DateOnly and TimeOnly were unmapped and went out as sql_variant, which outranks every ordinary type in data type precedence and so converts the column once per row; and DateTime resolved to SqlDbType.Date, which dropped the time of day on a bound value. Both fixed, and the generated datetime column type is unchanged, so no envelope table produces a schema diff.
  • weasel#766 — sp_getapplock's wait was capped by the connection's CommandTimeout. Latent rather than live here, and I checked each call site: SqlServerMessageStore.DurabilityPass passes lockTimeoutMs: 0, and SqlServerMessageStore and SqlServerAdvisoryLock take the 1000ms default — none anywhere near the 30 second cap. It matters if SharedLockExtensions.DefaultLockTimeoutMilliseconds is ever raised past 30 seconds, which before this release would have had no effect at all.
  • weasel#763 — DateOnly/TimeOnly now map on MySQL and are refused on Oracle, where ODP.NET has no conversion for either CLR type against any OracleDbType. Wolverine.MySql and Wolverine.Oracle bind neither, so inert — but it is a new NotSupportedException on a path that previously sent a culture-dependent string.
  • Inert: weasel#761 (nothing routes an enum or array through the provider seam), Update event-sourcing.md (nuke unnecessary code + grammatical touch-ups) #762, Dead Letter Queue Improvements to Support "CritterWatch" #764, Marten / Wolverine crashes after update to V7.1 / V2.0 #765 (Wolverine partitions nothing).

Verification

No Wolverine code changes. dotnet restore and dotnet build wolverine.slnx clean against the published packages, 0 errors. The JasperFx 2.98.0 floor was already satisfied by #5333.

🤖 Generated with Claude Code

jeremydmiller and others added 2 commits November 2, 2026 09:04
Wolverine pins all eight Weasel packages, so it has the widest surface of the
four consumers, but most of this release lands on paths Wolverine does not take.

MySqlConnector moves to 2.6.1 as part of this, and not optionally: Weasel.MySql
9.48.0 declares a floor of 2.6.1, so the restore fails with NU1605 at the 2.4.0
this repo pinned. Weasel took it for GHSA-473q-m89c-ghf8 (weasel#767), so that
advisory closes for WolverineFx.MySql here too.

weasel#758/#759: the parameter-type catch-all. Wolverine does not call
ToParameterType itself; it hands SqlServerProvider.Instance and
PostgresqlProvider.Instance to the Weasel base classes, so what it gets is the
corrected resolution underneath. On SQL Server, short, byte, float, char,
DateOnly and TimeOnly were unmapped and went out as sql_variant, which converts
the column once per row, and DateTime resolved to SqlDbType.Date, which dropped
the time of day on a bound value. Both are fixed, and the generated datetime
COLUMN type is unchanged, so no envelope table produces a schema diff.

weasel#766: sp_getapplock's wait was capped by the connection's CommandTimeout.
Latent rather than live here: SqlServerMessageStore.DurabilityPass passes
lockTimeoutMs 0 and the other SQL Server call sites take the 1000ms default, so
none was near the 30 second cap. It matters if DefaultLockTimeoutMilliseconds is
ever raised past 30 seconds, which before this release would have had no effect.

No Wolverine code changes. Restores and builds clean against the published
packages; the JasperFx 2.98.0 floor was already satisfied by #5333.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…9.48.0

Weasel 9.48.0 (weasel#758/#759) now types a DateTime as datetime2 itself, so
SqlServerDbCommandBuilder no longer resets it and SqlClient no longer infers
datetime. The assertion's point was "not date"; every envelope time column is
datetimeoffset, which outranks both datetime and datetime2, so the parameter
converts and no column is converted either way.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DCggXgxnG3EBXoR9rrq37U
@jeremydmiller
jeremydmiller merged commit 0eca1a0 into main Nov 2, 2026
48 of 49 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