You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2026/07/13 22:58:41 UTC
(superset) branch master updated: test(sqla): assert simple metric quotes columns requiring quoting (#30637) (#41961)
This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new 2857b29ab97 test(sqla): assert simple metric quotes columns requiring quoting (#30637) (#41961)
2857b29ab97 is described below
commit 2857b29ab97482292a654adec1af74bdc1a4e25d
Author: Evan Rusackas <ev...@preset.io>
AuthorDate: Mon Jul 13 15:58:34 2026 -0700
test(sqla): assert simple metric quotes columns requiring quoting (#30637) (#41961)
Co-authored-by: Claude Code <no...@anthropic.com>
---
tests/unit_tests/models/helpers_test.py | 48 +++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/tests/unit_tests/models/helpers_test.py b/tests/unit_tests/models/helpers_test.py
index 2e3736f18d5..05b5e7a54bc 100644
--- a/tests/unit_tests/models/helpers_test.py
+++ b/tests/unit_tests/models/helpers_test.py
@@ -3672,3 +3672,51 @@ def test_temporal_non_numeric_string_filter_is_not_coerced() -> None:
)
assert value == "2025-12-20"
+
+
+def test_simple_metric_quotes_column_requiring_quoting(database: Database) -> None:
+ """
+ Regression for #30637: a SIMPLE adhoc metric that aggregates a column whose
+ name requires identifier quoting (e.g. it contains a space) must render the
+ column with the dialect's quote characters, otherwise the emitted SQL is
+ invalid for dialects that need quoting.
+
+ This exercises the metric compilation path named in the issue
+ (``adhoc_metric_to_sqla`` -> ``TableColumn.get_sqla_col`` -> ``column()``),
+ asserting the identifier is quoted rather than emitted bare.
+ """
+ from superset.connectors.sqla.models import SqlaTable, TableColumn
+
+ column_name = "Amount HT"
+ table = SqlaTable(
+ database=database,
+ schema=None,
+ table_name="test_table",
+ columns=[TableColumn(column_name=column_name, type="INTEGER")],
+ )
+ columns_by_name = {col.column_name: col for col in table.columns}
+
+ metric: AdhocMetric = {
+ "expressionType": "SIMPLE",
+ "aggregate": "SUM",
+ "column": {"column_name": column_name},
+ "label": "total",
+ }
+
+ sqla_metric = table.adhoc_metric_to_sqla(metric, columns_by_name)
+
+ with database.get_sqla_engine() as engine:
+ dialect = engine.dialect
+
+ rendered = str(
+ sqla_metric.compile(dialect=dialect, compile_kwargs={"literal_binds": True})
+ )
+
+ # The spaced identifier must be quoted (double quotes for the SQLite/ANSI
+ # dialect used here) and must never appear bare.
+ assert f'"{column_name}"' in rendered, (
+ f"Expected quoted identifier in rendered metric SQL, got: {rendered}"
+ )
+ assert f"SUM({column_name})" not in rendered, (
+ f"Column requiring quoting was emitted unquoted: {rendered}"
+ )