function fetch_runs_for_config($db, $config) {
$raw_runs = $db->query_and_fetch_all('
SELECT test_runs.*, builds.*, array_agg((commit_repository, commit_revision, commit_time)) AS revisions
- FROM builds LEFT OUTER JOIN build_commits ON commit_build = build_id
- LEFT OUTER JOIN commits ON build_commit = commit_id,
- (SELECT test_runs.*, array_agg((bug_tracker, bug_number)) AS bugs
- FROM test_runs LEFT OUTER JOIN bugs ON bug_run = run_id WHERE run_config = $1 GROUP BY run_id) as test_runs
- WHERE run_build = build_id
- GROUP BY run_id, run_config, run_build, run_mean_cache, run_iteration_count_cache,
- run_sum_cache, run_square_sum_cache, bugs, build_id', array($config['config_id']));
+ FROM builds
+ LEFT OUTER JOIN build_commits ON commit_build = build_id
+ LEFT OUTER JOIN commits ON build_commit = commit_id, test_runs
+ WHERE run_build = build_id AND run_config = $1
+ GROUP BY build_id, run_id', array($config['config_id']));
$formatted_runs = array();
if (!$raw_runs)
return $revisions;
}
-function parse_bugs_array($postgres_array) {
- // e.g. {"(1 /* Bugzilla */, 12345)","(2 /* Radar */, 67890)"}
- $outer_array = json_decode('[' . trim($postgres_array, '{}') . ']');
- $bugs = array();
- foreach ($outer_array as $item) {
- $raw_data = explode(',', trim($item, '()'));
- if (!$raw_data[0])
- continue;
- $bugs[trim($raw_data[0], '"')] = trim($raw_data[1], '"');
- }
- return $bugs;
-}
-
function format_run($run) {
return array(
'id' => intval($run['run_id']),
'sum' => floatval($run['run_sum_cache']),
'squareSum' => floatval($run['run_square_sum_cache']),
'revisions' => parse_revisions_array($run['revisions']),
- 'bugs' => parse_bugs_array($run['bugs']),
'buildTime' => strtotime($run['build_time']) * 1000,
'buildNumber' => intval($run['build_number']),
'builder' => $run['build_builder']);