# HG changeset patch # User Vincent Tondellier # Date 1455477325 -3600 # Node ID c5fcb00c7261dd7000689672331eaf226408514b # Parent 31013a09b4838fcb10c21867c570cf79ad5bbd2b Use LEFT JOIN to use PostgreSQL join removal when possible diff -r 31013a09b483 -r c5fcb00c7261 lib/CrashTest/Plugin/Storage/Sql/Model/CrashGroup.pm --- a/lib/CrashTest/Plugin/Storage/Sql/Model/CrashGroup.pm Sun Feb 14 20:12:49 2016 +0100 +++ b/lib/CrashTest/Plugin/Storage/Sql/Model/CrashGroup.pm Sun Feb 14 20:15:25 2016 +0100 @@ -61,8 +61,8 @@ my $count = $self->db->query(" SELECT count(distinct(crash_group_id)) AS total FROM crash_reports - JOIN crash_users AS crash_user ON crash_reports.crash_user_id = crash_user.id - JOIN products AS product ON crash_reports.product_id = product.id + LEFT JOIN crash_users AS crash_user ON crash_reports.crash_user_id = crash_user.id + LEFT JOIN products AS product ON crash_reports.product_id = product.id JOIN crash_groups AS crash_group ON crash_reports.crash_group_id = crash_group.id $where ", @values)->hash; @@ -79,10 +79,11 @@ min(version) AS first_version, max(version) AS last_version, string_agg(distinct(name), ', ') AS product_names, + string_agg(distinct(main_module), ', ') AS program_names, count(*) AS crash_count FROM crash_reports - JOIN crash_users AS crash_user ON crash_reports.crash_user_id = crash_user.id - JOIN products AS product ON crash_reports.product_id = product.id + LEFT JOIN crash_users AS crash_user ON crash_reports.crash_user_id = crash_user.id + LEFT JOIN products AS product ON crash_reports.product_id = product.id JOIN crash_groups AS crash_group ON crash_reports.crash_group_id = crash_group.id $where GROUP BY crash_group_id ) AS group_by_count diff -r 31013a09b483 -r c5fcb00c7261 lib/CrashTest/Plugin/Storage/Sql/Model/CrashReport.pm --- a/lib/CrashTest/Plugin/Storage/Sql/Model/CrashReport.pm Sun Feb 14 20:12:49 2016 +0100 +++ b/lib/CrashTest/Plugin/Storage/Sql/Model/CrashReport.pm Sun Feb 14 20:15:25 2016 +0100 @@ -65,9 +65,9 @@ my $count = $self->db->query(" SELECT count(crash_reports.id) AS total FROM crash_reports - JOIN crash_users AS crash_user ON crash_reports.crash_user_id = crash_user.id - JOIN products AS product ON crash_reports.product_id = product.id - JOIN crash_groups AS crash_group ON crash_reports.crash_group_id = crash_group.id + LEFT JOIN crash_users AS crash_user ON crash_reports.crash_user_id = crash_user.id + LEFT JOIN products AS product ON crash_reports.product_id = product.id + LEFT JOIN crash_groups AS crash_group ON crash_reports.crash_group_id = crash_group.id $where ", @values)->hash; @@ -88,9 +88,9 @@ crash_user.os AS u_os, crash_user.cpu_arch AS u_cpu_arch, crash_user.cpu_count AS u_cpu_count, crash_user.extra_info AS u_extra_info, $extra_columns FROM crash_reports - JOIN crash_users AS crash_user ON crash_reports.crash_user_id = crash_user.id - JOIN products AS product ON crash_reports.product_id = product.id - JOIN crash_groups AS crash_group ON crash_reports.crash_group_id = crash_group.id + LEFT JOIN crash_users AS crash_user ON crash_reports.crash_user_id = crash_user.id + LEFT JOIN products AS product ON crash_reports.product_id = product.id + LEFT JOIN crash_groups AS crash_group ON crash_reports.crash_group_id = crash_group.id $where ORDER BY crash_time DESC OFFSET (?) ROWS