packages feed

kiroku-store-0.11.0.0: test/fixtures/stream-head-isolation/linkToStreamStmt.sql

WITH
  event_list AS (
    SELECT event_id, idx
    FROM unnest($1::uuid[]) WITH ORDINALITY AS t(event_id, idx)
  ),
  stream_upsert AS (
    INSERT INTO streams (stream_name, stream_version)
    VALUES ($2, (SELECT count(*) FROM event_list))
    ON CONFLICT (stream_name)
    DO UPDATE SET stream_version = streams.stream_version + (SELECT count(*) FROM event_list)
      WHERE streams.deleted_at IS NULL
    RETURNING stream_id, stream_version - (SELECT count(*) FROM event_list) AS initial_version
  ),
  link_inserts AS (
    -- LEFT JOIN LATERAL surfaces missing-event rows as NULLs for original_*; the
    -- NOT NULL constraint on stream_events.original_stream_id then aborts the
    -- entire CTE, rolling back the stream_upsert's version bump. Before the F3
    -- fix this was a plain JOIN LATERAL, which silently dropped missing-event
    -- rows while still bumping stream_version → silent gap in the link target.
    INSERT INTO stream_events (event_id, stream_id, stream_version, original_stream_id, original_stream_version)
    SELECT el.event_id, su.stream_id, su.initial_version + el.idx,
           orig.original_stream_id, orig.original_stream_version
    FROM event_list el
    CROSS JOIN stream_upsert su
    LEFT JOIN LATERAL (
      SELECT se.original_stream_id, se.original_stream_version
      FROM stream_events se
      WHERE se.event_id = el.event_id AND se.stream_id <> 0
      LIMIT 1
    ) orig ON true
  )
SELECT su.stream_id, su.initial_version + (SELECT count(*) FROM event_list)
FROM stream_upsert su