Skip to content

Design: representation of Update auxiliary fields #6843

@wjones127

Description

@wjones127

Parent PRD

Milestone: Action-based Transactions (UserOperation) — see milestone description for full PRD.
Discussion: #5960

What to decide

Operation::Update carries several auxiliary fields that do not map onto any action type defined in milestone 11 (#6450#6453):

  • fields_modified
  • merged_generations
  • fields_for_preserving_frag_bitmap
  • update_mode
  • inserted_rows_filter
  • updated_fragment_offsets

These are mostly stats/flags consumed during apply or by downstream code paths (e.g. index maintenance, MemWAL), not state mutations of the manifest. They block lossless translation of Operation::Update to actions.

Options

  1. Ride-along on UserAction — extend UserAction (or UserOperation) with an optional metadata payload for these fields. They participate in serialization but not in apply or conflict detection. Cheapest; preserves round-trip.
  2. First-class actions — define one action per field (e.g. RecordMergedGenerations, SetUpdateMode). Heaviest; uniform but most ceremony.
  3. Audit and drop — determine which fields are actually read downstream and deprecate the rest. Likely correct for at least some (e.g. inserted_rows_filter, updated_fragment_offsets may be stats only).
  4. Hybrid — audit first (option 3); for any survivors, ride-along (option 1).

Recommended starting point: option 4. Audit fields_modified, merged_generations, update_mode, inserted_rows_filter, updated_fragment_offsets, fields_for_preserving_frag_bitmap for actual consumers, then decide per-field.

Acceptance criteria

  • Each field documented with its current consumer(s) in the codebase
  • Per-field decision recorded: drop / ride-along / first-class action
  • Design written up here or in a short ADR
  • Unblocks the Update Operation translation (separate follow-up implementation issue)

Blocked by

User stories addressed

  • User story 9: old operations translated to actions
  • User story 11: lossless round-trip

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions