From 1fbd42da2718b70bdfad267804c6270a87a820d9 Mon Sep 17 00:00:00 2001 From: hexcafe Date: Sun, 30 Jun 2024 13:51:25 -0700 Subject: [PATCH 1/2] fix the SQL label missing for non-group-by queries --- superset/models/helpers.py | 4 +++- tests/integration_tests/model_tests.py | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/superset/models/helpers.py b/superset/models/helpers.py index 7b211f98b11aa..b841426ff7172 100644 --- a/superset/models/helpers.py +++ b/superset/models/helpers.py @@ -1683,7 +1683,9 @@ def get_sqla_query( # pylint: disable=too-many-arguments,too-many-locals,too-ma select_exprs.append( self.convert_tbl_column_to_sqla_col( - columns_by_name[selected], template_processor=template_processor + columns_by_name[selected], + template_processor=template_processor, + label=_column_label, ) if isinstance(selected, str) and selected in columns_by_name else self.make_sqla_column_compatible( diff --git a/tests/integration_tests/model_tests.py b/tests/integration_tests/model_tests.py index 458168009be13..cc51ef2c2e62e 100644 --- a/tests/integration_tests/model_tests.py +++ b/tests/integration_tests/model_tests.py @@ -556,6 +556,29 @@ def test_query_with_non_existent_metrics(self): self.assertTrue("Metric 'invalid' does not exist", context.exception) + def test_query_label_without_group_by(self): + tbl = self.get_table(name="birth_names") + query_obj = dict( + groupby=[], + columns=[ + "gender", + { + "label": "Given Name", + "sqlExpression": "name", + "expressionType": "SQL", + }, + ], + filter=[], + is_timeseries=False, + granularity=None, + from_dttm=None, + to_dttm=None, + extras={}, + ) + + sql = tbl.get_query_str(query_obj) + self.assertIn('name AS "Given Name"', sql) + @pytest.mark.usefixtures("load_birth_names_dashboard_with_slices") def test_data_for_slices_with_no_query_context(self): tbl = self.get_table(name="birth_names") From 639518f234f3a34587ced6f6b5e3a356204cc146 Mon Sep 17 00:00:00 2001 From: hexcafe Date: Sun, 30 Jun 2024 14:09:45 -0700 Subject: [PATCH 2/2] fix test --- tests/integration_tests/model_tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/integration_tests/model_tests.py b/tests/integration_tests/model_tests.py index cc51ef2c2e62e..fb22f40fb2216 100644 --- a/tests/integration_tests/model_tests.py +++ b/tests/integration_tests/model_tests.py @@ -577,7 +577,7 @@ def test_query_label_without_group_by(self): ) sql = tbl.get_query_str(query_obj) - self.assertIn('name AS "Given Name"', sql) + self.assertRegex(sql, r'name AS ["`]?Given Name["`]?') @pytest.mark.usefixtures("load_birth_names_dashboard_with_slices") def test_data_for_slices_with_no_query_context(self):