From 4f7d05021a9157bb52f455566a4f3df3e44e1f40 Mon Sep 17 00:00:00 2001 From: Ian Gulliver Date: Tue, 20 Oct 2026 22:48:47 -0700 Subject: [PATCH] Audit of 9af1463 --- internal/store/store.go | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/internal/store/store.go b/internal/store/store.go index 9f63575..9597348 100644 --- a/internal/store/store.go +++ b/internal/store/store.go @@ -1021,8 +1021,8 @@ func (s *Store) TaskEvents(ctx context.Context, taskID string, after int64, limi } func (s *Store) TranscriptEvents(ctx context.Context, taskID string, after int64, limit int) ([]api.Event, error) { - where := "task_id = ?" - args := []any{taskID} + query := "SELECT " + eventColumns + " FROM events WHERE task_id = ? AND seq > ?" + args := []any{taskID, after} for id := taskID; ; { from := "" at := 0 @@ -1041,14 +1041,12 @@ func (s *Store) TranscriptEvents(ctx context.Context, taskID string, after int64 if err != nil { return nil, err } - where += " OR (task_id = ? AND seq <= ?)" - args = append(args, from, cut) + query += " UNION ALL SELECT " + eventColumns + " FROM events WHERE task_id = ? AND seq <= ? AND seq > ?" + args = append(args, from, cut, after) id = from } - rows, err := s.db.QueryContext(ctx, ` - SELECT `+eventColumns+` - FROM events WHERE (`+where+`) AND seq > ? ORDER BY seq LIMIT ? - `, append(args, after, limit)...) + // Merge the indexed ranges in sequence order instead of sorting the remaining history for every page. + rows, err := s.db.QueryContext(ctx, query+" ORDER BY seq LIMIT ?", append(args, limit)...) if err != nil { return nil, err }