Repository navigation
Bump Marten from 9.50.2 to 9.50.3 - #2
Closed
dependabot[bot] wants to merge 1 commit into
Closed
dependabot[bot] wants to merge 1 commit into
dependabot[bot] wants to merge 1 commit into
Conversation
--- updated-dependencies: - dependency-name: Marten dependency-version: 9.50.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: marten ... Signed-off-by: dependabot[bot] <support@github.com>
dependabot
Bot
force-pushed
the
dependabot/nuget/marten-e7e91bcf4b
branch
from
October 16, 2026 12:46
f7ca257 to
b7c9b50
Compare
Author
|
Looks like Marten is updatable in another way, so this is no longer needed. |
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.50.2 to 9.50.3.
Release notes
Sourced from Marten's releases.
9.50.3
The Native AOT and hard-delete release. One new feature on the event store, two schema-naming fixes that could not be worked around, and three behaviour changes — read those before upgrading.
New
TombstoneStream— a hard stream delete (#5673, #5674).session.Events.TombstoneStream(id)queues a single-statement delete of a stream's tag rows, its events and its stream row — plus themt_streams_identityrow under strict identity enforcement — scoped to the session tenant under conjoined tenancy. The event sequence is never touched, and projected documents are deliberately left alone. Queued untilSaveChangesAsync, like every other write.It is on the shared
IEventStoreOperationscontract as a default member that throwsNotSupportedException, so a store without a hard delete stays source-compatible, and the sharedStreamTombstoningCompliancesuite now runs against Marten.DCB tag types can be registered for Native AOT (#5649, #5674, #5676).
RegisterTagType<TTag>()discovers the tag's inner type by reflecting over its members and closes a generic registration at runtime, neither of which a native image can do — so a store with a DCB tag type could not even be configured under AOT.Naming the inner type closes the generic at compile time and the unwrapper replaces the reflection. The suffix is optional and defaults to the tag type's own name, so for a tag the inferring overload could register, this one registers the same inner type and the same table. It works identically under a JIT.
The inferring overloads are now annotated
[RequiresUnreferencedCode]/[RequiresDynamicCode], and — because an analyzer warning only reaches an application that is itself AOT-analyzed, while a store configured from inside a library gets nothing — a failure at runtime now throws naming the exact line to write, keeping the original exception as its inner exception. Automatic tag registration from projection identities logs a warning naming the same line, including the projection'sForAggregate<T>().With explicit registrations, tagging, tag rules,
EventTagQuery,EventsExistAsync,AggregateByTagsAsyncandFetchForWritingByTagsinto a[BoundaryAggregate]all run from a native binary. A CI job publishes and runs them.Fixed
A custom foreign key name is no longer discarded under conjoined tenancy (#5672, #5678). Moving
tenant_idto the front of a document foreign key regenerated the key's name unconditionally, so a name set through theforeignKeyConfigurationcallback was thrown away. That is what made the identifier-length failure unfixable: the exception tells you to override the database object name, and overriding it had no effect. A generated name is still regenerated; a chosen one survives, as does the name of aForeignKeyadded by hand.Archiving a tagged stream no longer fails with a foreign key violation (#5675, #5679). With
UseArchivedStreamPartitioningon and any DCB tag type registered,ArchiveStreamcame back as23503. Eachmt_event_tag_*table is partitioned byis_archivedand carries a composite foreign key tomt_events;mt_archive_streammoved the events between partitions without moving the tag rows that referenced them. It now moves them, in the order that keeps both sides of a non-deferrable key consistent at every statement.AllObjects()no longer applies the Hi-Lo DDL (#5665, #5670). Describing the schema provisioned part of it. The describing seam is now separate from the applying one, and is proven offline against an unreachable host.A failed Rebuild-mode run can be restarted and finished from its committed progress (#5668, #5669).
Performance
id = ANY($1)that could only return no rows, plus a second connection with the defaultUseIdentityMapForAggregates = false. The same guard removes a wasted round trip from an async daemon batch whose slices all hit the aggregate write cache.Behaviour changes
An empty DCB tag table suffix is refused.
RegisterTagType<T>("")used to be accepted and namedmt_event_tag_— a real table that every tag type registered that way would share. Pass a suffix, ornullfor the tag type's own name.A tag type that cannot be read now throws
InvalidOperationException, with the originalInvalidValueTypeExceptionas its inner exception, and a message naming the explicit registration. This happens whether or not dynamic code is available, because the same exception means "not a single-value wrapper" under a JIT and "the members were trimmed away" in a trimmed image, and nothing at runtime tells those apart.Document foreign key and index names longer than 63 characters are shortened with a deterministic hash suffix, the same treatment the document table's primary key already got. If you raised PostgreSQL's
NAMEDATALENand have a foreign key or index whose generated name is between 64 characters and your own limit, that object will be renamed and you will see it in a migration diff.Known, not fixed
DCB tag queries return archived events, where every other event query excludes them by default — #5677. It matters most for
EventsExistAsync, which is what a consistency boundary assertion is built on: an archived stream still answers yes. Independent of storage mode and of archived-stream partitioning.Dependencies
... (truncated)
Commits viewable in compare view.