Skip to content

Commit b1bc0bd

Browse files
authored
fix(dashboards): Release filter should apply conditions over base query (#71101)
When using OR filters, the previous application of filters would result in incorrect results. A OR B AND C is not the same as (A OR B) AND C, which is the proper way to apply the filter to the base query of a widget.
1 parent 1491155 commit b1bc0bd

File tree

5 files changed

+13
-8
lines changed

5 files changed

+13
-8
lines changed

static/app/components/modals/widgetViewerModal.spec.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ describe('Modals -> WidgetViewerModal', function () {
238238
query: expect.objectContaining({
239239
query:
240240
// The release was injected into the discover query
241-
'title:/organizations/:orgId/performance/summary/ release:"[email protected]" ',
241+
'(title:/organizations/:orgId/performance/summary/) release:"[email protected]" ',
242242
}),
243243
})
244244
);

static/app/views/dashboards/detail.spec.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,8 @@ describe('Dashboards > Detail', function () {
453453
'/organizations/org-slug/events-stats/',
454454
expect.objectContaining({
455455
query: expect.objectContaining({
456-
query: 'event.type:transaction transaction:/api/cats release:"[email protected]" ',
456+
query:
457+
'(event.type:transaction transaction:/api/cats) release:"[email protected]" ',
457458
}),
458459
})
459460
)

static/app/views/dashboards/widgetCard/genericWidgetQueries.tsx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -198,9 +198,13 @@ class GenericWidgetQueries<SeriesResponse, TableResponse> extends Component<
198198

199199
const dashboardFilterConditions = dashboardFiltersToString(dashboardFilters);
200200
widget.queries.forEach(query => {
201-
query.conditions =
202-
query.conditions +
203-
(dashboardFilterConditions === '' ? '' : ` ${dashboardFilterConditions}`);
201+
if (dashboardFilterConditions) {
202+
// If there is no base query, there's no need to add parens
203+
if (query.conditions) {
204+
query.conditions = `(${query.conditions})`;
205+
}
206+
query.conditions = query.conditions + ` ${dashboardFilterConditions}`;
207+
}
204208
});
205209
return widget;
206210
}

static/app/views/dashboards/widgetCard/issueWidgetQueries.spec.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ describe('IssueWidgetQueries', function () {
142142
expect.objectContaining({
143143
data: expect.objectContaining({
144144
query:
145-
'assigned_or_suggested:#visibility timesSeen:>100 release:["[email protected]","[email protected]"] ',
145+
'(assigned_or_suggested:#visibility timesSeen:>100) release:["[email protected]","[email protected]"] ',
146146
}),
147147
})
148148
);

static/app/views/dashboards/widgetCard/widgetQueries.spec.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ describe('Dashboards > WidgetQueries', function () {
142142
'/organizations/org-slug/events-stats/',
143143
expect.objectContaining({
144144
query: expect.objectContaining({
145-
query: 'event.type:error release:["[email protected]","[email protected]"] ',
145+
query: '(event.type:error) release:["[email protected]","[email protected]"] ',
146146
}),
147147
})
148148
);
@@ -170,7 +170,7 @@ describe('Dashboards > WidgetQueries', function () {
170170
'/organizations/org-slug/events/',
171171
expect.objectContaining({
172172
query: expect.objectContaining({
173-
query: 'event.type:error release:"[email protected]" ',
173+
query: '(event.type:error) release:"[email protected]" ',
174174
}),
175175
})
176176
);

0 commit comments

Comments
 (0)