Skip to content

Release v19.10.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 16:17
8d244b8

Added

  • A join in a projection declaration can set its own automap or no automap, which overrides the projection's setting. The setting is stored with the definition, and applies to live join events and to backfill. Older clients and stored definitions keep inheriting the projection's setting. The fluent .NET JoinBuilder and generated client code don't express it yet.
  • Joins inside a nested object are wired: joined values are set on the nested object, both when the join event arrives and through backfill.

Changed

The declaration language now rejects shapes that were silently ignored, overwritten or failing, instead of compiling them. Stored definitions still load; this only affects compiling or saving a declaration.

  • all inside children or nested. Use all at the root with a dotted path instead.
  • remove via join at the root or inside nested.
  • children inside nested.
  • join inside a nested object beneath children.
  • More than one every/all block at the same level. Two every blocks inside children used to be merged; they are now an error.
  • The same event more than once at one level, including across join blocks, repeated clear with, and remove with plus clear with for the same event. These checks now also run when no schema is supplied.

Fluent and model-bound definitions that use the unsupported root remove via join, or a join inside a nested object beneath children, now log a warning and leave out that wiring, instead of failing the projection's partition.

A nested object inside another nested object now automaps against its own schema instead of the parent's, so values projected for new events can differ.

Fixed

  • every mappings, such as count, increment and add, ran twice for join events. They now run once. Existing read models keep their doubled values until you replay the affected projections. Their definitions don't change, so no replay is triggered automatically.

Part of #4125. Follow-ups cover live joins in nested objects beneath children, root removal via join, and letting child events update parent every fields as an explicit opt-in.