From 196a0c871b97ae5e0e1d49c773d2e96b752d2ddb Mon Sep 17 00:00:00 2001 From: nikkikapadia Date: Fri, 25 Jul 2025 16:29:29 -0400 Subject: [PATCH 1/4] check aggregates and columns fields in the case that fields is empty --- src/sentry/discover/compare_tables.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/sentry/discover/compare_tables.py b/src/sentry/discover/compare_tables.py index a5dee8e6b89db8..3e51684f3bc2bf 100644 --- a/src/sentry/discover/compare_tables.py +++ b/src/sentry/discover/compare_tables.py @@ -150,7 +150,12 @@ def compare_tables_for_dashboard_widget_queries( "query": None, } - fields = widget_query.fields + aggregates = widget_query.aggregates + columns = widget_query.columns + query_fields = widget_query.fields + + fields = list(set(aggregates + columns + query_fields)) + if len(fields) == 0: with sentry_sdk.isolation_scope() as scope: scope.set_tag("passed", False) From 2bac2c26dcdd4d0165b53fb87f6b8f17aa010f13 Mon Sep 17 00:00:00 2001 From: nikkikapadia Date: Mon, 28 Jul 2025 10:41:49 -0400 Subject: [PATCH 2/4] fix backend typing error --- src/sentry/discover/compare_tables.py | 9 +++++++- tests/sentry/discover/test_compare_tables.py | 22 ++++++++++++++++++++ 2 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/sentry/discover/compare_tables.py b/src/sentry/discover/compare_tables.py index 3e51684f3bc2bf..8ced3e464c0826 100644 --- a/src/sentry/discover/compare_tables.py +++ b/src/sentry/discover/compare_tables.py @@ -154,7 +154,14 @@ def compare_tables_for_dashboard_widget_queries( columns = widget_query.columns query_fields = widget_query.fields - fields = list(set(aggregates + columns + query_fields)) + fields = set() + + if aggregates: + fields.update(aggregates) + if columns: + fields.update(columns) + if query_fields: + fields.update(query_fields) if len(fields) == 0: with sentry_sdk.isolation_scope() as scope: diff --git a/tests/sentry/discover/test_compare_tables.py b/tests/sentry/discover/test_compare_tables.py index 7c25e71a3c42bf..4e43d245e4574d 100644 --- a/tests/sentry/discover/test_compare_tables.py +++ b/tests/sentry/discover/test_compare_tables.py @@ -358,3 +358,25 @@ def test_compare_widget_query_with_no_metrics_data(self) -> None: comparison_result = compare_tables_for_dashboard_widget_queries(widget_query) assert comparison_result["passed"] is True + + def test_compare_widget_query_with_no_fields(self) -> None: + widget = DashboardWidget.objects.create( + dashboard=self.dashboard, + title="Test No Fields Widget", + order=1, + display_type=DashboardWidgetDisplayTypes.TABLE, + widget_type=DashboardWidgetTypes.TRANSACTION_LIKE, + ) + + widget_query = DashboardWidgetQuery.objects.create( + widget=widget, + name="", + order=0, + conditions="", + aggregates=["count()"], + columns=[], + fields=[], + ) + + comparison_result = compare_tables_for_dashboard_widget_queries(widget_query) + assert comparison_result["passed"] is True From 5e0740c21f16964b344fe8a0f82a88305be9f509 Mon Sep 17 00:00:00 2001 From: nikkikapadia Date: Mon, 28 Jul 2025 10:54:42 -0400 Subject: [PATCH 3/4] change fields from set back to list --- src/sentry/discover/compare_tables.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/sentry/discover/compare_tables.py b/src/sentry/discover/compare_tables.py index 8ced3e464c0826..277a513577c094 100644 --- a/src/sentry/discover/compare_tables.py +++ b/src/sentry/discover/compare_tables.py @@ -163,6 +163,8 @@ def compare_tables_for_dashboard_widget_queries( if query_fields: fields.update(query_fields) + fields = list(fields) + if len(fields) == 0: with sentry_sdk.isolation_scope() as scope: scope.set_tag("passed", False) From f76471b3311b4e42bfa4ead88766e952542cebdb Mon Sep 17 00:00:00 2001 From: nikkikapadia Date: Mon, 28 Jul 2025 11:04:23 -0400 Subject: [PATCH 4/4] change set logic again --- src/sentry/discover/compare_tables.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/sentry/discover/compare_tables.py b/src/sentry/discover/compare_tables.py index 277a513577c094..f8c4c7ec46fb36 100644 --- a/src/sentry/discover/compare_tables.py +++ b/src/sentry/discover/compare_tables.py @@ -154,16 +154,16 @@ def compare_tables_for_dashboard_widget_queries( columns = widget_query.columns query_fields = widget_query.fields - fields = set() + fields_set = set() if aggregates: - fields.update(aggregates) + fields_set.update(aggregates) if columns: - fields.update(columns) + fields_set.update(columns) if query_fields: - fields.update(query_fields) + fields_set.update(query_fields) - fields = list(fields) + fields = list(fields_set) if len(fields) == 0: with sentry_sdk.isolation_scope() as scope: