Add BBM to backfill Duo Workflow checkpoint headers and blobs
What does this MR do and why?
This MR adds a batched background migration that copies legacy checkpoints from p_duo_workflows_checkpoints into p_duo_workflows_checkpoint_headers and p_duo_workflows_checkpoint_blobs. A follow-up removes the legacy read path, and partition retention alone cannot guarantee migrated data lands before that happens on self-managed instances. The one design choice worth a look: it only migrates a row when no header exists yet for that (workflow_id, thread_ts, workflow_created_at), so GitLab.com rows already dual-written are skipped and self-managed rows are always migrated.
Design details: cursor, skip filter, header/blob shape, edge cases, rejected alternative, known gap
- Iterates
p_duo_workflows_checkpointswith cursor(id, created_at), the composite primary key. Rows are processed inidorder, so when onethread_tswas sent twice, the later legacy row also gets the later header and blobs (readers take the latest id). - Rows of workflows created more than 30 days ago are skipped: the header and blob tables are partitioned by
workflow_created_atwith 30-day retention, so those workflows have no partition left to hold their rows and the insert would fail. An old workflow can still be resumed (Workflow#archived?is informational), so this case exists. - A row is migrated only when no header exists for
(workflow_id, thread_ts, workflow_created_at). The lookup runs against aMATERIALIZEDcandidatesCTE so Postgres prunes the header lookup to the workflow's daily partition (verified on Database Lab: 57 of 58 header partitions never executed). The jsonbcheckpointcolumn is read only for rows that pass this filter. - Header = legacy
checkpointminuschannel_values, pluschannel_keys(the channel names), plusparent_ts,checkpoint_ns,current_thread,metadata, and the legacy row'screated_at/updated_at.workflow_created_at(the partition key) comes from a join onduo_workflows_workflows. - One blob per channel: the full channel value as zlib-compressed JSON,
write_type = 'json',step_action = 'compaction'.Gitlab::DuoWorkflow::ChannelValuesReconstructortreats a compaction as a full replacement and anchors folds at the last compaction, so each migrated checkpoint is self-contained.channel_historydedups bymessage_id, soui_chat_loghistory across migrated checkpoints stays correct. - Blob
version= the legacy row id. Readers use version only to dedup blobs within onethread_ts; the legacy id keeps a re-sent checkpoint's blobs distinct and makes re-runs no-ops via the unique indexidx_duo_wf_checkpoint_blobs_dedup(insert_allwithunique_by). - Headers and blobs for one sub-batch are inserted in one transaction, so a header never lands without its blobs.
tables_to_check_for_vacuumnames both target tables.- Edge cases: a channel blob over the 1 MiB
check_duo_wf_checkpoint_blobs_data_sizelimit is skipped with aGitlab::BackgroundMigration::Logger.warnline; the header still lists the channel. A checkpoint with more than 100 channels is skipped with a log line (no header, no blobs): the live write path rejects such a checkpoint with a 400, and a header with a NULLchannel_keyswould route the whole workflow to the legacy fallback (Workflow#legacy_checkpoint_fallback?). A checkpoint with nochannel_valuesgets a header withchannel_keys = []and no blobs. - Rejected alternative: flipping
incremental_checkpoints_enabledto true on migrated workflows. A still-running gateway for such a workflow could send checkpoints without blobs, and Rails would then write an empty header and skip the legacy row. Left to the follow-up. - Known gap: workflows with
incremental_checkpoints_enabled = false(on self-managed, every workflow created before 19.5) still write legacy rows when resumed after this migration ran, becauseCreateCheckpointServiceonly writes headers when that column is true, and their reads ignore headers becauseIncrementalBlobGate#reconstruct?requires the column. The migrated rows become readable once the column gate goes. The legacy read removal in #611971 must handle those workflows, either by stopping legacy writes for them first or by re-running this migration or waiting out the retention TTL. - Queue settings:
BATCH_SIZE = 1000,SUB_BATCH_SIZE = 50(each row can carry a multi-MB jsonb decoded and compressed in Ruby),DELAY_INTERVAL = 2.minutes. Milestone 19.5.gitlab_schema:gitlab_main_org. - This MR must not merge before
duo_workflow_write_incremental_onlyis default-enabled. It is: flipped todefault_enabled: trueon 2026-09-17 (19.5), #607029. - Adds a self-managed upgrade note to
doc/update/versions/gitlab_19_changes.md, as the issue asks.
References
- Issue: #611970 (closed)
- Follow-up (removes the legacy read path): #611971
- Epic (checkpoint headers/blobs): gitlab-org#22628 (closed)
- BBM docs: https://docs.gitlab.com/development/database/batched_background_migrations/
Screenshots or screen recordings
No UI change.
How to set up and validate locally
Backend only, no UI path. Run these in a Rails console (gdk rails console or bin/rails console).
- Find or create a
Ai::DuoWorkflows::Workflow. Setincremental_checkpoints_enabled: falsewithupdate_column. - Create two
Ai::DuoWorkflows::Checkpointrows on that workflow withcreate!, passingthread_ts,parent_ts,metadata: {},project:, andcheckpoint:such as{ 'v' => 1, 'channel_values' => { 'status' => 'Planning', 'ui_chat_log' => [{ 'message_id' => 'm1', 'content' => 'hi' }] } }. Vary the second checkpoint'schannel_valuesso it differs from the first. - Run the job:
t = Ai::DuoWorkflows::Checkpoint Gitlab::BackgroundMigration::BackfillDuoWorkflowsCheckpointHeadersAndBlobs.new( start_cursor: [t.minimum(:id), t.minimum(:created_at)], end_cursor: [t.maximum(:id), t.maximum(:created_at)], batch_table: :p_duo_workflows_checkpoints, batch_column: :id, sub_batch_size: 50, pause_ms: 0, connection: ApplicationRecord.connection ).perform - Check
workflow.checkpoint_headers.countandworkflow.checkpoint_blobs.count. - Run
workflow.reconstructed_channel_values(workflow.latest_checkpoint_header). Expect: it equals the second checkpoint'schannel_values. - Run the job again. Expect: header and blob counts are unchanged.
Queue migration check (up/down) and Database Lab evidence: migration output, sub-batch query, EXPLAIN ANALYZE
Queue migration up/down:
bin/rails db:migrate:down:main VERSION=20260918092606
bin/rails db:migrate:up:main VERSION=20260918092606
Gitlab::Database::BackgroundMigration::BatchedMigration.find_by(job_class_name: 'BackfillDuoWorkflowsCheckpointHeadersAndBlobs')Expect: a record with status active (or finished when the table is empty).
Migration up:
main: == [advisory_lock_connection] object_id: 164820, pg_backend_pid: 84543
main: == 20260918092606 QueueBackfillDuoWorkflowsCheckpointHeadersAndBlobs: migrating
main: == 20260918092606 QueueBackfillDuoWorkflowsCheckpointHeadersAndBlobs: migrated (0.0830s)
main: == [advisory_lock_connection] object_id: 164820, pg_backend_pid: 84543Migration down:
main: == [advisory_lock_connection] object_id: 164780, pg_backend_pid: 84108
main: == 20260918092606 QueueBackfillDuoWorkflowsCheckpointHeadersAndBlobs: reverting
main: == 20260918092606 QueueBackfillDuoWorkflowsCheckpointHeadersAndBlobs: reverted (0.0274s)
main: == [advisory_lock_connection] object_id: 164780, pg_backend_pid: 84108Sub-batch query (as on the branch: retention predicate and sub_batch_size 10):
WITH sub_batch AS MATERIALIZED (
SELECT id, created_at FROM p_duo_workflows_checkpoints
WHERE (id, created_at) >= (91000000, '2026-01-01 00:00:00+00')
AND (id, created_at) <= (91163105, '2026-09-15 07:17:59.370523+00')
ORDER BY id, created_at LIMIT 10
),
candidates AS MATERIALIZED (
SELECT c.id, c.created_at, c.workflow_id, c.thread_ts, w.created_at AS workflow_created_at
FROM sub_batch
INNER JOIN p_duo_workflows_checkpoints c ON c.id = sub_batch.id AND c.created_at = sub_batch.created_at
INNER JOIN duo_workflows_workflows w ON w.id = c.workflow_id
WHERE w.created_at >= '2026-08-26 00:00:00+00'
)
SELECT c.id, c.workflow_id, c.project_id, c.namespace_id, c.thread_ts, c.parent_ts,
c.checkpoint_ns, c.current_thread, c.checkpoint, c.metadata, c.created_at, c.updated_at,
candidates.workflow_created_at
FROM candidates
INNER JOIN p_duo_workflows_checkpoints c ON c.id = candidates.id AND c.created_at = candidates.created_at
WHERE NOT EXISTS (
SELECT 1 FROM p_duo_workflows_checkpoint_headers h
WHERE h.workflow_id = candidates.workflow_id
AND h.thread_ts = candidates.thread_ts
AND h.workflow_created_at = candidates.workflow_created_at
)
ORDER BY c.idOn Database Lab (production clone, cold cache) this took 55 ms execution (51 ms of it I/O read), 249 shared buffer hits plus 50 reads, and returned 0 rows, because every sampled GitLab.com row already has a header. The header lookup was pruned to one partition per row (57 of 58 header partitions "never executed").
EXPLAIN ANALYZE
execution plan (EXPLAIN ANALYZE):
Sort (cost=949.49..949.49 rows=1 width=270) (actual time=52.742..52.770 rows=0 loops=1)
Sort Key: c.id
Sort Method: quicksort Memory: 25kB
Buffers: shared hit=249 read=50 dirtied=2
WAL: records=2 fpi=2 bytes=15546
I/O Timings: read=51.385 write=0.000
CTE sub_batch
-> Limit (cost=15.25..15.88 rows=10 width=16) (actual time=1.102..1.138 rows=10 loops=1)
Buffers: shared hit=138 read=1
I/O Timings: read=0.615 write=0.000
-> Merge Append (cost=15.25..10918.20 rows=172816 width=16) (actual time=1.100..1.131 rows=10 loops=1)
Sort Key: p_duo_workflows_checkpoints.id, p_duo_workflows_checkpoints.created_at
Buffers: shared hit=138 read=1
I/O Timings: read=0.615 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260826_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260826 p_duo_workflows_checkpoints_1 (cost=0.42..2.65 rows=1 width=16) (actual time=0.014..0.014 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_1.id, p_duo_workflows_checkpoints_1.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_1.id, p_duo_workflows_checkpoints_1.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260827_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260827 p_duo_workflows_checkpoints_2 (cost=0.42..1.95 rows=1 width=16) (actual time=0.011..0.011 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_2.id, p_duo_workflows_checkpoints_2.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_2.id, p_duo_workflows_checkpoints_2.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260828_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260828 p_duo_workflows_checkpoints_3 (cost=0.42..2.64 rows=1 width=16) (actual time=0.010..0.010 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_3.id, p_duo_workflows_checkpoints_3.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_3.id, p_duo_workflows_checkpoints_3.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260829_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260829 p_duo_workflows_checkpoints_4 (cost=0.42..2.63 rows=1 width=16) (actual time=0.009..0.009 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_4.id, p_duo_workflows_checkpoints_4.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_4.id, p_duo_workflows_checkpoints_4.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260830_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260830 p_duo_workflows_checkpoints_5 (cost=0.42..2.62 rows=1 width=16) (actual time=0.011..0.011 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_5.id, p_duo_workflows_checkpoints_5.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_5.id, p_duo_workflows_checkpoints_5.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260831_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260831 p_duo_workflows_checkpoints_6 (cost=0.42..2.64 rows=1 width=16) (actual time=0.008..0.008 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_6.id, p_duo_workflows_checkpoints_6.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_6.id, p_duo_workflows_checkpoints_6.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260901_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260901 p_duo_workflows_checkpoints_7 (cost=0.42..2.64 rows=1 width=16) (actual time=0.009..0.009 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_7.id, p_duo_workflows_checkpoints_7.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_7.id, p_duo_workflows_checkpoints_7.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260902_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260902 p_duo_workflows_checkpoints_8 (cost=0.42..2.64 rows=1 width=16) (actual time=0.007..0.008 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_8.id, p_duo_workflows_checkpoints_8.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_8.id, p_duo_workflows_checkpoints_8.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260903_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260903 p_duo_workflows_checkpoints_9 (cost=0.42..2.64 rows=1 width=16) (actual time=0.009..0.009 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_9.id, p_duo_workflows_checkpoints_9.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_9.id, p_duo_workflows_checkpoints_9.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260904_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260904 p_duo_workflows_checkpoints_10 (cost=0.42..2.64 rows=1 width=16) (actual time=0.008..0.008 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_10.id, p_duo_workflows_checkpoints_10.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_10.id, p_duo_workflows_checkpoints_10.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260905_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260905 p_duo_workflows_checkpoints_11 (cost=0.42..2.65 rows=1 width=16) (actual time=0.008..0.008 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_11.id, p_duo_workflows_checkpoints_11.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_11.id, p_duo_workflows_checkpoints_11.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260906_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260906 p_duo_workflows_checkpoints_12 (cost=0.42..2.64 rows=1 width=16) (actual time=0.009..0.009 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_12.id, p_duo_workflows_checkpoints_12.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_12.id, p_duo_workflows_checkpoints_12.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260907_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260907 p_duo_workflows_checkpoints_13 (cost=0.42..2.65 rows=1 width=16) (actual time=0.007..0.007 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_13.id, p_duo_workflows_checkpoints_13.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_13.id, p_duo_workflows_checkpoints_13.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260908_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260908 p_duo_workflows_checkpoints_14 (cost=0.43..2.62 rows=1 width=16) (actual time=0.008..0.008 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_14.id, p_duo_workflows_checkpoints_14.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_14.id, p_duo_workflows_checkpoints_14.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260909_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260909 p_duo_workflows_checkpoints_15 (cost=0.42..2.62 rows=1 width=16) (actual time=0.007..0.007 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_15.id, p_duo_workflows_checkpoints_15.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_15.id, p_duo_workflows_checkpoints_15.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260910_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260910 p_duo_workflows_checkpoints_16 (cost=0.42..2.64 rows=1 width=16) (actual time=0.008..0.008 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_16.id, p_duo_workflows_checkpoints_16.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_16.id, p_duo_workflows_checkpoints_16.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260911_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260911 p_duo_workflows_checkpoints_17 (cost=0.42..2.64 rows=1 width=16) (actual time=0.009..0.009 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_17.id, p_duo_workflows_checkpoints_17.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_17.id, p_duo_workflows_checkpoints_17.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260912_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260912 p_duo_workflows_checkpoints_18 (cost=0.42..1.94 rows=1 width=16) (actual time=0.009..0.009 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_18.id, p_duo_workflows_checkpoints_18.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_18.id, p_duo_workflows_checkpoints_18.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260913_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260913 p_duo_workflows_checkpoints_19 (cost=0.42..1.94 rows=1 width=16) (actual time=0.007..0.007 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_19.id, p_duo_workflows_checkpoints_19.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_19.id, p_duo_workflows_checkpoints_19.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260914_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260914 p_duo_workflows_checkpoints_20 (cost=0.42..560.98 rows=15239 width=16) (actual time=0.651..0.661 rows=10 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_20.id, p_duo_workflows_checkpoints_20.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_20.id, p_duo_workflows_checkpoints_20.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=3 read=1
I/O Timings: read=0.615 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260915_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260915 p_duo_workflows_checkpoints_21 (cost=0.42..4251.14 rows=157489 width=16) (actual time=0.031..0.031 rows=1 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_21.id, p_duo_workflows_checkpoints_21.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_21.id, p_duo_workflows_checkpoints_21.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=4
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260916_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260916 p_duo_workflows_checkpoints_22 (cost=0.12..3.14 rows=1 width=16) (actual time=0.012..0.012 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_22.id, p_duo_workflows_checkpoints_22.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_22.id, p_duo_workflows_checkpoints_22.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260917_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260917 p_duo_workflows_checkpoints_23 (cost=0.12..3.14 rows=1 width=16) (actual time=0.010..0.010 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_23.id, p_duo_workflows_checkpoints_23.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_23.id, p_duo_workflows_checkpoints_23.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260918_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260918 p_duo_workflows_checkpoints_24 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_24.id, p_duo_workflows_checkpoints_24.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_24.id, p_duo_workflows_checkpoints_24.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260919_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260919 p_duo_workflows_checkpoints_25 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_25.id, p_duo_workflows_checkpoints_25.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_25.id, p_duo_workflows_checkpoints_25.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260920_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260920 p_duo_workflows_checkpoints_26 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_26.id, p_duo_workflows_checkpoints_26.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_26.id, p_duo_workflows_checkpoints_26.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260921_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260921 p_duo_workflows_checkpoints_27 (cost=0.12..3.14 rows=1 width=16) (actual time=0.009..0.009 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_27.id, p_duo_workflows_checkpoints_27.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_27.id, p_duo_workflows_checkpoints_27.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260922_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260922 p_duo_workflows_checkpoints_28 (cost=0.12..3.14 rows=1 width=16) (actual time=0.008..0.008 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_28.id, p_duo_workflows_checkpoints_28.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_28.id, p_duo_workflows_checkpoints_28.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260923_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260923 p_duo_workflows_checkpoints_29 (cost=0.12..3.14 rows=1 width=16) (actual time=0.005..0.005 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_29.id, p_duo_workflows_checkpoints_29.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_29.id, p_duo_workflows_checkpoints_29.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260924_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260924 p_duo_workflows_checkpoints_30 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_30.id, p_duo_workflows_checkpoints_30.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_30.id, p_duo_workflows_checkpoints_30.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260925_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260925 p_duo_workflows_checkpoints_31 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_31.id, p_duo_workflows_checkpoints_31.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_31.id, p_duo_workflows_checkpoints_31.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260926_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260926 p_duo_workflows_checkpoints_32 (cost=0.12..3.14 rows=1 width=16) (actual time=0.009..0.009 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_32.id, p_duo_workflows_checkpoints_32.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_32.id, p_duo_workflows_checkpoints_32.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260927_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260927 p_duo_workflows_checkpoints_33 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.007 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_33.id, p_duo_workflows_checkpoints_33.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_33.id, p_duo_workflows_checkpoints_33.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260928_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260928 p_duo_workflows_checkpoints_34 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_34.id, p_duo_workflows_checkpoints_34.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_34.id, p_duo_workflows_checkpoints_34.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260929_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260929 p_duo_workflows_checkpoints_35 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_35.id, p_duo_workflows_checkpoints_35.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_35.id, p_duo_workflows_checkpoints_35.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20260930_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260930 p_duo_workflows_checkpoints_36 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_36.id, p_duo_workflows_checkpoints_36.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_36.id, p_duo_workflows_checkpoints_36.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261001_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261001 p_duo_workflows_checkpoints_37 (cost=0.12..3.14 rows=1 width=16) (actual time=0.008..0.008 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_37.id, p_duo_workflows_checkpoints_37.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_37.id, p_duo_workflows_checkpoints_37.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261002_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261002 p_duo_workflows_checkpoints_38 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_38.id, p_duo_workflows_checkpoints_38.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_38.id, p_duo_workflows_checkpoints_38.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261003_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261003 p_duo_workflows_checkpoints_39 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_39.id, p_duo_workflows_checkpoints_39.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_39.id, p_duo_workflows_checkpoints_39.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261004_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261004 p_duo_workflows_checkpoints_40 (cost=0.12..3.14 rows=1 width=16) (actual time=0.012..0.012 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_40.id, p_duo_workflows_checkpoints_40.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_40.id, p_duo_workflows_checkpoints_40.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261005_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261005 p_duo_workflows_checkpoints_41 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_41.id, p_duo_workflows_checkpoints_41.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_41.id, p_duo_workflows_checkpoints_41.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261006_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261006 p_duo_workflows_checkpoints_42 (cost=0.12..3.14 rows=1 width=16) (actual time=0.007..0.007 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_42.id, p_duo_workflows_checkpoints_42.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_42.id, p_duo_workflows_checkpoints_42.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261007_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261007 p_duo_workflows_checkpoints_43 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_43.id, p_duo_workflows_checkpoints_43.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_43.id, p_duo_workflows_checkpoints_43.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261008_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261008 p_duo_workflows_checkpoints_44 (cost=0.12..3.14 rows=1 width=16) (actual time=0.005..0.005 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_44.id, p_duo_workflows_checkpoints_44.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_44.id, p_duo_workflows_checkpoints_44.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261009_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261009 p_duo_workflows_checkpoints_45 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_45.id, p_duo_workflows_checkpoints_45.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_45.id, p_duo_workflows_checkpoints_45.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261010_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261010 p_duo_workflows_checkpoints_46 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.007 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_46.id, p_duo_workflows_checkpoints_46.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_46.id, p_duo_workflows_checkpoints_46.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261011_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261011 p_duo_workflows_checkpoints_47 (cost=0.12..3.14 rows=1 width=16) (actual time=0.007..0.007 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_47.id, p_duo_workflows_checkpoints_47.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_47.id, p_duo_workflows_checkpoints_47.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261012_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261012 p_duo_workflows_checkpoints_48 (cost=0.12..3.14 rows=1 width=16) (actual time=0.005..0.005 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_48.id, p_duo_workflows_checkpoints_48.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_48.id, p_duo_workflows_checkpoints_48.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261013_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261013 p_duo_workflows_checkpoints_49 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_49.id, p_duo_workflows_checkpoints_49.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_49.id, p_duo_workflows_checkpoints_49.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261014_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261014 p_duo_workflows_checkpoints_50 (cost=0.12..3.14 rows=1 width=16) (actual time=0.005..0.005 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_50.id, p_duo_workflows_checkpoints_50.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_50.id, p_duo_workflows_checkpoints_50.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261015_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261015 p_duo_workflows_checkpoints_51 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_51.id, p_duo_workflows_checkpoints_51.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_51.id, p_duo_workflows_checkpoints_51.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261016_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261016 p_duo_workflows_checkpoints_52 (cost=0.12..3.14 rows=1 width=16) (actual time=0.008..0.008 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_52.id, p_duo_workflows_checkpoints_52.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_52.id, p_duo_workflows_checkpoints_52.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261017_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261017 p_duo_workflows_checkpoints_53 (cost=0.12..3.14 rows=1 width=16) (actual time=0.005..0.005 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_53.id, p_duo_workflows_checkpoints_53.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_53.id, p_duo_workflows_checkpoints_53.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261018_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261018 p_duo_workflows_checkpoints_54 (cost=0.12..3.14 rows=1 width=16) (actual time=0.005..0.005 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_54.id, p_duo_workflows_checkpoints_54.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_54.id, p_duo_workflows_checkpoints_54.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261019_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261019 p_duo_workflows_checkpoints_55 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_55.id, p_duo_workflows_checkpoints_55.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_55.id, p_duo_workflows_checkpoints_55.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261020_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261020 p_duo_workflows_checkpoints_56 (cost=0.12..3.14 rows=1 width=16) (actual time=0.006..0.006 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_56.id, p_duo_workflows_checkpoints_56.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_56.id, p_duo_workflows_checkpoints_56.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261021_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261021 p_duo_workflows_checkpoints_57 (cost=0.12..3.14 rows=1 width=16) (actual time=0.007..0.007 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_57.id, p_duo_workflows_checkpoints_57.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_57.id, p_duo_workflows_checkpoints_57.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
-> Index Only Scan using p_duo_workflows_checkpoints_20261022_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261022 p_duo_workflows_checkpoints_58 (cost=0.15..17.31 rows=33 width=16) (actual time=0.005..0.006 rows=0 loops=1)
Index Cond: ((ROW(p_duo_workflows_checkpoints_58.id, p_duo_workflows_checkpoints_58.created_at) >= ROW(91000000, '2026-01-01 00:00:00+00'::timestamp with time zone)) AND (ROW(p_duo_workflows_checkpoints_58.id, p_duo_workflows_checkpoints_58.created_at) <= ROW(91163105, '2026-09-15 07:17:59.370523+00'::timestamp with time zone)))
Heap Fetches: 0
Buffers: shared hit=2
I/O Timings: read=0.000 write=0.000
CTE candidates
-> Nested Loop (cost=0.86..746.33 rows=1 width=69) (actual time=8.083..29.769 rows=10 loops=1)
Buffers: shared hit=191 read=28 dirtied=2
WAL: records=2 fpi=2 bytes=15546
I/O Timings: read=28.862 write=0.000
-> Nested Loop (cost=0.42..745.82 rows=1 width=61) (actual time=1.864..7.234 rows=10 loops=1)
Buffers: shared hit=169 read=10
I/O Timings: read=6.533 write=0.000
-> CTE Scan on sub_batch (cost=0.00..0.20 rows=10 width=16) (actual time=1.105..1.137 rows=10 loops=1)
Buffers: shared hit=138 read=1
I/O Timings: read=0.615 write=0.000
-> Append (cost=0.42..73.98 rows=58 width=61) (actual time=0.603..0.603 rows=1 loops=10)
Buffers: shared hit=31 read=9
I/O Timings: read=5.917 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260826_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260826 c_60 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_60.id = sub_batch.id) AND (c_60.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260827_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260827 c_61 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_61.id = sub_batch.id) AND (c_61.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260828_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260828 c_62 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_62.id = sub_batch.id) AND (c_62.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260829_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260829 c_63 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_63.id = sub_batch.id) AND (c_63.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260830_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260830 c_64 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_64.id = sub_batch.id) AND (c_64.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260831_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260831 c_65 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_65.id = sub_batch.id) AND (c_65.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260901_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260901 c_66 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_66.id = sub_batch.id) AND (c_66.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260902_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260902 c_67 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_67.id = sub_batch.id) AND (c_67.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260903_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260903 c_68 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_68.id = sub_batch.id) AND (c_68.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260904_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260904 c_69 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_69.id = sub_batch.id) AND (c_69.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260905_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260905 c_70 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_70.id = sub_batch.id) AND (c_70.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260906_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260906 c_71 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_71.id = sub_batch.id) AND (c_71.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260907_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260907 c_72 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_72.id = sub_batch.id) AND (c_72.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260908_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260908 c_73 (cost=0.43..3.45 rows=1 width=61) (never executed)
Index Cond: ((c_73.id = sub_batch.id) AND (c_73.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260909_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260909 c_74 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_74.id = sub_batch.id) AND (c_74.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260910_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260910 c_75 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_75.id = sub_batch.id) AND (c_75.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260911_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260911 c_76 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_76.id = sub_batch.id) AND (c_76.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260912_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260912 c_77 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_77.id = sub_batch.id) AND (c_77.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260913_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260913 c_78 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_78.id = sub_batch.id) AND (c_78.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260914_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260914 c_79 (cost=0.42..3.44 rows=1 width=61) (actual time=0.600..0.600 rows=1 loops=10)
Index Cond: ((c_79.id = sub_batch.id) AND (c_79.created_at = sub_batch.created_at))
Buffers: shared hit=31 read=9
I/O Timings: read=5.917 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260915_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260915 c_80 (cost=0.42..3.44 rows=1 width=61) (never executed)
Index Cond: ((c_80.id = sub_batch.id) AND (c_80.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260916 c_81 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_81.id = sub_batch.id) AND (c_81.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260917 c_82 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_82.id = sub_batch.id) AND (c_82.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260918 c_83 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_83.id = sub_batch.id) AND (c_83.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260919 c_84 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_84.id = sub_batch.id) AND (c_84.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260920 c_85 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_85.id = sub_batch.id) AND (c_85.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260921 c_86 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_86.id = sub_batch.id) AND (c_86.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260922 c_87 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_87.id = sub_batch.id) AND (c_87.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260923 c_88 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_88.id = sub_batch.id) AND (c_88.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260924 c_89 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_89.id = sub_batch.id) AND (c_89.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260925 c_90 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_90.id = sub_batch.id) AND (c_90.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260926 c_91 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_91.id = sub_batch.id) AND (c_91.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260927 c_92 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_92.id = sub_batch.id) AND (c_92.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260928 c_93 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_93.id = sub_batch.id) AND (c_93.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260929 c_94 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_94.id = sub_batch.id) AND (c_94.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260930 c_95 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_95.id = sub_batch.id) AND (c_95.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261001 c_96 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_96.id = sub_batch.id) AND (c_96.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261002 c_97 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_97.id = sub_batch.id) AND (c_97.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261003 c_98 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_98.id = sub_batch.id) AND (c_98.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261004 c_99 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_99.id = sub_batch.id) AND (c_99.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261005 c_100 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_100.id = sub_batch.id) AND (c_100.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261006 c_101 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_101.id = sub_batch.id) AND (c_101.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261007 c_102 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_102.id = sub_batch.id) AND (c_102.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261008 c_103 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_103.id = sub_batch.id) AND (c_103.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261009 c_104 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_104.id = sub_batch.id) AND (c_104.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261010 c_105 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_105.id = sub_batch.id) AND (c_105.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261011 c_106 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_106.id = sub_batch.id) AND (c_106.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261012 c_107 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_107.id = sub_batch.id) AND (c_107.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261013 c_108 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_108.id = sub_batch.id) AND (c_108.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261014 c_109 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_109.id = sub_batch.id) AND (c_109.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261015 c_110 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_110.id = sub_batch.id) AND (c_110.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261016 c_111 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_111.id = sub_batch.id) AND (c_111.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261017 c_112 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_112.id = sub_batch.id) AND (c_112.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261018 c_113 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_113.id = sub_batch.id) AND (c_113.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261019 c_114 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_114.id = sub_batch.id) AND (c_114.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261020 c_115 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_115.id = sub_batch.id) AND (c_115.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261021 c_116 (cost=0.00..0.00 rows=1 width=56) (never executed)
Filter: ((c_116.id = sub_batch.id) AND (c_116.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20261022_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261022 c_117 (cost=0.15..1.37 rows=1 width=56) (never executed)
Index Cond: ((c_117.id = sub_batch.id) AND (c_117.created_at = sub_batch.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using duo_workflows_workflows_pkey on public.duo_workflows_workflows w (cost=0.43..0.50 rows=1 width=16) (actual time=2.251..2.251 rows=1 loops=10)
Index Cond: (w.id = c_59.workflow_id)
Filter: (w.created_at >= '2026-08-26 00:00:00+00'::timestamp with time zone)
Buffers: shared hit=22 read=18 dirtied=2
WAL: records=2 fpi=2 bytes=15546
I/O Timings: read=22.329 write=0.000
-> Nested Loop Anti Join (cost=0.85..187.27 rows=1 width=270) (actual time=52.730..52.738 rows=0 loops=1)
Buffers: shared hit=249 read=50 dirtied=2
WAL: records=2 fpi=2 bytes=15546
I/O Timings: read=51.385 write=0.000
-> Nested Loop (cost=0.42..76.38 rows=1 width=310) (actual time=8.121..29.966 rows=10 loops=1)
Buffers: shared hit=231 read=28 dirtied=2
WAL: records=2 fpi=2 bytes=15546
I/O Timings: read=28.862 write=0.000
-> CTE Scan on candidates (cost=0.00..0.02 rows=1 width=64) (actual time=8.086..29.786 rows=10 loops=1)
Buffers: shared hit=191 read=28 dirtied=2
WAL: records=2 fpi=2 bytes=15546
I/O Timings: read=28.862 write=0.000
-> Append (cost=0.42..75.78 rows=58 width=262) (actual time=0.009..0.009 rows=1 loops=10)
Buffers: shared hit=40
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260826_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260826 c_1 (cost=0.42..3.44 rows=1 width=267) (never executed)
Index Cond: ((c_1.id = candidates.id) AND (c_1.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260827_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260827 c_2 (cost=0.42..3.44 rows=1 width=265) (never executed)
Index Cond: ((c_2.id = candidates.id) AND (c_2.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260828_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260828 c_3 (cost=0.42..3.44 rows=1 width=263) (never executed)
Index Cond: ((c_3.id = candidates.id) AND (c_3.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260829_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260829 c_4 (cost=0.42..3.44 rows=1 width=276) (never executed)
Index Cond: ((c_4.id = candidates.id) AND (c_4.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260830_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260830 c_5 (cost=0.42..3.44 rows=1 width=259) (never executed)
Index Cond: ((c_5.id = candidates.id) AND (c_5.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260831_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260831 c_6 (cost=0.42..3.44 rows=1 width=261) (never executed)
Index Cond: ((c_6.id = candidates.id) AND (c_6.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260901_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260901 c_7 (cost=0.42..3.44 rows=1 width=269) (never executed)
Index Cond: ((c_7.id = candidates.id) AND (c_7.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260902_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260902 c_8 (cost=0.42..3.44 rows=1 width=267) (never executed)
Index Cond: ((c_8.id = candidates.id) AND (c_8.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260903_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260903 c_9 (cost=0.42..3.44 rows=1 width=267) (never executed)
Index Cond: ((c_9.id = candidates.id) AND (c_9.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260904_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260904 c_10 (cost=0.42..3.44 rows=1 width=265) (never executed)
Index Cond: ((c_10.id = candidates.id) AND (c_10.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260905_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260905 c_11 (cost=0.42..3.44 rows=1 width=252) (never executed)
Index Cond: ((c_11.id = candidates.id) AND (c_11.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260906_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260906 c_12 (cost=0.42..3.44 rows=1 width=251) (never executed)
Index Cond: ((c_12.id = candidates.id) AND (c_12.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260907_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260907 c_13 (cost=0.42..3.44 rows=1 width=262) (never executed)
Index Cond: ((c_13.id = candidates.id) AND (c_13.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260908_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260908 c_14 (cost=0.43..3.45 rows=1 width=257) (never executed)
Index Cond: ((c_14.id = candidates.id) AND (c_14.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260909_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260909 c_15 (cost=0.42..3.44 rows=1 width=264) (never executed)
Index Cond: ((c_15.id = candidates.id) AND (c_15.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260910_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260910 c_16 (cost=0.42..3.44 rows=1 width=269) (never executed)
Index Cond: ((c_16.id = candidates.id) AND (c_16.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260911_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260911 c_17 (cost=0.42..3.44 rows=1 width=262) (never executed)
Index Cond: ((c_17.id = candidates.id) AND (c_17.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260912_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260912 c_18 (cost=0.42..3.44 rows=1 width=253) (never executed)
Index Cond: ((c_18.id = candidates.id) AND (c_18.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260913_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260913 c_19 (cost=0.42..3.44 rows=1 width=248) (never executed)
Index Cond: ((c_19.id = candidates.id) AND (c_19.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260914_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260914 c_20 (cost=0.42..3.44 rows=1 width=260) (actual time=0.006..0.006 rows=1 loops=10)
Index Cond: ((c_20.id = candidates.id) AND (c_20.created_at = candidates.created_at))
Buffers: shared hit=40
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20260915_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260915 c_21 (cost=0.42..3.44 rows=1 width=255) (never executed)
Index Cond: ((c_21.id = candidates.id) AND (c_21.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260916 c_22 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_22.id = candidates.id) AND (c_22.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260917 c_23 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_23.id = candidates.id) AND (c_23.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260918 c_24 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_24.id = candidates.id) AND (c_24.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260919 c_25 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_25.id = candidates.id) AND (c_25.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260920 c_26 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_26.id = candidates.id) AND (c_26.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260921 c_27 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_27.id = candidates.id) AND (c_27.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260922 c_28 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_28.id = candidates.id) AND (c_28.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260923 c_29 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_29.id = candidates.id) AND (c_29.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260924 c_30 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_30.id = candidates.id) AND (c_30.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260925 c_31 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_31.id = candidates.id) AND (c_31.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260926 c_32 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_32.id = candidates.id) AND (c_32.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260927 c_33 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_33.id = candidates.id) AND (c_33.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260928 c_34 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_34.id = candidates.id) AND (c_34.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260929 c_35 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_35.id = candidates.id) AND (c_35.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20260930 c_36 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_36.id = candidates.id) AND (c_36.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261001 c_37 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_37.id = candidates.id) AND (c_37.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261002 c_38 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_38.id = candidates.id) AND (c_38.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261003 c_39 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_39.id = candidates.id) AND (c_39.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261004 c_40 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_40.id = candidates.id) AND (c_40.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261005 c_41 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_41.id = candidates.id) AND (c_41.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261006 c_42 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_42.id = candidates.id) AND (c_42.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261007 c_43 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_43.id = candidates.id) AND (c_43.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261008 c_44 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_44.id = candidates.id) AND (c_44.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261009 c_45 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_45.id = candidates.id) AND (c_45.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261010 c_46 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_46.id = candidates.id) AND (c_46.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261011 c_47 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_47.id = candidates.id) AND (c_47.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261012 c_48 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_48.id = candidates.id) AND (c_48.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261013 c_49 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_49.id = candidates.id) AND (c_49.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261014 c_50 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_50.id = candidates.id) AND (c_50.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261015 c_51 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_51.id = candidates.id) AND (c_51.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261016 c_52 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_52.id = candidates.id) AND (c_52.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261017 c_53 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_53.id = candidates.id) AND (c_53.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261018 c_54 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_54.id = candidates.id) AND (c_54.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261019 c_55 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_55.id = candidates.id) AND (c_55.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261020 c_56 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_56.id = candidates.id) AND (c_56.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261021 c_57 (cost=0.00..0.00 rows=1 width=212) (never executed)
Filter: ((c_57.id = candidates.id) AND (c_57.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoints_20261022_pkey on gitlab_partitions_dynamic.p_duo_workflows_checkpoints_20261022 c_58 (cost=0.15..3.17 rows=1 width=212) (never executed)
Index Cond: ((c_58.id = candidates.id) AND (c_58.created_at = candidates.created_at))
I/O Timings: read=0.000 write=0.000
-> Append (cost=0.42..110.31 rows=58 width=53) (actual time=2.271..2.271 rows=1 loops=10)
Buffers: shared hit=18 read=22
I/O Timings: read=22.523 write=0.000
-> Index Scan using index_fed41beb64 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260826 h_1 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_1.workflow_id = candidates.workflow_id) AND (h_1.thread_ts = candidates.thread_ts))
Filter: (h_1.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using index_5837c94165 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260827 h_2 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_2.workflow_id = candidates.workflow_id) AND (h_2.thread_ts = candidates.thread_ts))
Filter: (h_2.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using index_39ea11ef73 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260828 h_3 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_3.workflow_id = candidates.workflow_id) AND (h_3.thread_ts = candidates.thread_ts))
Filter: (h_3.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using index_274dcbf43c on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260829 h_4 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_4.workflow_id = candidates.workflow_id) AND (h_4.thread_ts = candidates.thread_ts))
Filter: (h_4.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using index_013d47016b on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260830 h_5 (cost=0.42..3.44 rows=1 width=53) (never executed)
Index Cond: ((h_5.workflow_id = candidates.workflow_id) AND (h_5.thread_ts = candidates.thread_ts))
Filter: (h_5.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using index_9fc2a66293 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260831 h_6 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_6.workflow_id = candidates.workflow_id) AND (h_6.thread_ts = candidates.thread_ts))
Filter: (h_6.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using index_b8ef6e7d36 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260901 h_7 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_7.workflow_id = candidates.workflow_id) AND (h_7.thread_ts = candidates.thread_ts))
Filter: (h_7.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using index_31be8eb4ef on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260902 h_8 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_8.workflow_id = candidates.workflow_id) AND (h_8.thread_ts = candidates.thread_ts))
Filter: (h_8.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using index_b2bbf4a596 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260903 h_9 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_9.workflow_id = candidates.workflow_id) AND (h_9.thread_ts = candidates.thread_ts))
Filter: (h_9.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using index_c22009fcfe on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260904 h_10 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_10.workflow_id = candidates.workflow_id) AND (h_10.thread_ts = candidates.thread_ts))
Filter: (h_10.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using index_6034796d4c on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260905 h_11 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_11.workflow_id = candidates.workflow_id) AND (h_11.thread_ts = candidates.thread_ts))
Filter: (h_11.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using index_9955e59e78 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260906 h_12 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_12.workflow_id = candidates.workflow_id) AND (h_12.thread_ts = candidates.thread_ts))
Filter: (h_12.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using index_b07ceb7a2f on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260907 h_13 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_13.workflow_id = candidates.workflow_id) AND (h_13.thread_ts = candidates.thread_ts))
Filter: (h_13.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using index_4cdfc82c03 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260908 h_14 (cost=0.43..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_14.workflow_id = candidates.workflow_id) AND (h_14.thread_ts = candidates.thread_ts))
Filter: (h_14.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using index_2fcca9c0f9 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260909 h_15 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_15.workflow_id = candidates.workflow_id) AND (h_15.thread_ts = candidates.thread_ts))
Filter: (h_15.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using index_d441a1e16b on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260910 h_16 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_16.workflow_id = candidates.workflow_id) AND (h_16.thread_ts = candidates.thread_ts))
Filter: (h_16.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using index_994ecd13ea on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260911 h_17 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_17.workflow_id = candidates.workflow_id) AND (h_17.thread_ts = candidates.thread_ts))
Filter: (h_17.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using index_341ebc8440 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260912 h_18 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_18.workflow_id = candidates.workflow_id) AND (h_18.thread_ts = candidates.thread_ts))
Filter: (h_18.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using index_8cf639af5e on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260913 h_19 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_19.workflow_id = candidates.workflow_id) AND (h_19.thread_ts = candidates.thread_ts))
Filter: (h_19.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoint_headers_workflow_id_thread_ts_id_idx on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260914 h_20 (cost=0.42..3.45 rows=1 width=53) (actual time=2.269..2.269 rows=1 loops=10)
Index Cond: ((h_20.workflow_id = candidates.workflow_id) AND (h_20.thread_ts = candidates.thread_ts))
Filter: (h_20.workflow_created_at = candidates.workflow_created_at)
Buffers: shared hit=18 read=22
I/O Timings: read=22.523 write=0.000
-> Index Scan using p_duo_workflows_checkpoint_header_workflow_id_thread_ts_id_idx1 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260915 h_21 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_21.workflow_id = candidates.workflow_id) AND (h_21.thread_ts = candidates.thread_ts))
Filter: (h_21.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoint_header_workflow_id_thread_ts_id_idx2 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260916 h_22 (cost=0.43..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_22.workflow_id = candidates.workflow_id) AND (h_22.thread_ts = candidates.thread_ts))
Filter: (h_22.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoint_header_workflow_id_thread_ts_id_idx3 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260917 h_23 (cost=0.43..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_23.workflow_id = candidates.workflow_id) AND (h_23.thread_ts = candidates.thread_ts))
Filter: (h_23.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoint_header_workflow_id_thread_ts_id_idx4 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260918 h_24 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_24.workflow_id = candidates.workflow_id) AND (h_24.thread_ts = candidates.thread_ts))
Filter: (h_24.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoint_header_workflow_id_thread_ts_id_idx5 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260919 h_25 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_25.workflow_id = candidates.workflow_id) AND (h_25.thread_ts = candidates.thread_ts))
Filter: (h_25.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoint_header_workflow_id_thread_ts_id_idx6 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260920 h_26 (cost=0.42..3.44 rows=1 width=53) (never executed)
Index Cond: ((h_26.workflow_id = candidates.workflow_id) AND (h_26.thread_ts = candidates.thread_ts))
Filter: (h_26.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoint_header_workflow_id_thread_ts_id_idx7 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260921 h_27 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_27.workflow_id = candidates.workflow_id) AND (h_27.thread_ts = candidates.thread_ts))
Filter: (h_27.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoint_header_workflow_id_thread_ts_id_idx8 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260922 h_28 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_28.workflow_id = candidates.workflow_id) AND (h_28.thread_ts = candidates.thread_ts))
Filter: (h_28.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoint_header_workflow_id_thread_ts_id_idx9 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260923 h_29 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_29.workflow_id = candidates.workflow_id) AND (h_29.thread_ts = candidates.thread_ts))
Filter: (h_29.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoint_heade_workflow_id_thread_ts_id_idx10 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260924 h_30 (cost=0.42..3.45 rows=1 width=53) (never executed)
Index Cond: ((h_30.workflow_id = candidates.workflow_id) AND (h_30.thread_ts = candidates.thread_ts))
Filter: (h_30.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoint_heade_workflow_id_thread_ts_id_idx11 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260925 h_31 (cost=0.41..3.44 rows=1 width=53) (never executed)
Index Cond: ((h_31.workflow_id = candidates.workflow_id) AND (h_31.thread_ts = candidates.thread_ts))
Filter: (h_31.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260926 h_32 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_32.workflow_id = candidates.workflow_id) AND (h_32.thread_ts = candidates.thread_ts) AND (h_32.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260927 h_33 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_33.workflow_id = candidates.workflow_id) AND (h_33.thread_ts = candidates.thread_ts) AND (h_33.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260928 h_34 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_34.workflow_id = candidates.workflow_id) AND (h_34.thread_ts = candidates.thread_ts) AND (h_34.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260929 h_35 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_35.workflow_id = candidates.workflow_id) AND (h_35.thread_ts = candidates.thread_ts) AND (h_35.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20260930 h_36 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_36.workflow_id = candidates.workflow_id) AND (h_36.thread_ts = candidates.thread_ts) AND (h_36.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261001 h_37 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_37.workflow_id = candidates.workflow_id) AND (h_37.thread_ts = candidates.thread_ts) AND (h_37.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261002 h_38 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_38.workflow_id = candidates.workflow_id) AND (h_38.thread_ts = candidates.thread_ts) AND (h_38.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261003 h_39 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_39.workflow_id = candidates.workflow_id) AND (h_39.thread_ts = candidates.thread_ts) AND (h_39.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261004 h_40 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_40.workflow_id = candidates.workflow_id) AND (h_40.thread_ts = candidates.thread_ts) AND (h_40.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261005 h_41 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_41.workflow_id = candidates.workflow_id) AND (h_41.thread_ts = candidates.thread_ts) AND (h_41.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261006 h_42 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_42.workflow_id = candidates.workflow_id) AND (h_42.thread_ts = candidates.thread_ts) AND (h_42.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261007 h_43 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_43.workflow_id = candidates.workflow_id) AND (h_43.thread_ts = candidates.thread_ts) AND (h_43.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261008 h_44 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_44.workflow_id = candidates.workflow_id) AND (h_44.thread_ts = candidates.thread_ts) AND (h_44.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261009 h_45 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_45.workflow_id = candidates.workflow_id) AND (h_45.thread_ts = candidates.thread_ts) AND (h_45.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261010 h_46 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_46.workflow_id = candidates.workflow_id) AND (h_46.thread_ts = candidates.thread_ts) AND (h_46.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261011 h_47 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_47.workflow_id = candidates.workflow_id) AND (h_47.thread_ts = candidates.thread_ts) AND (h_47.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261012 h_48 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_48.workflow_id = candidates.workflow_id) AND (h_48.thread_ts = candidates.thread_ts) AND (h_48.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261013 h_49 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_49.workflow_id = candidates.workflow_id) AND (h_49.thread_ts = candidates.thread_ts) AND (h_49.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261014 h_50 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_50.workflow_id = candidates.workflow_id) AND (h_50.thread_ts = candidates.thread_ts) AND (h_50.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261015 h_51 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_51.workflow_id = candidates.workflow_id) AND (h_51.thread_ts = candidates.thread_ts) AND (h_51.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261016 h_52 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_52.workflow_id = candidates.workflow_id) AND (h_52.thread_ts = candidates.thread_ts) AND (h_52.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261017 h_53 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_53.workflow_id = candidates.workflow_id) AND (h_53.thread_ts = candidates.thread_ts) AND (h_53.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261018 h_54 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_54.workflow_id = candidates.workflow_id) AND (h_54.thread_ts = candidates.thread_ts) AND (h_54.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261019 h_55 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_55.workflow_id = candidates.workflow_id) AND (h_55.thread_ts = candidates.thread_ts) AND (h_55.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261020 h_56 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_56.workflow_id = candidates.workflow_id) AND (h_56.thread_ts = candidates.thread_ts) AND (h_56.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Seq Scan on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261021 h_57 (cost=0.00..0.00 rows=1 width=48) (never executed)
Filter: ((h_57.workflow_id = candidates.workflow_id) AND (h_57.thread_ts = candidates.thread_ts) AND (h_57.workflow_created_at = candidates.workflow_created_at))
I/O Timings: read=0.000 write=0.000
-> Index Scan using p_duo_workflows_checkpoint_heade_workflow_id_thread_ts_id_idx38 on gitlab_partitions_dynamic.p_duo_workflows_checkpoint_headers_20261022 h_58 (cost=0.15..3.17 rows=1 width=48) (never executed)
Index Cond: ((h_58.workflow_id = candidates.workflow_id) AND (h_58.thread_ts = candidates.thread_ts))
Filter: (h_58.workflow_created_at = candidates.workflow_created_at)
I/O Timings: read=0.000 write=0.000
Settings: work_mem = '230MB', jit = 'off', random_page_cost = '1.5', seq_page_cost = '4', effective_cache_size = '472585MB'
Query ID: -4094959447696475273
stats:
Time: 97.184 ms
- planning: 42.196 ms
- execution: 54.988 ms
- I/O read: 51.385 ms
- I/O write: 0.000 ms
Shared buffers:
- hits: 249 (~1.90 MiB) from the buffer pool
- reads: 50 (~400.00 KiB) from the OS file cache, including disk I/O
- dirtied: 2 (~16.00 KiB)
- writes: 0The inserts are plain INSERT ... VALUES of at most 10 header rows and their blobs per sub-batch, with ON CONFLICT DO NOTHING on idx_duo_wf_checkpoint_blobs_dedup for blobs. No plan is attached for them.
Legacy checkpoint size on GitLab.com (Database Lab, block sample of the 2026-09-14 partition): stored pg_column_size p50 62 KB, p99 1.04 MB, max 2.4 MB; raw JSON p50 180 KB, p99 2.4 MB, max 6 MB. That is why the sub-batch is 10 rows.
The db:gitlabcom-database-testing pipeline is triggered on this MR for a duration estimate. The legacy table is about 1 TB on GitLab.com.
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.