fix(chart-filter): Avoid column denormalization if not enabled (#26199)
This commit is contained in:
parent
d2adc858cb
commit
05d7060d83
|
|
@ -115,9 +115,12 @@ class DatasourceRestApi(BaseSupersetApi):
|
|||
return self.response(403, message=ex.message)
|
||||
|
||||
row_limit = apply_max_row_limit(app.config["FILTER_SELECT_ROW_LIMIT"])
|
||||
denormalize_column = not datasource.normalize_columns
|
||||
try:
|
||||
payload = datasource.values_for_column(
|
||||
column_name=column_name, limit=row_limit
|
||||
column_name=column_name,
|
||||
limit=row_limit,
|
||||
denormalize_column=denormalize_column,
|
||||
)
|
||||
return self.response(200, result=payload)
|
||||
except KeyError:
|
||||
|
|
|
|||
|
|
@ -792,7 +792,7 @@ class ExploreMixin: # pylint: disable=too-many-public-methods
|
|||
self,
|
||||
template_processor: Optional[ # pylint: disable=unused-argument
|
||||
BaseTemplateProcessor
|
||||
] = None, # pylint: disable=unused-argument
|
||||
] = None,
|
||||
) -> TextClause:
|
||||
return self.fetch_values_predicate
|
||||
|
||||
|
|
@ -1340,14 +1340,19 @@ class ExploreMixin: # pylint: disable=too-many-public-methods
|
|||
)
|
||||
return and_(*l)
|
||||
|
||||
def values_for_column(self, column_name: str, limit: int = 10000) -> list[Any]:
|
||||
# always denormalize column name before querying for values
|
||||
def values_for_column(
|
||||
self, column_name: str, limit: int = 10000, denormalize_column: bool = False
|
||||
) -> list[Any]:
|
||||
# denormalize column name before querying for values
|
||||
# unless disabled in the dataset configuration
|
||||
db_dialect = self.database.get_dialect()
|
||||
denormalized_col_name = self.database.db_engine_spec.denormalize_name(
|
||||
db_dialect, column_name
|
||||
column_name_ = (
|
||||
self.database.db_engine_spec.denormalize_name(db_dialect, column_name)
|
||||
if denormalize_column
|
||||
else column_name
|
||||
)
|
||||
cols = {col.column_name: col for col in self.columns}
|
||||
target_col = cols[denormalized_col_name]
|
||||
target_col = cols[column_name_]
|
||||
tp = self.get_template_processor()
|
||||
tbl, cte = self.get_from_clause(tp)
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue