44SELECT
55 COUNT (DISTINCT run .id )::bigint AS run_count,
66 COUNT (job .id )::bigint AS job_count,
7- COALESCE(SUM (EXTRACT(EPOCH FROM (job .completed_at - job .started_at ))) FILTER (
7+ COALESCE(SUM (LEAST(
8+ GREATEST(EXTRACT(EPOCH FROM (job .completed_at - job .started_at )), 0 ),
9+ job .timeout_minutes ::double precision * 60 .0
10+ )) FILTER (
811 WHERE job .started_at IS NOT NULL AND job .completed_at IS NOT NULL
912 ), 0 )::bigint AS completed_job_seconds
1013FROM workflow_runs run
@@ -18,7 +21,10 @@ SELECT
1821 COALESCE(NULLIF(run .workflow_name , ' ' ), run .workflow_file )::text AS workflow_name,
1922 COUNT (DISTINCT run .id )::bigint AS run_count,
2023 COUNT (job .id )::bigint AS job_count,
21- COALESCE(SUM (EXTRACT(EPOCH FROM (job .completed_at - job .started_at ))) FILTER (
24+ COALESCE(SUM (LEAST(
25+ GREATEST(EXTRACT(EPOCH FROM (job .completed_at - job .started_at )), 0 ),
26+ job .timeout_minutes ::double precision * 60 .0
27+ )) FILTER (
2228 WHERE job .started_at IS NOT NULL AND job .completed_at IS NOT NULL
2329 ), 0 )::bigint AS completed_job_seconds
2430FROM workflow_runs run
@@ -31,7 +37,10 @@ LIMIT $3;
3137
3238-- name: GetActionsPerformanceSummaryForRepo :one
3339SELECT
34- COALESCE(AVG (EXTRACT(EPOCH FROM (job .completed_at - job .started_at ))) FILTER (
40+ COALESCE(AVG (LEAST(
41+ GREATEST(EXTRACT(EPOCH FROM (job .completed_at - job .started_at )), 0 ),
42+ job .timeout_minutes ::double precision * 60 .0
43+ )) FILTER (
3544 WHERE job .started_at IS NOT NULL AND job .completed_at IS NOT NULL
3645 ), 0 )::double precision AS avg_job_seconds,
3746 COALESCE(AVG (EXTRACT(EPOCH FROM (job .started_at - job .created_at ))) FILTER (
@@ -45,7 +54,10 @@ SELECT
4554 AND job .conclusion IS NOT NULL
4655 AND job .conclusion <> ' success'
4756 )::bigint AS failed_job_count,
48- COALESCE(SUM (EXTRACT(EPOCH FROM (job .completed_at - job .started_at ))) FILTER (
57+ COALESCE(SUM (LEAST(
58+ GREATEST(EXTRACT(EPOCH FROM (job .completed_at - job .started_at )), 0 ),
59+ job .timeout_minutes ::double precision * 60 .0
60+ )) FILTER (
4961 WHERE job .started_at IS NOT NULL
5062 AND job .completed_at IS NOT NULL
5163 AND job .conclusion IS NOT NULL
@@ -62,7 +74,10 @@ SELECT
6274 COALESCE(NULLIF(run .workflow_name , ' ' ), run .workflow_file )::text AS workflow_name,
6375 COUNT (DISTINCT run .id )::bigint AS run_count,
6476 COUNT (job .id )::bigint AS job_count,
65- COALESCE(AVG (EXTRACT(EPOCH FROM (job .completed_at - job .started_at ))) FILTER (
77+ COALESCE(AVG (LEAST(
78+ GREATEST(EXTRACT(EPOCH FROM (job .completed_at - job .started_at )), 0 ),
79+ job .timeout_minutes ::double precision * 60 .0
80+ )) FILTER (
6681 WHERE job .started_at IS NOT NULL AND job .completed_at IS NOT NULL
6782 ), 0 )::double precision AS avg_job_seconds,
6883 COALESCE(AVG (EXTRACT(EPOCH FROM (job .started_at - job .created_at ))) FILTER (
0 commit comments