Bump Marten from 9.22.5 to 9.23.0 - #6
Merged
Merged
Conversation
This was referenced Aug 13, 2026
Owner
|
@dependabot rebase |
--- updated-dependencies: - dependency-name: Marten dependency-version: 9.23.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: nuget-minor-patch ... Signed-off-by: dependabot[bot] <support@github.com>
dependabot
Bot
force-pushed
the
dependabot/nuget/nuget-minor-patch-1e99b6306d
branch
from
August 13, 2026 16:02
3b03701 to
5497b09
Compare
dependabot
Bot
deleted the
dependabot/nuget/nuget-minor-patch-1e99b6306d
branch
August 13, 2026 16:05
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.
Updated Marten from 9.22.5 to 9.23.0.
Release notes
Sourced from Marten's releases.
9.23.0
Highlights
Store-agnostic document abstractions (#5216)
Marten now implements the
JasperFx.Events.Documentscontract added in JasperFx 2.47.0, the shared document session surface behind the Wolverine aggregate-handler unification (wolverine#3907).IQuerySessionIDocumentReadOperationsIDocumentOperationsIDocumentWriteOperationsIDocumentSessionIDocumentSessionOperationsIDocumentStoreIDocumentSessionFactory<IDocumentSession, IQuerySession>MartenLinqQueryProviderIDocumentQueryExecutorMarten already had every operation with matching signatures, so this is additive — existing code is unaffected. Marten passes all 42 tests in the shared document storage compliance suite.
Fixes
#5210 —
UseListenNotifyForEventAppendscorrupted inline projections in the same transaction.NotifyEventAppendedOperationwas markedNoDataReturnedCallbut emittedselect pg_notify(...), which returns a one-row result set.OperationPage.ApplyCallbacksAsyncnever advances the reader past aNoDataReturnedCall, so every later operation in the batch read the wrong result set — surfacing as spuriousConcurrencyExceptions and wrong document versions, far from the cause. Now uses theDO $$ BEGIN PERFORM pg_notify(...); END $$form, which fires the identical notification and returns nothing.HardDeleteWhere<T>could not remove already soft-deleted rows. It inherited the soft-delete exclusion filter, so a retention or purge sweep returned cleanly while leaving behind exactly the rows it existed to remove.HardDeleteby id was unaffected, which made the API look correct when spot-checked.#5159 —
UseOptimisticConcurrencyandUseNumericRevisionswere asymmetric.UseNumericRevisions(true)cleared the competing Guid version metadata;UseOptimisticConcurrency(true)did not clear the numeric revision metadata. The order of the two fluent calls therefore decided whether the configuration worked or threw at bootstrap. Both orders are now last-wins.The bootstrap guard is narrowed rather than dropped, and now reports which case it is:
IRevisioned,ILongVersioned, along[Version]member) still throws, naming the member — honoring the override would leave that property permanently unmapped#5131 —
StreamPagedByCursor<T>publishedtypeof(void)as its OpenAPI response type, so endpoints returning it advertised a 200 with no schema at all. Now publishes a newCursorPagedResult<T>, mirroring whatStreamPaged<T>already does withPagedResult<T>.Hardening and docs
#5213 — an audit test over the
NoDataReturnedCallinvariant. Reflects over every implementation and asserts its SQL cannot return a result set, so the class of bug behind #5210 goes red at build time rather than surfacing as a version mismatch three operations later.#5212 — regression pins ported from Polecat, covering
DeleteWherenot re-stampingmt_deleted_aton already-deleted rows.#5217 — documented Npgsql's
Max Auto Prepareconnection-string knob, including measurements showing no resolvable effect on read latency, and the reasons Marten does not enable prepared statements: generic plans displacing parameter-aware ones (which matters most under conjoined multi-tenancy, where a skewedtenant_idsits in nearly every predicate), per-connection plan memory, and runtime DDL invalidating cached plans.New public API
Marten.AspNetCore.CursorPagedResult<T>IQuerySession,IDocumentOperations,IDocumentSessionandIDocumentStorenow implement the correspondingJasperFx.Events.DocumentscontractsBoth are additive.
Not shipped
The opt-in LINQ query plan cache proposed in #5013 / #5018 was closed rather than merged. Benchmarking showed the cost it removes — LINQ parsing plus SQL generation — is 1.2 μs on the fastest realistic Marten query, against 28–56 μs of run-to-run variance on that same query. On a warm cache hit it allocated more than no cache at all, and in a conjoined multi-tenant store it cached nothing while paying two full LINQ parses per query. Details on #5018.
... (truncated)
9.22.6
A fix-and-adoption release: a masking-rule fix, a broadened event-store compliance net, a CI overhaul, and the JasperFx 2.46.0 / Weasel 9.24.0 dependency adoptions.
Fixes
Every matching masking rule runs, not just the first (#5199)
ApplyEventDataMaskingused to stop at the first masking rule whose event type matched, so an event enrolled in two rules (say, one masking a name and another masking an address) only ever had the first applied. All matching rules now compose: each rule runs in registration order against the output of the previous one.Test coverage
Compliance waves 6-8 + strong-typed identity (#5198, #5201, #5203, #5205)
Marten's event-store behavior is now enrolled in the shared
JasperFx.Events.ComplianceTestssuite for: stream compacting and event data masking (wave 6), projection rebuild/catch-up and dead letters (wave 7), conjoined event tenancy and subscriptions (wave 8), plusStrongTypedIdentityCompliance(#5144). These pin Marten's behavior to the same contract Polecat and future stores are held to.CI
One job per test project, supervised (#5096, #5208)
The monolithic CI test run is split into one job per test project running under Bobcat's supervisor, so a flaky suite no longer poisons the whole gate and failures name the project that produced them. Also removes stray
ITestOutputHelper/debug logger injections from tests (#5211).Dependencies
db-apply/db-assertacross physical databases (weasel#431/#442), per-fingerprint schema stamp keying (weasel#439), SQL ServerCREATE DATABASEpostcondition check (weasel#415), discovery progress reporting (weasel#432).Commits viewable in compare view.