Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
bugzilla
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Ivan Ivlev
bugzilla
Commits
dddef33e
You need to sign in or sign up before continuing.
Commit
dddef33e
authored
Mar 01, 2011
by
Max Kanat-Alexander
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Bug 637426: Fix every boolean chart operator type for the bug_group search
field in Search.pm. (This also makes OR searches work against the bug_group field.) r=mkanat, a=mkanat
parent
86d6af69
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
11 additions
and
58 deletions
+11
-58
Search.pm
Bugzilla/Search.pm
+6
-27
Constants.pm
xt/lib/Bugzilla/Test/Search/Constants.pm
+5
-31
No files found.
Bugzilla/Search.pm
View file @
dddef33e
...
...
@@ -277,9 +277,7 @@ use constant OPERATOR_FIELD_OVERRIDE => {
blocked
=>
{
_non_changed
=>
\&
_blocked_nonchanged
,
},
bug_group
=>
{
_non_changed
=>
\&
_bug_group_nonchanged
,
},
bug_group
=>
MULTI_SELECT_OVERRIDE
,
classification
=>
{
_non_changed
=>
\&
_classification_nonchanged
,
},
...
...
@@ -2364,30 +2362,6 @@ sub _percentage_complete {
$self
->
_add_extra_column
(
'actual_time'
);
}
sub
_bug_group_nonchanged
{
my
(
$self
,
$args
)
=
@_
;
my
(
$chart_id
,
$joins
,
$field
)
=
@$args
{
qw(chart_id joins field)
};
my
$map_table
=
"bug_group_map_$chart_id"
;
push
(
@$joins
,
{
table
=>
'bug_group_map'
,
as
=>
$map_table
});
my
$groups_table
=
"groups_$chart_id"
;
my
$full_field
=
"$groups_table.name"
;
$args
->
{
full_field
}
=
$full_field
;
$self
->
_do_operator_function
(
$args
);
my
$term
=
$args
->
{
term
};
my
$groups_join
=
{
table
=>
'groups'
,
as
=>
$groups_table
,
from
=>
"$map_table.group_id"
,
to
=>
'id'
,
extra
=>
[
$term
],
};
push
(
@$joins
,
$groups_join
);
$args
->
{
term
}
=
"$full_field IS NOT NULL"
;
}
sub
_attach_data_thedata
{
my
(
$self
,
$args
)
=
@_
;
my
(
$chart_id
,
$joins
)
=
@$args
{
qw(chart_id joins)
};
...
...
@@ -2688,6 +2662,11 @@ sub _multiselect_table {
return
"bug_tag INNER JOIN tags ON bug_tag.tag_id = tags.id"
.
" AND user_id = "
.
$self
->
_user
->
id
;
}
elsif
(
$field
eq
'bug_group'
)
{
$args
->
{
full_field
}
=
'groups.name'
;
return
"bug_group_map INNER JOIN groups
ON bug_group_map.group_id = groups.id"
;
}
my
$table
=
"bug_$field"
;
$args
->
{
full_field
}
=
"bug_$field.value"
;
return
$table
;
...
...
xt/lib/Bugzilla/Test/Search/Constants.pm
View file @
dddef33e
...
...
@@ -198,12 +198,6 @@ use constant SUBSTR_NO_FIELD_ADD => FIELD_TYPE_DATETIME, qw(
# the bug you listed. It doesn't find bugs that fully lack values for
# the fields, as it should.
#
# cc "not" matches if any CC'ed user matches, and it fails to match
# if there are no CCs on the bug.
#
# bug_group notequals doesn't find bugs that fully lack groups,
# and matches if there is one group that isn't equal.
#
# bug_file_loc can be NULL, so it gets missed by the normal
# notequals search.
#
...
...
@@ -228,7 +222,6 @@ use constant NEGATIVE_BROKEN => (
'attachments.mimetype'
=>
{
contains
=>
[
5
]
},
blocked
=>
{
contains
=>
[
3
,
4
,
5
]
},
bug_file_loc
=>
{
contains
=>
[
5
]
},
bug_group
=>
{
contains
=>
[
1
,
5
]
},
deadline
=>
{
contains
=>
[
5
]
},
dependson
=>
{
contains
=>
[
2
,
4
,
5
]
},
longdesc
=>
{
contains
=>
[
1
]
},
...
...
@@ -245,13 +238,12 @@ use constant NEGATIVE_BROKEN => (
# As with other fields, longdescs greaterthan matches if any comment
# matches (which might be OK).
#
# Same for keywords,
bug_group,
and cc. Logically, all of these might
# Same for keywords, and cc. Logically, all of these might
# be OK, but it makes the operation not the logical reverse of
# lessthaneq. What we're really saying here by marking these broken
# is that there ought to be some way of searching "all ccs" vs "any cc"
# (and same for the other fields).
use
constant
GREATERTHAN_BROKEN
=>
(
bug_group
=>
{
contains
=>
[
1
]
},
cc
=>
{
contains
=>
[
1
]
},
longdesc
=>
{
contains
=>
[
1
]
},
);
...
...
@@ -260,9 +252,8 @@ use constant GREATERTHAN_BROKEN => (
#
# allwordssubstr on longdescs fields matches against a single comment,
# instead of matching against all comments on a bug. Same is true
# for cc
and bug_group
.
# for cc.
use
constant
ALLWORDS_BROKEN
=>
(
bug_group
=>
{
contains
=>
[
1
]
},
cc
=>
{
contains
=>
[
1
]
},
longdesc
=>
{
contains
=>
[
1
]
},
);
...
...
@@ -270,15 +261,14 @@ use constant ALLWORDS_BROKEN => (
# nowords and nowordssubstr have these broken tests in common.
#
# flagtypes.name doesn't match bugs without flags.
# longdescs.isprivate
, and bug_group actually work
properly in
# longdescs.isprivate
actually works
properly in
# terms of excluding bug 1 (since we exclude all values in the search,
# on our test), but still fail at including bug 5.
# on our test), but still fail
s
at including bug 5.
# The longdesc* fields, coincidentally, work completely
# correctly, possibly because there's only one comment on bug 5.
use
constant
NOWORDS_BROKEN
=>
(
NEGATIVE_BROKEN
,
'flagtypes.name'
=>
{
contains
=>
[
5
]
},
bug_group
=>
{
contains
=>
[
5
]
},
longdesc
=>
{},
'longdescs.isprivate'
=>
{},
);
...
...
@@ -497,7 +487,6 @@ use constant CHANGED_FROM_TO_BROKEN_NOT => (
# Common broken tests for the "not" or "no" operators.
use
constant
NEGATIVE_BROKEN_NOT
=>
(
"blocked"
=>
{
contains
=>
[
3
,
4
,
5
]
},
"bug_group"
=>
{
contains
=>
[
5
]
},
"dependson"
=>
{
contains
=>
[
2
,
4
,
5
]
},
"flagtypes.name"
=>
{
contains
=>
[
1
..
5
]
},
);
...
...
@@ -507,13 +496,11 @@ use constant BROKEN_NOT => {
allwords
=>
{
COMMON_BROKEN_NOT
,
cc
=>
{
contains
=>
[
1
]
},
bug_group
=>
{
contains
=>
[
1
]
},
"flagtypes.name"
=>
{
contains
=>
[
1
,
5
]
},
longdesc
=>
{
contains
=>
[
1
]
},
},
'allwords-<1> <2>'
=>
{
'attach_data.thedata'
=>
{
contains
=>
[
5
]
},
bug_group
=>
{
},
cc
=>
{
},
'flagtypes.name'
=>
{
contains
=>
[
5
]
},
'longdesc'
=>
{
},
...
...
@@ -521,12 +508,10 @@ use constant BROKEN_NOT => {
},
allwordssubstr
=>
{
COMMON_BROKEN_NOT
,
bug_group
=>
{
contains
=>
[
1
]
},
cc
=>
{
contains
=>
[
1
]
},
longdesc
=>
{
contains
=>
[
1
]
},
},
'allwordssubstr-<1>,<2>'
=>
{
bug_group
=>
{
},
cc
=>
{
},
"longdesc"
=>
{
},
"longdescs.isprivate"
=>
{
},
...
...
@@ -536,9 +521,6 @@ use constant BROKEN_NOT => {
"flagtypes.name"
=>
{
contains
=>
[
1
,
2
,
5
]
},
"longdesc"
=>
{
contains
=>
[
1
,
2
]
},
},
'anyexact-<1>, <2>'
=>
{
bug_group
=>
{
contains
=>
[
1
]
},
},
anywords
=>
{
COMMON_BROKEN_NOT
,
},
...
...
@@ -550,11 +532,9 @@ use constant BROKEN_NOT => {
},
casesubstring
=>
{
COMMON_BROKEN_NOT
,
bug_group
=>
{
contains
=>
[
1
]
},
longdesc
=>
{
contains
=>
[
1
]
},
},
'casesubstring-<1>-lc'
=>
{
bug_group
=>
{
},
longdesc
=>
{
},
},
changedafter
=>
{
...
...
@@ -593,7 +573,6 @@ use constant BROKEN_NOT => {
},
equals
=>
{
COMMON_BROKEN_NOT
,
bug_group
=>
{
contains
=>
[
1
]
},
"flagtypes.name"
=>
{
contains
=>
[
1
,
5
]
},
longdesc
=>
{
contains
=>
[
1
]
},
},
...
...
@@ -611,12 +590,8 @@ use constant BROKEN_NOT => {
longdesc
=>
{
contains
=>
[
1
]
},
'longdescs.isprivate'
=>
{
},
},
'lessthan-2'
=>
{
bug_group
=>
{
contains
=>
[
1
]
},
},
lessthaneq
=>
{
COMMON_BROKEN_NOT
,
bug_group
=>
{
contains
=>
[
1
]
},
longdesc
=>
{
contains
=>
[
1
]
},
'longdescs.isprivate'
=>
{
},
},
...
...
@@ -634,7 +609,6 @@ use constant BROKEN_NOT => {
},
regexp
=>
{
COMMON_BROKEN_NOT
,
bug_group
=>
{
contains
=>
[
1
]
},
"flagtypes.name"
=>
{
contains
=>
[
1
,
5
]
},
longdesc
=>
{
contains
=>
[
1
]
},
},
...
...
@@ -643,7 +617,6 @@ use constant BROKEN_NOT => {
},
substring
=>
{
COMMON_BROKEN_NOT
,
bug_group
=>
{
contains
=>
[
1
]
},
longdesc
=>
{
contains
=>
[
1
]
},
},
};
...
...
@@ -697,6 +670,7 @@ use constant GREATERTHAN_OVERRIDE => (
classification
=>
{
contains
=>
[
2
,
3
,
4
,
5
]
},
assigned_to
=>
{
contains
=>
[
2
,
3
,
4
,
5
]
},
bug_id
=>
{
contains
=>
[
2
,
3
,
4
,
5
]
},
bug_group
=>
{
contains
=>
[
1
,
2
,
3
,
4
]
},
bug_severity
=>
{
contains
=>
[
2
,
3
,
4
,
5
]
},
bug_status
=>
{
contains
=>
[
2
,
3
,
4
,
5
]
},
component
=>
{
contains
=>
[
2
,
3
,
4
,
5
]
},
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment