Skip to content

Commit

Permalink
accept paren expressions with browser conditions
Browse files Browse the repository at this point in the history
  • Loading branch information
edwardgou-sentry committed Jan 8, 2025
1 parent e11152f commit 2b7ae6c
Showing 1 changed file with 14 additions and 7 deletions.
21 changes: 14 additions & 7 deletions src/sentry/search/events/datasets/metrics.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from snuba_sdk import Column, Condition, Function, Op, OrderBy

from sentry import features
from sentry.api.event_search import SearchFilter
from sentry.api.event_search import ParenExpression, SearchFilter, parse_search_query
from sentry.exceptions import IncompatibleMetricsQuery, InvalidSearchQuery
from sentry.search.events import constants, fields
from sentry.search.events.builder import metrics
Expand Down Expand Up @@ -1797,13 +1797,20 @@ def _resolve_total_score_weights_function(self, column: str, alias: str | None)
return Function("toFloat64", [self.total_score_weights[column]], alias)

# Construct query string without aggregate filters
parsed_terms = self.builder.parse_query(self.builder.query)
parsed_terms = [
term
parsed_terms = parse_search_query(self.builder.query)
query = " ".join(
term.to_query_string()
for term in parsed_terms
if isinstance(term, SearchFilter) and term.key.name == "browser.name"
]
query = " ".join([term.to_query_string() for term in parsed_terms])
if (isinstance(term, SearchFilter) and term.key.name == "browser.name")
or (
isinstance(term, ParenExpression)
and all(
(isinstance(child_term, SearchFilter) and child_term.key.name == "browser.name")
or child_term == "OR"
for child_term in term.children
)
)
)

total_query = metrics.MetricsQueryBuilder(
dataset=self.builder.dataset,
Expand Down

0 comments on commit 2b7ae6c

Please sign in to comment.