Commit 8ef93208 authored by mkanat%kerio.com's avatar mkanat%kerio.com

Bug 289042: Implicit joins should be replaced by explicit joins - installment B

Patch By Max Kanat-Alexander <mkanat@bugzilla.org> r=LpSolit, r=joel, a=justdave
parent 8f788c28
......@@ -163,12 +163,16 @@ sub initBug {
reporter_accessible, cclist_accessible,
estimated_time, remaining_time, " .
$dbh->sql_date_format('deadline', '%Y-%m-%d') . "
FROM bugs LEFT JOIN votes using(bug_id),
classifications, products, components
WHERE bugs.bug_id = ?
AND classifications.id = products.classification_id
AND products.id = bugs.product_id
AND components.id = bugs.component_id " .
FROM bugs
LEFT JOIN votes
USING (bug_id)
INNER JOIN components
ON components.id = bugs.component_id
INNER JOIN products
ON products.id = bugs.product_id
INNER JOIN classifications
ON classifications.id = products.classification_id
WHERE bugs.bug_id = ? " .
$dbh->sql_group_by('bugs.bug_id', 'alias, products.classification_id,
classifications.name, bugs.product_id, products.name, version,
rep_platform, op_sys, bug_status, resolution, priority,
......
......@@ -112,9 +112,9 @@ my @base_columns =
Which database(s) is the data coming from?
Note: when adding tables to @base_tables, make sure to include the separator
(i.e. a comma or words like "LEFT OUTER JOIN") before the table name,
since tables take multiple separators based on the join type, and therefore
it is not possible to join them later using a single known separator.
(i.e. words like "LEFT OUTER JOIN") before the table name, since tables take
multiple separators based on the join type, and therefore it is not possible
to join them later using a single known separator.
B<Used by get, match, sqlify_criteria and perlify_record>
=back
......@@ -400,14 +400,16 @@ sub process {
# no longer valid.
my $flag_ids = $dbh->selectcol_arrayref(
"SELECT flags.id
FROM (flags INNER JOIN bugs ON flags.bug_id = bugs.bug_id)
LEFT OUTER JOIN flaginclusions i
ON (flags.type_id = i.type_id
FROM flags
INNER JOIN bugs
ON flags.bug_id = bugs.bug_id
LEFT JOIN flaginclusions AS i
ON flags.type_id = i.type_id
AND (bugs.product_id = i.product_id OR i.product_id IS NULL)
AND (bugs.component_id = i.component_id OR i.component_id IS NULL))
WHERE bugs.bug_id = ?
AND flags.is_active = 1
AND i.type_id IS NULL",
AND (bugs.component_id = i.component_id OR i.component_id IS NULL)
WHERE bugs.bug_id = ?
AND flags.is_active = 1
AND i.type_id IS NULL",
undef, $bug_id);
foreach my $flag_id (@$flag_ids) { clear($flag_id) }
......
......@@ -101,9 +101,9 @@ my @base_columns =
Which database(s) is the data coming from?
Note: when adding tables to @base_tables, make sure to include the separator
(i.e. a comma or words like C<LEFT OUTER JOIN>) before the table name,
since tables take multiple separators based on the join type, and therefore
it is not possible to join them later using a single known separator.
(i.e. words like "LEFT OUTER JOIN") before the table name, since tables take
multiple separators based on the join type, and therefore it is not possible
to join them later using a single known separator.
B<Used by get, match, sqlify_criteria and perlify_record>
=back
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment