delayed 1.2.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +19 -6
- data/Rakefile +5 -1
- data/app/models/delayed/job.rb +42 -29
- data/db/migrate/1_create_delayed_jobs.rb +0 -2
- data/db/migrate/3_add_index_to_delayed_jobs_name.rb +14 -6
- data/db/migrate/4_index_live_jobs.rb +33 -0
- data/db/migrate/5_index_failed_jobs.rb +24 -0
- data/db/migrate/6_set_postgres_fillfactor.rb +31 -0
- data/db/migrate/7_remove_legacy_index.rb +12 -0
- data/lib/delayed/backend/job_preparer.rb +19 -0
- data/lib/delayed/exceptions.rb +4 -1
- data/lib/delayed/helpers/migration.rb +116 -0
- data/lib/delayed/monitor.rb +21 -11
- data/lib/delayed/version.rb +1 -1
- data/lib/delayed/worker.rb +1 -1
- data/lib/delayed.rb +1 -0
- data/spec/delayed/__snapshots__/job_spec.rb.snap +271 -0
- data/spec/delayed/__snapshots__/monitor_spec.rb.snap +969 -0
- data/spec/delayed/job_spec.rb +189 -13
- data/spec/delayed/monitor_spec.rb +61 -18
- data/spec/helper.rb +129 -11
- data/spec/sample_jobs.rb +10 -0
- data/spec/worker_spec.rb +18 -0
- metadata +15 -3
|
@@ -0,0 +1,969 @@
|
|
|
1
|
+
snapshots["runs the expected postgresql query for count 1"] = <<-SNAP
|
|
2
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
3
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
4
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
5
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, \"delayed_jobs\".\"queue\" AS delayed_jobs_queue
|
|
6
|
+
FROM \"delayed_jobs\"
|
|
7
|
+
WHERE \"delayed_jobs\".\"failed_at\" IS NOT NULL
|
|
8
|
+
GROUP BY CASE WHEN priority >= 0
|
|
9
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
10
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
11
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
12
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
13
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
14
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
15
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, \"delayed_jobs\".\"queue\" AS delayed_jobs_queue
|
|
16
|
+
FROM \"delayed_jobs\"
|
|
17
|
+
WHERE \"delayed_jobs\".\"failed_at\" IS NULL
|
|
18
|
+
GROUP BY CASE WHEN priority >= 0
|
|
19
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
20
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
21
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
22
|
+
SNAP
|
|
23
|
+
|
|
24
|
+
snapshots["produces the expected postgresql query plan for count 1"] = <<-SNAP
|
|
25
|
+
GroupAggregate (cost=...)
|
|
26
|
+
Output: count(*), (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
27
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
28
|
+
-> Sort (cost=...)
|
|
29
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
30
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
31
|
+
-> Index Only Scan using idx_delayed_jobs_failed on public.delayed_jobs (cost=...)
|
|
32
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue
|
|
33
|
+
GroupAggregate (cost=...)
|
|
34
|
+
Output: count(*), (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
35
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
36
|
+
-> Sort (cost=...)
|
|
37
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
38
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
39
|
+
-> Index Only Scan using idx_delayed_jobs_live on public.delayed_jobs (cost=...)
|
|
40
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue
|
|
41
|
+
SNAP
|
|
42
|
+
|
|
43
|
+
snapshots["[legacy index] produces the expected postgresql query plan for count 1"] = <<-SNAP
|
|
44
|
+
GroupAggregate (cost=...)
|
|
45
|
+
Output: count(*), (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
46
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
47
|
+
-> Sort (cost=...)
|
|
48
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
49
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
50
|
+
-> Seq Scan on public.delayed_jobs (cost=...)
|
|
51
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue
|
|
52
|
+
Filter: (delayed_jobs.failed_at IS NOT NULL)
|
|
53
|
+
GroupAggregate (cost=...)
|
|
54
|
+
Output: count(*), (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
55
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
56
|
+
-> Sort (cost=...)
|
|
57
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
58
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
59
|
+
-> Seq Scan on public.delayed_jobs (cost=...)
|
|
60
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue
|
|
61
|
+
Filter: (delayed_jobs.failed_at IS NULL)
|
|
62
|
+
SNAP
|
|
63
|
+
|
|
64
|
+
snapshots["runs the expected postgresql query for future_count 1"] = <<-SNAP
|
|
65
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
66
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
67
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
68
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, \"delayed_jobs\".\"queue\" AS delayed_jobs_queue
|
|
69
|
+
FROM \"delayed_jobs\"
|
|
70
|
+
WHERE \"delayed_jobs\".\"failed_at\" IS NULL
|
|
71
|
+
AND \"delayed_jobs\".\"run_at\" > '2025-11-10 17:20:13'
|
|
72
|
+
GROUP BY CASE WHEN priority >= 0
|
|
73
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
74
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
75
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
76
|
+
SNAP
|
|
77
|
+
|
|
78
|
+
snapshots["produces the expected postgresql query plan for future_count 1"] = <<-SNAP
|
|
79
|
+
GroupAggregate (cost=...)
|
|
80
|
+
Output: count(*), (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
81
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
82
|
+
-> Sort (cost=...)
|
|
83
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
84
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
85
|
+
-> Index Only Scan using idx_delayed_jobs_live on public.delayed_jobs (cost=...)
|
|
86
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue
|
|
87
|
+
Index Cond: (delayed_jobs.run_at > '2025-11-10 17:20:13'::timestamp without time zone)
|
|
88
|
+
SNAP
|
|
89
|
+
|
|
90
|
+
snapshots["[legacy index] produces the expected postgresql query plan for future_count 1"] = <<-SNAP
|
|
91
|
+
GroupAggregate (cost=...)
|
|
92
|
+
Output: count(*), (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
93
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
94
|
+
-> Sort (cost=...)
|
|
95
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
96
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
97
|
+
-> Index Scan using delayed_jobs_priority on public.delayed_jobs (cost=...)
|
|
98
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue
|
|
99
|
+
Index Cond: (delayed_jobs.run_at > '2025-11-10 17:20:13'::timestamp without time zone)
|
|
100
|
+
Filter: (delayed_jobs.failed_at IS NULL)
|
|
101
|
+
SNAP
|
|
102
|
+
|
|
103
|
+
snapshots["runs the expected postgresql query for locked_count 1"] = <<-SNAP
|
|
104
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
105
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
106
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
107
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, \"delayed_jobs\".\"queue\" AS delayed_jobs_queue
|
|
108
|
+
FROM \"delayed_jobs\"
|
|
109
|
+
WHERE \"delayed_jobs\".\"locked_at\" >= '2025-11-10 16:59:43'
|
|
110
|
+
AND \"delayed_jobs\".\"failed_at\" IS NULL
|
|
111
|
+
AND \"delayed_jobs\".\"run_at\" <= '2025-11-10 17:20:13'
|
|
112
|
+
GROUP BY CASE WHEN priority >= 0
|
|
113
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
114
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
115
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
116
|
+
SNAP
|
|
117
|
+
|
|
118
|
+
snapshots["produces the expected postgresql query plan for locked_count 1"] = <<-SNAP
|
|
119
|
+
GroupAggregate (cost=...)
|
|
120
|
+
Output: count(*), (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
121
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
122
|
+
-> Sort (cost=...)
|
|
123
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
124
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
125
|
+
-> Index Scan using idx_delayed_jobs_live on public.delayed_jobs (cost=...)
|
|
126
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue
|
|
127
|
+
Index Cond: (delayed_jobs.run_at <= '2025-11-10 17:20:13'::timestamp without time zone)
|
|
128
|
+
Filter: (delayed_jobs.locked_at >= '2025-11-10 16:59:43'::timestamp without time zone)
|
|
129
|
+
SNAP
|
|
130
|
+
|
|
131
|
+
snapshots["[legacy index] produces the expected postgresql query plan for locked_count 1"] = <<-SNAP
|
|
132
|
+
GroupAggregate (cost=...)
|
|
133
|
+
Output: count(*), (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
134
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
135
|
+
-> Sort (cost=...)
|
|
136
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
137
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
138
|
+
-> Index Scan using delayed_jobs_priority on public.delayed_jobs (cost=...)
|
|
139
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue
|
|
140
|
+
Index Cond: (delayed_jobs.run_at <= '2025-11-10 17:20:13'::timestamp without time zone)
|
|
141
|
+
Filter: ((delayed_jobs.failed_at IS NULL) AND (delayed_jobs.locked_at >= '2025-11-10 16:59:43'::timestamp without time zone))
|
|
142
|
+
SNAP
|
|
143
|
+
|
|
144
|
+
snapshots["runs the expected postgresql query for erroring_count 1"] = <<-SNAP
|
|
145
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
146
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
147
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
148
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, \"delayed_jobs\".\"queue\" AS delayed_jobs_queue
|
|
149
|
+
FROM \"delayed_jobs\"
|
|
150
|
+
WHERE \"delayed_jobs\".\"attempts\" > 0
|
|
151
|
+
AND \"delayed_jobs\".\"failed_at\" IS NULL
|
|
152
|
+
GROUP BY CASE WHEN priority >= 0
|
|
153
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
154
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
155
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
156
|
+
SNAP
|
|
157
|
+
|
|
158
|
+
snapshots["produces the expected postgresql query plan for erroring_count 1"] = <<-SNAP
|
|
159
|
+
GroupAggregate (cost=...)
|
|
160
|
+
Output: count(*), (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
161
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
162
|
+
-> Sort (cost=...)
|
|
163
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
164
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
165
|
+
-> Index Only Scan using idx_delayed_jobs_live on public.delayed_jobs (cost=...)
|
|
166
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue
|
|
167
|
+
Index Cond: (delayed_jobs.attempts > 0)
|
|
168
|
+
SNAP
|
|
169
|
+
|
|
170
|
+
snapshots["[legacy index] produces the expected postgresql query plan for erroring_count 1"] = <<-SNAP
|
|
171
|
+
GroupAggregate (cost=...)
|
|
172
|
+
Output: count(*), (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
173
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
174
|
+
-> Sort (cost=...)
|
|
175
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
176
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
177
|
+
-> Seq Scan on public.delayed_jobs (cost=...)
|
|
178
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue
|
|
179
|
+
Filter: ((delayed_jobs.failed_at IS NULL) AND (delayed_jobs.attempts > 0))
|
|
180
|
+
SNAP
|
|
181
|
+
|
|
182
|
+
snapshots["runs the expected postgresql query for failed_count 1"] = <<-SNAP
|
|
183
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
184
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
185
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
186
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, \"delayed_jobs\".\"queue\" AS delayed_jobs_queue
|
|
187
|
+
FROM \"delayed_jobs\"
|
|
188
|
+
WHERE \"delayed_jobs\".\"failed_at\" IS NOT NULL
|
|
189
|
+
GROUP BY CASE WHEN priority >= 0
|
|
190
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
191
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
192
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
193
|
+
SNAP
|
|
194
|
+
|
|
195
|
+
snapshots["produces the expected postgresql query plan for failed_count 1"] = <<-SNAP
|
|
196
|
+
GroupAggregate (cost=...)
|
|
197
|
+
Output: count(*), (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
198
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
199
|
+
-> Sort (cost=...)
|
|
200
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
201
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
202
|
+
-> Index Only Scan using idx_delayed_jobs_failed on public.delayed_jobs (cost=...)
|
|
203
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue
|
|
204
|
+
SNAP
|
|
205
|
+
|
|
206
|
+
snapshots["[legacy index] produces the expected postgresql query plan for failed_count 1"] = <<-SNAP
|
|
207
|
+
GroupAggregate (cost=...)
|
|
208
|
+
Output: count(*), (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
209
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
210
|
+
-> Sort (cost=...)
|
|
211
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
212
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
213
|
+
-> Seq Scan on public.delayed_jobs (cost=...)
|
|
214
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue
|
|
215
|
+
Filter: (delayed_jobs.failed_at IS NOT NULL)
|
|
216
|
+
SNAP
|
|
217
|
+
|
|
218
|
+
snapshots["runs the expected postgresql query for max_lock_age 1"] = <<-SNAP
|
|
219
|
+
SELECT CASE WHEN priority >= 0
|
|
220
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
221
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
222
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS priority, queue, MIN(locked_at) AS locked_at
|
|
223
|
+
FROM \"delayed_jobs\"
|
|
224
|
+
WHERE \"delayed_jobs\".\"locked_at\" >= '2025-11-10 16:59:43'
|
|
225
|
+
AND \"delayed_jobs\".\"failed_at\" IS NULL
|
|
226
|
+
AND \"delayed_jobs\".\"run_at\" <= '2025-11-10 17:20:13'
|
|
227
|
+
GROUP BY CASE WHEN priority >= 0
|
|
228
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
229
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
230
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
231
|
+
SNAP
|
|
232
|
+
|
|
233
|
+
snapshots["produces the expected postgresql query plan for max_lock_age 1"] = <<-SNAP
|
|
234
|
+
GroupAggregate (cost=...)
|
|
235
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue, min(locked_at)
|
|
236
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
237
|
+
-> Sort (cost=...)
|
|
238
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue, locked_at
|
|
239
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
240
|
+
-> Index Scan using idx_delayed_jobs_live on public.delayed_jobs (cost=...)
|
|
241
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue, locked_at
|
|
242
|
+
Index Cond: (delayed_jobs.run_at <= '2025-11-10 17:20:13'::timestamp without time zone)
|
|
243
|
+
Filter: (delayed_jobs.locked_at >= '2025-11-10 16:59:43'::timestamp without time zone)
|
|
244
|
+
SNAP
|
|
245
|
+
|
|
246
|
+
snapshots["[legacy index] produces the expected postgresql query plan for max_lock_age 1"] = <<-SNAP
|
|
247
|
+
GroupAggregate (cost=...)
|
|
248
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue, min(locked_at)
|
|
249
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
250
|
+
-> Sort (cost=...)
|
|
251
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue, locked_at
|
|
252
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
253
|
+
-> Index Scan using delayed_jobs_priority on public.delayed_jobs (cost=...)
|
|
254
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue, locked_at
|
|
255
|
+
Index Cond: (delayed_jobs.run_at <= '2025-11-10 17:20:13'::timestamp without time zone)
|
|
256
|
+
Filter: ((delayed_jobs.failed_at IS NULL) AND (delayed_jobs.locked_at >= '2025-11-10 16:59:43'::timestamp without time zone))
|
|
257
|
+
SNAP
|
|
258
|
+
|
|
259
|
+
snapshots["runs the expected postgresql query for max_age 1"] = <<-SNAP
|
|
260
|
+
SELECT (CASE WHEN priority >= 0
|
|
261
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
262
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
263
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END) AS priority, queue, MIN(run_at) AS run_at
|
|
264
|
+
FROM \"delayed_jobs\"
|
|
265
|
+
WHERE (\"delayed_jobs\".\"locked_at\" IS NULL
|
|
266
|
+
OR \"delayed_jobs\".\"locked_at\" < '2025-11-10 16:59:43')
|
|
267
|
+
AND \"delayed_jobs\".\"failed_at\" IS NULL
|
|
268
|
+
AND \"delayed_jobs\".\"run_at\" <= '2025-11-10 17:20:13'
|
|
269
|
+
GROUP BY CASE WHEN priority >= 0
|
|
270
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
271
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
272
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
273
|
+
SNAP
|
|
274
|
+
|
|
275
|
+
snapshots["produces the expected postgresql query plan for max_age 1"] = <<-SNAP
|
|
276
|
+
GroupAggregate (cost=...)
|
|
277
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue, min(run_at)
|
|
278
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
279
|
+
-> Sort (cost=...)
|
|
280
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue, run_at
|
|
281
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
282
|
+
-> Index Scan using idx_delayed_jobs_live on public.delayed_jobs (cost=...)
|
|
283
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue, run_at
|
|
284
|
+
Index Cond: (delayed_jobs.run_at <= '2025-11-10 17:20:13'::timestamp without time zone)
|
|
285
|
+
Filter: ((delayed_jobs.locked_at IS NULL) OR (delayed_jobs.locked_at < '2025-11-10 16:59:43'::timestamp without time zone))
|
|
286
|
+
SNAP
|
|
287
|
+
|
|
288
|
+
snapshots["[legacy index] produces the expected postgresql query plan for max_age 1"] = <<-SNAP
|
|
289
|
+
GroupAggregate (cost=...)
|
|
290
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue, min(run_at)
|
|
291
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
292
|
+
-> Sort (cost=...)
|
|
293
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue, run_at
|
|
294
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
295
|
+
-> Index Scan using delayed_jobs_priority on public.delayed_jobs (cost=...)
|
|
296
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue, run_at
|
|
297
|
+
Index Cond: (delayed_jobs.run_at <= '2025-11-10 17:20:13'::timestamp without time zone)
|
|
298
|
+
Filter: ((delayed_jobs.failed_at IS NULL) AND ((delayed_jobs.locked_at IS NULL) OR (delayed_jobs.locked_at < '2025-11-10 16:59:43'::timestamp without time zone)))
|
|
299
|
+
SNAP
|
|
300
|
+
|
|
301
|
+
snapshots["runs the expected postgresql query for working_count 1"] = <<-SNAP
|
|
302
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
303
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
304
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
305
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, \"delayed_jobs\".\"queue\" AS delayed_jobs_queue
|
|
306
|
+
FROM \"delayed_jobs\"
|
|
307
|
+
WHERE \"delayed_jobs\".\"locked_at\" >= '2025-11-10 16:59:43'
|
|
308
|
+
AND \"delayed_jobs\".\"failed_at\" IS NULL
|
|
309
|
+
AND \"delayed_jobs\".\"run_at\" <= '2025-11-10 17:20:13'
|
|
310
|
+
GROUP BY CASE WHEN priority >= 0
|
|
311
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
312
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
313
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
314
|
+
SNAP
|
|
315
|
+
|
|
316
|
+
snapshots["produces the expected postgresql query plan for working_count 1"] = <<-SNAP
|
|
317
|
+
GroupAggregate (cost=...)
|
|
318
|
+
Output: count(*), (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
319
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
320
|
+
-> Sort (cost=...)
|
|
321
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
322
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
323
|
+
-> Index Scan using idx_delayed_jobs_live on public.delayed_jobs (cost=...)
|
|
324
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue
|
|
325
|
+
Index Cond: (delayed_jobs.run_at <= '2025-11-10 17:20:13'::timestamp without time zone)
|
|
326
|
+
Filter: (delayed_jobs.locked_at >= '2025-11-10 16:59:43'::timestamp without time zone)
|
|
327
|
+
SNAP
|
|
328
|
+
|
|
329
|
+
snapshots["[legacy index] produces the expected postgresql query plan for working_count 1"] = <<-SNAP
|
|
330
|
+
GroupAggregate (cost=...)
|
|
331
|
+
Output: count(*), (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
332
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
333
|
+
-> Sort (cost=...)
|
|
334
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
335
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
336
|
+
-> Index Scan using delayed_jobs_priority on public.delayed_jobs (cost=...)
|
|
337
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue
|
|
338
|
+
Index Cond: (delayed_jobs.run_at <= '2025-11-10 17:20:13'::timestamp without time zone)
|
|
339
|
+
Filter: ((delayed_jobs.failed_at IS NULL) AND (delayed_jobs.locked_at >= '2025-11-10 16:59:43'::timestamp without time zone))
|
|
340
|
+
SNAP
|
|
341
|
+
|
|
342
|
+
snapshots["runs the expected postgresql query for workable_count 1"] = <<-SNAP
|
|
343
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
344
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
345
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
346
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, \"delayed_jobs\".\"queue\" AS delayed_jobs_queue
|
|
347
|
+
FROM \"delayed_jobs\"
|
|
348
|
+
WHERE (\"delayed_jobs\".\"locked_at\" IS NULL
|
|
349
|
+
OR \"delayed_jobs\".\"locked_at\" < '2025-11-10 16:59:43')
|
|
350
|
+
AND \"delayed_jobs\".\"failed_at\" IS NULL
|
|
351
|
+
AND \"delayed_jobs\".\"run_at\" <= '2025-11-10 17:20:13'
|
|
352
|
+
GROUP BY CASE WHEN priority >= 0
|
|
353
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
354
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
355
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
356
|
+
SNAP
|
|
357
|
+
|
|
358
|
+
snapshots["produces the expected postgresql query plan for workable_count 1"] = <<-SNAP
|
|
359
|
+
GroupAggregate (cost=...)
|
|
360
|
+
Output: count(*), (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
361
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
362
|
+
-> Sort (cost=...)
|
|
363
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
364
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
365
|
+
-> Index Scan using idx_delayed_jobs_live on public.delayed_jobs (cost=...)
|
|
366
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue
|
|
367
|
+
Index Cond: (delayed_jobs.run_at <= '2025-11-10 17:20:13'::timestamp without time zone)
|
|
368
|
+
Filter: ((delayed_jobs.locked_at IS NULL) OR (delayed_jobs.locked_at < '2025-11-10 16:59:43'::timestamp without time zone))
|
|
369
|
+
SNAP
|
|
370
|
+
|
|
371
|
+
snapshots["[legacy index] produces the expected postgresql query plan for workable_count 1"] = <<-SNAP
|
|
372
|
+
GroupAggregate (cost=...)
|
|
373
|
+
Output: count(*), (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
374
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
375
|
+
-> Sort (cost=...)
|
|
376
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue
|
|
377
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
378
|
+
-> Index Scan using delayed_jobs_priority on public.delayed_jobs (cost=...)
|
|
379
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue
|
|
380
|
+
Index Cond: (delayed_jobs.run_at <= '2025-11-10 17:20:13'::timestamp without time zone)
|
|
381
|
+
Filter: ((delayed_jobs.failed_at IS NULL) AND ((delayed_jobs.locked_at IS NULL) OR (delayed_jobs.locked_at < '2025-11-10 16:59:43'::timestamp without time zone)))
|
|
382
|
+
SNAP
|
|
383
|
+
|
|
384
|
+
snapshots["runs the expected postgresql query for alert_age_percent 1"] = <<-SNAP
|
|
385
|
+
SELECT (CASE WHEN priority >= 0
|
|
386
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
387
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
388
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END) AS priority, queue, MIN(run_at) AS run_at
|
|
389
|
+
FROM \"delayed_jobs\"
|
|
390
|
+
WHERE (\"delayed_jobs\".\"locked_at\" IS NULL
|
|
391
|
+
OR \"delayed_jobs\".\"locked_at\" < '2025-11-10 16:59:43')
|
|
392
|
+
AND \"delayed_jobs\".\"failed_at\" IS NULL
|
|
393
|
+
AND \"delayed_jobs\".\"run_at\" <= '2025-11-10 17:20:13'
|
|
394
|
+
GROUP BY CASE WHEN priority >= 0
|
|
395
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
396
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
397
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
398
|
+
SNAP
|
|
399
|
+
|
|
400
|
+
snapshots["produces the expected postgresql query plan for alert_age_percent 1"] = <<-SNAP
|
|
401
|
+
GroupAggregate (cost=...)
|
|
402
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue, min(run_at)
|
|
403
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
404
|
+
-> Sort (cost=...)
|
|
405
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue, run_at
|
|
406
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
407
|
+
-> Index Scan using idx_delayed_jobs_live on public.delayed_jobs (cost=...)
|
|
408
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue, run_at
|
|
409
|
+
Index Cond: (delayed_jobs.run_at <= '2025-11-10 17:20:13'::timestamp without time zone)
|
|
410
|
+
Filter: ((delayed_jobs.locked_at IS NULL) OR (delayed_jobs.locked_at < '2025-11-10 16:59:43'::timestamp without time zone))
|
|
411
|
+
SNAP
|
|
412
|
+
|
|
413
|
+
snapshots["[legacy index] produces the expected postgresql query plan for alert_age_percent 1"] = <<-SNAP
|
|
414
|
+
GroupAggregate (cost=...)
|
|
415
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue, min(run_at)
|
|
416
|
+
Group Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
417
|
+
-> Sort (cost=...)
|
|
418
|
+
Output: (CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END), queue, run_at
|
|
419
|
+
Sort Key: (CASE WHEN ((delayed_jobs.priority >= 0) AND (delayed_jobs.priority < 10)) THEN 0 WHEN ((delayed_jobs.priority >= 10) AND (delayed_jobs.priority < 20)) THEN 10 WHEN ((delayed_jobs.priority >= 20) AND (delayed_jobs.priority < 30)) THEN 20 WHEN (delayed_jobs.priority >= 30) THEN 30 ELSE NULL::integer END), delayed_jobs.queue
|
|
420
|
+
-> Index Scan using delayed_jobs_priority on public.delayed_jobs (cost=...)
|
|
421
|
+
Output: CASE WHEN ((priority >= 0) AND (priority < 10)) THEN 0 WHEN ((priority >= 10) AND (priority < 20)) THEN 10 WHEN ((priority >= 20) AND (priority < 30)) THEN 20 WHEN (priority >= 30) THEN 30 ELSE NULL::integer END, queue, run_at
|
|
422
|
+
Index Cond: (delayed_jobs.run_at <= '2025-11-10 17:20:13'::timestamp without time zone)
|
|
423
|
+
Filter: ((delayed_jobs.failed_at IS NULL) AND ((delayed_jobs.locked_at IS NULL) OR (delayed_jobs.locked_at < '2025-11-10 16:59:43'::timestamp without time zone)))
|
|
424
|
+
SNAP
|
|
425
|
+
|
|
426
|
+
snapshots["runs the expected sqlite3 query for count 1"] = <<-SNAP
|
|
427
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
428
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
429
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
430
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, \"delayed_jobs\".\"queue\" AS delayed_jobs_queue
|
|
431
|
+
FROM \"delayed_jobs\"
|
|
432
|
+
WHERE \"delayed_jobs\".\"failed_at\" IS NOT NULL
|
|
433
|
+
GROUP BY CASE WHEN priority >= 0
|
|
434
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
435
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
436
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
437
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
438
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
439
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
440
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, \"delayed_jobs\".\"queue\" AS delayed_jobs_queue
|
|
441
|
+
FROM \"delayed_jobs\"
|
|
442
|
+
WHERE \"delayed_jobs\".\"failed_at\" IS NULL
|
|
443
|
+
GROUP BY CASE WHEN priority >= 0
|
|
444
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
445
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
446
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
447
|
+
SNAP
|
|
448
|
+
|
|
449
|
+
snapshots["produces the expected sqlite3 query plan for count 1"] = <<-SNAP
|
|
450
|
+
SCAN delayed_jobs USING INDEX idx_delayed_jobs_failed
|
|
451
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
452
|
+
SCAN delayed_jobs USING INDEX idx_delayed_jobs_live
|
|
453
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
454
|
+
SNAP
|
|
455
|
+
|
|
456
|
+
snapshots["[legacy index] produces the expected sqlite3 query plan for count 1"] = <<-SNAP
|
|
457
|
+
SCAN delayed_jobs
|
|
458
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
459
|
+
SCAN delayed_jobs
|
|
460
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
461
|
+
SNAP
|
|
462
|
+
|
|
463
|
+
snapshots["runs the expected sqlite3 query for future_count 1"] = <<-SNAP
|
|
464
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
465
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
466
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
467
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, \"delayed_jobs\".\"queue\" AS delayed_jobs_queue
|
|
468
|
+
FROM \"delayed_jobs\"
|
|
469
|
+
WHERE \"delayed_jobs\".\"failed_at\" IS NULL
|
|
470
|
+
AND \"delayed_jobs\".\"run_at\" > '2025-11-10 17:20:13'
|
|
471
|
+
GROUP BY CASE WHEN priority >= 0
|
|
472
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
473
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
474
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
475
|
+
SNAP
|
|
476
|
+
|
|
477
|
+
snapshots["produces the expected sqlite3 query plan for future_count 1"] = <<-SNAP
|
|
478
|
+
SCAN delayed_jobs USING INDEX idx_delayed_jobs_live
|
|
479
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
480
|
+
SNAP
|
|
481
|
+
|
|
482
|
+
snapshots["[legacy index] produces the expected sqlite3 query plan for future_count 1"] = <<-SNAP
|
|
483
|
+
SCAN delayed_jobs
|
|
484
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
485
|
+
SNAP
|
|
486
|
+
|
|
487
|
+
snapshots["runs the expected sqlite3 query for locked_count 1"] = <<-SNAP
|
|
488
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
489
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
490
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
491
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, \"delayed_jobs\".\"queue\" AS delayed_jobs_queue
|
|
492
|
+
FROM \"delayed_jobs\"
|
|
493
|
+
WHERE \"delayed_jobs\".\"locked_at\" >= '2025-11-10 16:59:43'
|
|
494
|
+
AND \"delayed_jobs\".\"failed_at\" IS NULL
|
|
495
|
+
AND \"delayed_jobs\".\"run_at\" <= '2025-11-10 17:20:13'
|
|
496
|
+
GROUP BY CASE WHEN priority >= 0
|
|
497
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
498
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
499
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
500
|
+
SNAP
|
|
501
|
+
|
|
502
|
+
snapshots["produces the expected sqlite3 query plan for locked_count 1"] = <<-SNAP
|
|
503
|
+
SCAN delayed_jobs USING INDEX idx_delayed_jobs_live
|
|
504
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
505
|
+
SNAP
|
|
506
|
+
|
|
507
|
+
snapshots["[legacy index] produces the expected sqlite3 query plan for locked_count 1"] = <<-SNAP
|
|
508
|
+
SCAN delayed_jobs
|
|
509
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
510
|
+
SNAP
|
|
511
|
+
|
|
512
|
+
snapshots["runs the expected sqlite3 query for erroring_count 1"] = <<-SNAP
|
|
513
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
514
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
515
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
516
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, \"delayed_jobs\".\"queue\" AS delayed_jobs_queue
|
|
517
|
+
FROM \"delayed_jobs\"
|
|
518
|
+
WHERE \"delayed_jobs\".\"attempts\" > 0
|
|
519
|
+
AND \"delayed_jobs\".\"failed_at\" IS NULL
|
|
520
|
+
GROUP BY CASE WHEN priority >= 0
|
|
521
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
522
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
523
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
524
|
+
SNAP
|
|
525
|
+
|
|
526
|
+
snapshots["produces the expected sqlite3 query plan for erroring_count 1"] = <<-SNAP
|
|
527
|
+
SCAN delayed_jobs USING INDEX idx_delayed_jobs_live
|
|
528
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
529
|
+
SNAP
|
|
530
|
+
|
|
531
|
+
snapshots["[legacy index] produces the expected sqlite3 query plan for erroring_count 1"] = <<-SNAP
|
|
532
|
+
SCAN delayed_jobs
|
|
533
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
534
|
+
SNAP
|
|
535
|
+
|
|
536
|
+
snapshots["runs the expected sqlite3 query for failed_count 1"] = <<-SNAP
|
|
537
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
538
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
539
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
540
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, \"delayed_jobs\".\"queue\" AS delayed_jobs_queue
|
|
541
|
+
FROM \"delayed_jobs\"
|
|
542
|
+
WHERE \"delayed_jobs\".\"failed_at\" IS NOT NULL
|
|
543
|
+
GROUP BY CASE WHEN priority >= 0
|
|
544
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
545
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
546
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
547
|
+
SNAP
|
|
548
|
+
|
|
549
|
+
snapshots["produces the expected sqlite3 query plan for failed_count 1"] = <<-SNAP
|
|
550
|
+
SCAN delayed_jobs USING INDEX idx_delayed_jobs_failed
|
|
551
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
552
|
+
SNAP
|
|
553
|
+
|
|
554
|
+
snapshots["[legacy index] produces the expected sqlite3 query plan for failed_count 1"] = <<-SNAP
|
|
555
|
+
SCAN delayed_jobs
|
|
556
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
557
|
+
SNAP
|
|
558
|
+
|
|
559
|
+
snapshots["runs the expected sqlite3 query for max_lock_age 1"] = <<-SNAP
|
|
560
|
+
SELECT CASE WHEN priority >= 0
|
|
561
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
562
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
563
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS priority, queue, MIN(locked_at) AS locked_at
|
|
564
|
+
FROM \"delayed_jobs\"
|
|
565
|
+
WHERE \"delayed_jobs\".\"locked_at\" >= '2025-11-10 16:59:43'
|
|
566
|
+
AND \"delayed_jobs\".\"failed_at\" IS NULL
|
|
567
|
+
AND \"delayed_jobs\".\"run_at\" <= '2025-11-10 17:20:13'
|
|
568
|
+
GROUP BY CASE WHEN priority >= 0
|
|
569
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
570
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
571
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
572
|
+
SNAP
|
|
573
|
+
|
|
574
|
+
snapshots["produces the expected sqlite3 query plan for max_lock_age 1"] = <<-SNAP
|
|
575
|
+
SCAN delayed_jobs USING INDEX idx_delayed_jobs_live
|
|
576
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
577
|
+
SNAP
|
|
578
|
+
|
|
579
|
+
snapshots["[legacy index] produces the expected sqlite3 query plan for max_lock_age 1"] = <<-SNAP
|
|
580
|
+
SCAN delayed_jobs
|
|
581
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
582
|
+
SNAP
|
|
583
|
+
|
|
584
|
+
snapshots["runs the expected sqlite3 query for max_age 1"] = <<-SNAP
|
|
585
|
+
SELECT (CASE WHEN priority >= 0
|
|
586
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
587
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
588
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END) AS priority, queue, MIN(run_at) AS run_at
|
|
589
|
+
FROM \"delayed_jobs\"
|
|
590
|
+
WHERE (\"delayed_jobs\".\"locked_at\" IS NULL
|
|
591
|
+
OR \"delayed_jobs\".\"locked_at\" < '2025-11-10 16:59:43')
|
|
592
|
+
AND \"delayed_jobs\".\"failed_at\" IS NULL
|
|
593
|
+
AND \"delayed_jobs\".\"run_at\" <= '2025-11-10 17:20:13'
|
|
594
|
+
GROUP BY CASE WHEN priority >= 0
|
|
595
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
596
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
597
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
598
|
+
SNAP
|
|
599
|
+
|
|
600
|
+
snapshots["produces the expected sqlite3 query plan for max_age 1"] = <<-SNAP
|
|
601
|
+
SCAN delayed_jobs USING INDEX idx_delayed_jobs_live
|
|
602
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
603
|
+
SNAP
|
|
604
|
+
|
|
605
|
+
snapshots["[legacy index] produces the expected sqlite3 query plan for max_age 1"] = <<-SNAP
|
|
606
|
+
SCAN delayed_jobs
|
|
607
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
608
|
+
SNAP
|
|
609
|
+
|
|
610
|
+
snapshots["runs the expected sqlite3 query for working_count 1"] = <<-SNAP
|
|
611
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
612
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
613
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
614
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, \"delayed_jobs\".\"queue\" AS delayed_jobs_queue
|
|
615
|
+
FROM \"delayed_jobs\"
|
|
616
|
+
WHERE \"delayed_jobs\".\"locked_at\" >= '2025-11-10 16:59:43'
|
|
617
|
+
AND \"delayed_jobs\".\"failed_at\" IS NULL
|
|
618
|
+
AND \"delayed_jobs\".\"run_at\" <= '2025-11-10 17:20:13'
|
|
619
|
+
GROUP BY CASE WHEN priority >= 0
|
|
620
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
621
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
622
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
623
|
+
SNAP
|
|
624
|
+
|
|
625
|
+
snapshots["produces the expected sqlite3 query plan for working_count 1"] = <<-SNAP
|
|
626
|
+
SCAN delayed_jobs USING INDEX idx_delayed_jobs_live
|
|
627
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
628
|
+
SNAP
|
|
629
|
+
|
|
630
|
+
snapshots["[legacy index] produces the expected sqlite3 query plan for working_count 1"] = <<-SNAP
|
|
631
|
+
SCAN delayed_jobs
|
|
632
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
633
|
+
SNAP
|
|
634
|
+
|
|
635
|
+
snapshots["runs the expected sqlite3 query for workable_count 1"] = <<-SNAP
|
|
636
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
637
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
638
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
639
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, \"delayed_jobs\".\"queue\" AS delayed_jobs_queue
|
|
640
|
+
FROM \"delayed_jobs\"
|
|
641
|
+
WHERE (\"delayed_jobs\".\"locked_at\" IS NULL
|
|
642
|
+
OR \"delayed_jobs\".\"locked_at\" < '2025-11-10 16:59:43')
|
|
643
|
+
AND \"delayed_jobs\".\"failed_at\" IS NULL
|
|
644
|
+
AND \"delayed_jobs\".\"run_at\" <= '2025-11-10 17:20:13'
|
|
645
|
+
GROUP BY CASE WHEN priority >= 0
|
|
646
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
647
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
648
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
649
|
+
SNAP
|
|
650
|
+
|
|
651
|
+
snapshots["produces the expected sqlite3 query plan for workable_count 1"] = <<-SNAP
|
|
652
|
+
SCAN delayed_jobs USING INDEX idx_delayed_jobs_live
|
|
653
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
654
|
+
SNAP
|
|
655
|
+
|
|
656
|
+
snapshots["[legacy index] produces the expected sqlite3 query plan for workable_count 1"] = <<-SNAP
|
|
657
|
+
SCAN delayed_jobs
|
|
658
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
659
|
+
SNAP
|
|
660
|
+
|
|
661
|
+
snapshots["runs the expected sqlite3 query for alert_age_percent 1"] = <<-SNAP
|
|
662
|
+
SELECT (CASE WHEN priority >= 0
|
|
663
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
664
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
665
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END) AS priority, queue, MIN(run_at) AS run_at
|
|
666
|
+
FROM \"delayed_jobs\"
|
|
667
|
+
WHERE (\"delayed_jobs\".\"locked_at\" IS NULL
|
|
668
|
+
OR \"delayed_jobs\".\"locked_at\" < '2025-11-10 16:59:43')
|
|
669
|
+
AND \"delayed_jobs\".\"failed_at\" IS NULL
|
|
670
|
+
AND \"delayed_jobs\".\"run_at\" <= '2025-11-10 17:20:13'
|
|
671
|
+
GROUP BY CASE WHEN priority >= 0
|
|
672
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
673
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
674
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, \"delayed_jobs\".\"queue\"
|
|
675
|
+
SNAP
|
|
676
|
+
|
|
677
|
+
snapshots["produces the expected sqlite3 query plan for alert_age_percent 1"] = <<-SNAP
|
|
678
|
+
SCAN delayed_jobs USING INDEX idx_delayed_jobs_live
|
|
679
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
680
|
+
SNAP
|
|
681
|
+
|
|
682
|
+
snapshots["[legacy index] produces the expected sqlite3 query plan for alert_age_percent 1"] = <<-SNAP
|
|
683
|
+
SCAN delayed_jobs
|
|
684
|
+
USE TEMP B-TREE FOR GROUP BY
|
|
685
|
+
SNAP
|
|
686
|
+
|
|
687
|
+
snapshots["runs the expected mysql2 query for count 1"] = <<-SNAP
|
|
688
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
689
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
690
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
691
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, `delayed_jobs`.`queue` AS delayed_jobs_queue
|
|
692
|
+
FROM `delayed_jobs`
|
|
693
|
+
GROUP BY CASE WHEN priority >= 0
|
|
694
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
695
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
696
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, `delayed_jobs`.`queue`
|
|
697
|
+
SNAP
|
|
698
|
+
|
|
699
|
+
snapshots["produces the expected mysql2 query plan for count 1"] = <<-SNAP
|
|
700
|
+
-> Table scan on <temporary>
|
|
701
|
+
-> Aggregate using temporary table
|
|
702
|
+
-> Covering index scan on delayed_jobs using idx_delayed_jobs_live (cost=...)
|
|
703
|
+
SNAP
|
|
704
|
+
|
|
705
|
+
snapshots["[legacy index] produces the expected mysql2 query plan for count 1"] = <<-SNAP
|
|
706
|
+
-> Table scan on <temporary>
|
|
707
|
+
-> Aggregate using temporary table
|
|
708
|
+
-> Table scan on delayed_jobs (cost=...)
|
|
709
|
+
SNAP
|
|
710
|
+
|
|
711
|
+
snapshots["runs the expected mysql2 query for future_count 1"] = <<-SNAP
|
|
712
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
713
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
714
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
715
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, `delayed_jobs`.`queue` AS delayed_jobs_queue
|
|
716
|
+
FROM `delayed_jobs`
|
|
717
|
+
WHERE `delayed_jobs`.`failed_at` IS NULL
|
|
718
|
+
AND `delayed_jobs`.`run_at` > '2025-11-10 17:20:13'
|
|
719
|
+
GROUP BY CASE WHEN priority >= 0
|
|
720
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
721
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
722
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, `delayed_jobs`.`queue`
|
|
723
|
+
SNAP
|
|
724
|
+
|
|
725
|
+
snapshots["produces the expected mysql2 query plan for future_count 1"] = <<-SNAP
|
|
726
|
+
-> Table scan on <temporary>
|
|
727
|
+
-> Aggregate using temporary table
|
|
728
|
+
-> Filter: ((delayed_jobs.failed_at is null) and (delayed_jobs.run_at > TIMESTAMP'2025-11-10 17:20:13')) (cost=...)
|
|
729
|
+
-> Covering index lookup on delayed_jobs using idx_delayed_jobs_live (failed_at = NULL) (cost=...)
|
|
730
|
+
SNAP
|
|
731
|
+
|
|
732
|
+
snapshots["[legacy index] produces the expected mysql2 query plan for future_count 1"] = <<-SNAP
|
|
733
|
+
-> Table scan on <temporary>
|
|
734
|
+
-> Aggregate using temporary table
|
|
735
|
+
-> Filter: ((delayed_jobs.failed_at is null) and (delayed_jobs.run_at > TIMESTAMP'2025-11-10 17:20:13')) (cost=...)
|
|
736
|
+
-> Table scan on delayed_jobs (cost=...)
|
|
737
|
+
SNAP
|
|
738
|
+
|
|
739
|
+
snapshots["runs the expected mysql2 query for locked_count 1"] = <<-SNAP
|
|
740
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
741
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
742
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
743
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, `delayed_jobs`.`queue` AS delayed_jobs_queue
|
|
744
|
+
FROM `delayed_jobs`
|
|
745
|
+
WHERE `delayed_jobs`.`locked_at` >= '2025-11-10 16:59:43'
|
|
746
|
+
AND `delayed_jobs`.`failed_at` IS NULL
|
|
747
|
+
AND `delayed_jobs`.`run_at` <= '2025-11-10 17:20:13'
|
|
748
|
+
GROUP BY CASE WHEN priority >= 0
|
|
749
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
750
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
751
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, `delayed_jobs`.`queue`
|
|
752
|
+
SNAP
|
|
753
|
+
|
|
754
|
+
snapshots["produces the expected mysql2 query plan for locked_count 1"] = <<-SNAP
|
|
755
|
+
-> Table scan on <temporary>
|
|
756
|
+
-> Aggregate using temporary table
|
|
757
|
+
-> Filter: ((delayed_jobs.locked_at >= TIMESTAMP'2025-11-10 16:59:43') and (delayed_jobs.failed_at is null) and (delayed_jobs.run_at <= TIMESTAMP'2025-11-10 17:20:13')) (cost=...)
|
|
758
|
+
-> Covering index lookup on delayed_jobs using idx_delayed_jobs_live (failed_at = NULL) (cost=...)
|
|
759
|
+
SNAP
|
|
760
|
+
|
|
761
|
+
snapshots["[legacy index] produces the expected mysql2 query plan for locked_count 1"] = <<-SNAP
|
|
762
|
+
-> Table scan on <temporary>
|
|
763
|
+
-> Aggregate using temporary table
|
|
764
|
+
-> Filter: ((delayed_jobs.locked_at >= TIMESTAMP'2025-11-10 16:59:43') and (delayed_jobs.failed_at is null) and (delayed_jobs.run_at <= TIMESTAMP'2025-11-10 17:20:13')) (cost=...)
|
|
765
|
+
-> Table scan on delayed_jobs (cost=...)
|
|
766
|
+
SNAP
|
|
767
|
+
|
|
768
|
+
snapshots["runs the expected mysql2 query for erroring_count 1"] = <<-SNAP
|
|
769
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
770
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
771
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
772
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, `delayed_jobs`.`queue` AS delayed_jobs_queue
|
|
773
|
+
FROM `delayed_jobs`
|
|
774
|
+
WHERE `delayed_jobs`.`attempts` > 0
|
|
775
|
+
AND `delayed_jobs`.`failed_at` IS NULL
|
|
776
|
+
GROUP BY CASE WHEN priority >= 0
|
|
777
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
778
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
779
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, `delayed_jobs`.`queue`
|
|
780
|
+
SNAP
|
|
781
|
+
|
|
782
|
+
snapshots["produces the expected mysql2 query plan for erroring_count 1"] = <<-SNAP
|
|
783
|
+
-> Table scan on <temporary>
|
|
784
|
+
-> Aggregate using temporary table
|
|
785
|
+
-> Filter: ((delayed_jobs.attempts > 0) and (delayed_jobs.failed_at is null)) (cost=...)
|
|
786
|
+
-> Covering index lookup on delayed_jobs using idx_delayed_jobs_live (failed_at = NULL) (cost=...)
|
|
787
|
+
SNAP
|
|
788
|
+
|
|
789
|
+
snapshots["[legacy index] produces the expected mysql2 query plan for erroring_count 1"] = <<-SNAP
|
|
790
|
+
-> Table scan on <temporary>
|
|
791
|
+
-> Aggregate using temporary table
|
|
792
|
+
-> Filter: ((delayed_jobs.attempts > 0) and (delayed_jobs.failed_at is null)) (cost=...)
|
|
793
|
+
-> Table scan on delayed_jobs (cost=...)
|
|
794
|
+
SNAP
|
|
795
|
+
|
|
796
|
+
snapshots["runs the expected mysql2 query for failed_count 1"] = <<-SNAP
|
|
797
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
798
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
799
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
800
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, `delayed_jobs`.`queue` AS delayed_jobs_queue
|
|
801
|
+
FROM `delayed_jobs`
|
|
802
|
+
WHERE `delayed_jobs`.`failed_at` IS NOT NULL
|
|
803
|
+
GROUP BY CASE WHEN priority >= 0
|
|
804
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
805
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
806
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, `delayed_jobs`.`queue`
|
|
807
|
+
SNAP
|
|
808
|
+
|
|
809
|
+
snapshots["produces the expected mysql2 query plan for failed_count 1"] = <<-SNAP
|
|
810
|
+
-> Table scan on <temporary>
|
|
811
|
+
-> Aggregate using temporary table
|
|
812
|
+
-> Filter: (delayed_jobs.failed_at is not null) (cost=...)
|
|
813
|
+
-> Covering index range scan on delayed_jobs using idx_delayed_jobs_live over (NULL < failed_at) (cost=...)
|
|
814
|
+
SNAP
|
|
815
|
+
|
|
816
|
+
snapshots["[legacy index] produces the expected mysql2 query plan for failed_count 1"] = <<-SNAP
|
|
817
|
+
-> Table scan on <temporary>
|
|
818
|
+
-> Aggregate using temporary table
|
|
819
|
+
-> Filter: (delayed_jobs.failed_at is not null) (cost=...)
|
|
820
|
+
-> Table scan on delayed_jobs (cost=...)
|
|
821
|
+
SNAP
|
|
822
|
+
|
|
823
|
+
snapshots["runs the expected mysql2 query for max_lock_age 1"] = <<-SNAP
|
|
824
|
+
SELECT CASE WHEN priority >= 0
|
|
825
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
826
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
827
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS priority, queue, MIN(locked_at) AS locked_at
|
|
828
|
+
FROM `delayed_jobs`
|
|
829
|
+
WHERE `delayed_jobs`.`locked_at` >= '2025-11-10 16:59:43'
|
|
830
|
+
AND `delayed_jobs`.`failed_at` IS NULL
|
|
831
|
+
AND `delayed_jobs`.`run_at` <= '2025-11-10 17:20:13'
|
|
832
|
+
GROUP BY CASE WHEN priority >= 0
|
|
833
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
834
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
835
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, `delayed_jobs`.`queue`
|
|
836
|
+
SNAP
|
|
837
|
+
|
|
838
|
+
snapshots["produces the expected mysql2 query plan for max_lock_age 1"] = <<-SNAP
|
|
839
|
+
-> Table scan on <temporary>
|
|
840
|
+
-> Aggregate using temporary table
|
|
841
|
+
-> Filter: ((delayed_jobs.locked_at >= TIMESTAMP'2025-11-10 16:59:43') and (delayed_jobs.failed_at is null) and (delayed_jobs.run_at <= TIMESTAMP'2025-11-10 17:20:13')) (cost=...)
|
|
842
|
+
-> Covering index lookup on delayed_jobs using idx_delayed_jobs_live (failed_at = NULL) (cost=...)
|
|
843
|
+
SNAP
|
|
844
|
+
|
|
845
|
+
snapshots["[legacy index] produces the expected mysql2 query plan for max_lock_age 1"] = <<-SNAP
|
|
846
|
+
-> Table scan on <temporary>
|
|
847
|
+
-> Aggregate using temporary table
|
|
848
|
+
-> Filter: ((delayed_jobs.locked_at >= TIMESTAMP'2025-11-10 16:59:43') and (delayed_jobs.failed_at is null) and (delayed_jobs.run_at <= TIMESTAMP'2025-11-10 17:20:13')) (cost=...)
|
|
849
|
+
-> Table scan on delayed_jobs (cost=...)
|
|
850
|
+
SNAP
|
|
851
|
+
|
|
852
|
+
snapshots["runs the expected mysql2 query for max_age 1"] = <<-SNAP
|
|
853
|
+
SELECT (CASE WHEN priority >= 0
|
|
854
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
855
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
856
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END) AS priority, queue, MIN(run_at) AS run_at
|
|
857
|
+
FROM `delayed_jobs`
|
|
858
|
+
WHERE (`delayed_jobs`.`locked_at` IS NULL
|
|
859
|
+
OR `delayed_jobs`.`locked_at` < '2025-11-10 16:59:43')
|
|
860
|
+
AND `delayed_jobs`.`failed_at` IS NULL
|
|
861
|
+
AND `delayed_jobs`.`run_at` <= '2025-11-10 17:20:13'
|
|
862
|
+
GROUP BY CASE WHEN priority >= 0
|
|
863
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
864
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
865
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, `delayed_jobs`.`queue`
|
|
866
|
+
SNAP
|
|
867
|
+
|
|
868
|
+
snapshots["produces the expected mysql2 query plan for max_age 1"] = <<-SNAP
|
|
869
|
+
-> Table scan on <temporary>
|
|
870
|
+
-> Aggregate using temporary table
|
|
871
|
+
-> Filter: (((delayed_jobs.locked_at is null) or (delayed_jobs.locked_at < TIMESTAMP'2025-11-10 16:59:43')) and (delayed_jobs.failed_at is null) and (delayed_jobs.run_at <= TIMESTAMP'2025-11-10 17:20:13')) (cost=...)
|
|
872
|
+
-> Covering index lookup on delayed_jobs using idx_delayed_jobs_live (failed_at = NULL) (cost=...)
|
|
873
|
+
SNAP
|
|
874
|
+
|
|
875
|
+
snapshots["[legacy index] produces the expected mysql2 query plan for max_age 1"] = <<-SNAP
|
|
876
|
+
-> Table scan on <temporary>
|
|
877
|
+
-> Aggregate using temporary table
|
|
878
|
+
-> Filter: (((delayed_jobs.locked_at is null) or (delayed_jobs.locked_at < TIMESTAMP'2025-11-10 16:59:43')) and (delayed_jobs.failed_at is null) and (delayed_jobs.run_at <= TIMESTAMP'2025-11-10 17:20:13')) (cost=...)
|
|
879
|
+
-> Table scan on delayed_jobs (cost=...)
|
|
880
|
+
SNAP
|
|
881
|
+
|
|
882
|
+
snapshots["runs the expected mysql2 query for working_count 1"] = <<-SNAP
|
|
883
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
884
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
885
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
886
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, `delayed_jobs`.`queue` AS delayed_jobs_queue
|
|
887
|
+
FROM `delayed_jobs`
|
|
888
|
+
WHERE `delayed_jobs`.`locked_at` >= '2025-11-10 16:59:43'
|
|
889
|
+
AND `delayed_jobs`.`failed_at` IS NULL
|
|
890
|
+
AND `delayed_jobs`.`run_at` <= '2025-11-10 17:20:13'
|
|
891
|
+
GROUP BY CASE WHEN priority >= 0
|
|
892
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
893
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
894
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, `delayed_jobs`.`queue`
|
|
895
|
+
SNAP
|
|
896
|
+
|
|
897
|
+
snapshots["produces the expected mysql2 query plan for working_count 1"] = <<-SNAP
|
|
898
|
+
-> Table scan on <temporary>
|
|
899
|
+
-> Aggregate using temporary table
|
|
900
|
+
-> Filter: ((delayed_jobs.locked_at >= TIMESTAMP'2025-11-10 16:59:43') and (delayed_jobs.failed_at is null) and (delayed_jobs.run_at <= TIMESTAMP'2025-11-10 17:20:13')) (cost=...)
|
|
901
|
+
-> Covering index lookup on delayed_jobs using idx_delayed_jobs_live (failed_at = NULL) (cost=...)
|
|
902
|
+
SNAP
|
|
903
|
+
|
|
904
|
+
snapshots["[legacy index] produces the expected mysql2 query plan for working_count 1"] = <<-SNAP
|
|
905
|
+
-> Table scan on <temporary>
|
|
906
|
+
-> Aggregate using temporary table
|
|
907
|
+
-> Filter: ((delayed_jobs.locked_at >= TIMESTAMP'2025-11-10 16:59:43') and (delayed_jobs.failed_at is null) and (delayed_jobs.run_at <= TIMESTAMP'2025-11-10 17:20:13')) (cost=...)
|
|
908
|
+
-> Table scan on delayed_jobs (cost=...)
|
|
909
|
+
SNAP
|
|
910
|
+
|
|
911
|
+
snapshots["runs the expected mysql2 query for workable_count 1"] = <<-SNAP
|
|
912
|
+
SELECT COUNT(*) AS count_all, CASE WHEN priority >= 0
|
|
913
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
914
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
915
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END AS case_when_priority_0_and_priority_10_then_0_when_priority_10_an, `delayed_jobs`.`queue` AS delayed_jobs_queue
|
|
916
|
+
FROM `delayed_jobs`
|
|
917
|
+
WHERE (`delayed_jobs`.`locked_at` IS NULL
|
|
918
|
+
OR `delayed_jobs`.`locked_at` < '2025-11-10 16:59:43')
|
|
919
|
+
AND `delayed_jobs`.`failed_at` IS NULL
|
|
920
|
+
AND `delayed_jobs`.`run_at` <= '2025-11-10 17:20:13'
|
|
921
|
+
GROUP BY CASE WHEN priority >= 0
|
|
922
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
923
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
924
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, `delayed_jobs`.`queue`
|
|
925
|
+
SNAP
|
|
926
|
+
|
|
927
|
+
snapshots["produces the expected mysql2 query plan for workable_count 1"] = <<-SNAP
|
|
928
|
+
-> Table scan on <temporary>
|
|
929
|
+
-> Aggregate using temporary table
|
|
930
|
+
-> Filter: (((delayed_jobs.locked_at is null) or (delayed_jobs.locked_at < TIMESTAMP'2025-11-10 16:59:43')) and (delayed_jobs.failed_at is null) and (delayed_jobs.run_at <= TIMESTAMP'2025-11-10 17:20:13')) (cost=...)
|
|
931
|
+
-> Covering index lookup on delayed_jobs using idx_delayed_jobs_live (failed_at = NULL) (cost=...)
|
|
932
|
+
SNAP
|
|
933
|
+
|
|
934
|
+
snapshots["[legacy index] produces the expected mysql2 query plan for workable_count 1"] = <<-SNAP
|
|
935
|
+
-> Table scan on <temporary>
|
|
936
|
+
-> Aggregate using temporary table
|
|
937
|
+
-> Filter: (((delayed_jobs.locked_at is null) or (delayed_jobs.locked_at < TIMESTAMP'2025-11-10 16:59:43')) and (delayed_jobs.failed_at is null) and (delayed_jobs.run_at <= TIMESTAMP'2025-11-10 17:20:13')) (cost=...)
|
|
938
|
+
-> Table scan on delayed_jobs (cost=...)
|
|
939
|
+
SNAP
|
|
940
|
+
|
|
941
|
+
snapshots["runs the expected mysql2 query for alert_age_percent 1"] = <<-SNAP
|
|
942
|
+
SELECT (CASE WHEN priority >= 0
|
|
943
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
944
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
945
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END) AS priority, queue, MIN(run_at) AS run_at
|
|
946
|
+
FROM `delayed_jobs`
|
|
947
|
+
WHERE (`delayed_jobs`.`locked_at` IS NULL
|
|
948
|
+
OR `delayed_jobs`.`locked_at` < '2025-11-10 16:59:43')
|
|
949
|
+
AND `delayed_jobs`.`failed_at` IS NULL
|
|
950
|
+
AND `delayed_jobs`.`run_at` <= '2025-11-10 17:20:13'
|
|
951
|
+
GROUP BY CASE WHEN priority >= 0
|
|
952
|
+
AND priority < 10 THEN 0 WHEN priority >= 10
|
|
953
|
+
AND priority < 20 THEN 10 WHEN priority >= 20
|
|
954
|
+
AND priority < 30 THEN 20 WHEN priority >= 30 THEN 30 END, `delayed_jobs`.`queue`
|
|
955
|
+
SNAP
|
|
956
|
+
|
|
957
|
+
snapshots["produces the expected mysql2 query plan for alert_age_percent 1"] = <<-SNAP
|
|
958
|
+
-> Table scan on <temporary>
|
|
959
|
+
-> Aggregate using temporary table
|
|
960
|
+
-> Filter: (((delayed_jobs.locked_at is null) or (delayed_jobs.locked_at < TIMESTAMP'2025-11-10 16:59:43')) and (delayed_jobs.failed_at is null) and (delayed_jobs.run_at <= TIMESTAMP'2025-11-10 17:20:13')) (cost=...)
|
|
961
|
+
-> Covering index lookup on delayed_jobs using idx_delayed_jobs_live (failed_at = NULL) (cost=...)
|
|
962
|
+
SNAP
|
|
963
|
+
|
|
964
|
+
snapshots["[legacy index] produces the expected mysql2 query plan for alert_age_percent 1"] = <<-SNAP
|
|
965
|
+
-> Table scan on <temporary>
|
|
966
|
+
-> Aggregate using temporary table
|
|
967
|
+
-> Filter: (((delayed_jobs.locked_at is null) or (delayed_jobs.locked_at < TIMESTAMP'2025-11-10 16:59:43')) and (delayed_jobs.failed_at is null) and (delayed_jobs.run_at <= TIMESTAMP'2025-11-10 17:20:13')) (cost=...)
|
|
968
|
+
-> Table scan on delayed_jobs (cost=...)
|
|
969
|
+
SNAP
|