fix: make workbench trace migration idempotent
This commit is contained in:
@@ -391,23 +391,28 @@ INSERT INTO workbench_trace_events (
|
||||
updated_at
|
||||
)
|
||||
SELECT
|
||||
id,
|
||||
trace_id,
|
||||
agent_session_id,
|
||||
trace_id,
|
||||
source_trace_events.id,
|
||||
source_trace_events.trace_id,
|
||||
source_trace_events.agent_session_id,
|
||||
source_trace_events.trace_id,
|
||||
NULL,
|
||||
0,
|
||||
id,
|
||||
0,
|
||||
source_trace_events.durable_projection_seq,
|
||||
source_trace_events.id,
|
||||
source_trace_events.durable_projection_seq,
|
||||
'agent_trace_event',
|
||||
false,
|
||||
false,
|
||||
COALESCE(NULLIF(event_json, ''), '{}'),
|
||||
occurred_at,
|
||||
occurred_at
|
||||
FROM agent_trace_events
|
||||
WHERE id IS NOT NULL AND trace_id IS NOT NULL
|
||||
ON CONFLICT (id) DO NOTHING;
|
||||
COALESCE(NULLIF(source_trace_events.event_json, ''), '{}'),
|
||||
source_trace_events.occurred_at,
|
||||
source_trace_events.occurred_at
|
||||
FROM (
|
||||
SELECT
|
||||
agent_trace_events.*,
|
||||
(ROW_NUMBER() OVER (PARTITION BY trace_id ORDER BY occurred_at, id))::integer AS durable_projection_seq
|
||||
FROM agent_trace_events
|
||||
WHERE id IS NOT NULL AND trace_id IS NOT NULL
|
||||
) AS source_trace_events
|
||||
ON CONFLICT DO NOTHING;
|
||||
|
||||
INSERT INTO workbench_turns (
|
||||
turn_id,
|
||||
|
||||
@@ -80,6 +80,10 @@ test("initial migration declares Workbench fact backfill sources", async () => {
|
||||
|
||||
assert.match(sql, /ON CONFLICT \(session_id\) DO NOTHING/u);
|
||||
assert.match(sql, /ON CONFLICT \(trace_id\) DO NOTHING/u);
|
||||
const traceBackfillMatch = sql.match(/INSERT INTO workbench_trace_events \([\s\S]*?ON CONFLICT DO NOTHING;/u);
|
||||
assert.ok(traceBackfillMatch, "missing workbench_trace_events idempotent backfill");
|
||||
assert.match(traceBackfillMatch[0], /ROW_NUMBER\(\) OVER \(PARTITION BY trace_id ORDER BY occurred_at, id\)/u);
|
||||
assert.match(traceBackfillMatch[0], /durable_projection_seq/u);
|
||||
});
|
||||
|
||||
test("protocol record guards catch schema drift before runtime writes", () => {
|
||||
|
||||
Reference in New Issue
Block a user