Compare commits

...

1 Commits

Author SHA1 Message Date
Evan
f342aebe2a fix(db_engine_specs): map var_string to STRING for MySQL/StarRocks
The MySQL and StarRocks column type mappings did not recognize the
`var_string` native type (returned for varchar-backed columns), so
these columns fell through unmatched and were not classified as
GenericDataType.STRING. As a result, controls that gate on column
type (e.g. the "Force categorical" / y-axis sort control) were
incorrectly hidden for such columns.

Add a `^var_string` regex mapping resolving to GenericDataType.STRING
in both engine specs, matching the workaround confirmed by the issue
reporter, plus regression cases in the parameterized column-spec tests.

Fixes #30282

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-07 16:39:05 -07:00
4 changed files with 12 additions and 0 deletions

View File

@@ -238,6 +238,11 @@ class MySQLEngineSpec(BasicParametersMixin, BaseEngineSpec):
LONGTEXT(),
GenericDataType.STRING,
),
(
re.compile(r"^var_string", re.IGNORECASE),
types.VARCHAR(),
GenericDataType.STRING,
),
)
column_type_mutators: dict[types.TypeEngine, Callable[[Any], Any]] = {
DECIMAL: lambda val: Decimal(val) if isinstance(val, str) else val

View File

@@ -238,6 +238,11 @@ class StarRocksEngineSpec(MySQLEngineSpec):
(re.compile(r"^array.*", re.IGNORECASE), ARRAY(), GenericDataType.STRING),
(re.compile(r"^map.*", re.IGNORECASE), MAP(), GenericDataType.STRING),
(re.compile(r"^struct.*", re.IGNORECASE), STRUCT(), GenericDataType.STRING),
(
re.compile(r"^var_string", re.IGNORECASE),
types.VARCHAR(),
GenericDataType.STRING,
),
)
custom_errors: dict[Pattern[str], tuple[str, SupersetErrorType, dict[str, Any]]] = {

View File

@@ -65,6 +65,7 @@ from tests.unit_tests.fixtures.common import dttm # noqa: F401
("TINYTEXT", TINYTEXT, None, GenericDataType.STRING, False),
("MEDIUMTEXT", MEDIUMTEXT, None, GenericDataType.STRING, False),
("LONGTEXT", LONGTEXT, None, GenericDataType.STRING, False),
("var_string", types.VARCHAR, None, GenericDataType.STRING, False),
# Temporal
("DATE", types.Date, None, GenericDataType.TEMPORAL, True),
("DATETIME", types.DateTime, None, GenericDataType.TEMPORAL, True),

View File

@@ -50,6 +50,7 @@ from tests.unit_tests.db_engine_specs.utils import assert_column_spec
("char(10)", types.CHAR, None, GenericDataType.STRING, False),
("varchar(65533)", types.VARCHAR, None, GenericDataType.STRING, False),
("binary", types.String, None, GenericDataType.STRING, False),
("var_string", types.VARCHAR, None, GenericDataType.STRING, False),
# Complex type
("array<varchar(65533)>", ARRAY, None, GenericDataType.STRING, False),
("map<string,int>", MAP, None, GenericDataType.STRING, False),