A validated row-sequence transition expressed in immutable-base coordinates.
The current renderer can derive one prefix/suffix splice from two snapshots via
from_snapshots/2. Ticket #2742 can replace that derivation with ChangeLog-owned
splices without changing the encoder or frontend wire contract.
Summary
Functions
Derives the temporary single prefix/suffix splice used before #2742 supplies ChangeLog deltas.
Builds and validates a row delta.
Validates immutable-base ordering, ranges, and exact result arithmetic.
Types
@type t() :: %Minga.RenderModel.Window.RowDelta{ base_row_count: non_neg_integer(), result_row_count: non_neg_integer(), splices: [Minga.RenderModel.Window.RowSplice.t()] }
@type validation_error() ::
:count_out_of_range
| :empty_splice
| :splice_out_of_range
| :splices_not_strictly_ascending
| :splices_overlap
| :result_count_mismatch
Functions
@spec from_snapshots([Minga.RenderModel.Window.Row.t()], [ Minga.RenderModel.Window.Row.t() ]) :: t()
Derives the temporary single prefix/suffix splice used before #2742 supplies ChangeLog deltas.
@spec new(non_neg_integer(), non_neg_integer(), [ Minga.RenderModel.Window.RowSplice.t() ]) :: {:ok, t()} | {:error, validation_error()}
Builds and validates a row delta.
@spec validate(t()) :: :ok | {:error, validation_error()}
Validates immutable-base ordering, ranges, and exact result arithmetic.