Repository navigation
9.34.0
Full upgrade guide: https://weasel.jasperfx.net/release-9-34
⚠️ If you are on 9.33.0 with Weasel.SqlServer, upgrade
9.33.0 removed four public SharedLockExtensions signatures. Anything compiled against 9.32.0 or earlier — current WolverineFx.SqlServer among them — throws MissingMethodException at runtime once 9.33.0 is resolved underneath it. An application on Polecat 5.31.0 (which floors 9.33.0) plus current WolverineFx fails the moment a host boots and takes the migration lock.
Nothing catches it before runtime: restore is clean because 9.33.0 satisfies the declared 9.32.0 floor, compile is clean because the caller is already compiled, and Weasel.Postgresql was untouched — so a green Marten/Postgres suite says nothing about it.
9.34.0 restores the four signatures. No source change is needed in either direction, and lockTimeoutMs keeps working as 9.33.0 introduced it.
EF Core: an index that cannot be expressed as a typed operation now carries its own DDL
db-ef-migration translated every index into a CreateIndexOperation, whose Columns is a list of identifiers the provider quotes one at a time. That broke two ways:
- Loudly — a Marten computed index carries its expression in
Columns, so the migration died on apply with42703: column "(data ->> 'Kind')" does not exist. - Quietly —
CreateIndexOperationhas nowhere to put an operator class, so aGinIndexJsonData()index applied without error using the defaultjsonb_opsinstead of the declaredjsonb_path_ops. A different index from the one declared, on a migration that reported success. The differ compared the same incomplete subset, so later changes to those options produced no migration at all.
Such an index is now emitted as its own CREATE INDEX, and diffed on that DDL. Only the index takes that route — the table around it stays typed, so snapshot diffing keeps working for Marten document tables. The previous workaround (ForceRawSql over the whole table) made every subsequent change to it something the differ refused.
Your first
db-ef-migration addafter upgrading may contain index changes you did not make. That is the correction landing — those indexes really are wrong in the database — but review it rather than assuming it is spurious. See the upgrade guide for the detail, including the oneDown()edge case.
Reported with a complete repro by @Jaxter.
ITableIndex gains two members
HasProviderSpecificOptions and ToDDL(ITable), implemented by all five providers. A source break only if you implement ITableIndex yourself, which is unusual.