diff --git a/superset/models/sql_lab.py b/superset/models/sql_lab.py index 04d5fc9a94..74c43718ef 100644 --- a/superset/models/sql_lab.py +++ b/superset/models/sql_lab.py @@ -166,6 +166,10 @@ class Query(Model, ExtraJSONMixin): def sql_tables(self) -> List[Table]: return list(ParsedQuery(self.sql).tables) + @property + def columns(self) -> List[Table]: + return self.extra.get("columns", []) + def raise_for_access(self) -> None: """ Raise an exception if the user cannot access the resource. diff --git a/superset/views/core.py b/superset/views/core.py index 12b04dd706..f65385fc30 100755 --- a/superset/views/core.py +++ b/superset/views/core.py @@ -889,11 +889,10 @@ class Superset(BaseSupersetView): # pylint: disable=too-many-public-methods except (SupersetException, SQLAlchemyError): datasource_data = dummy_datasource_data - columns: List[Dict[str, Any]] = [] if datasource: datasource_data["owners"] = datasource.owners_data if isinstance(datasource, Query): - columns = datasource.extra.get("columns", []) + datasource_data["columns"] = datasource.columns bootstrap_data = { "can_add": slice_add_perm, @@ -908,7 +907,6 @@ class Superset(BaseSupersetView): # pylint: disable=too-many-public-methods "user": bootstrap_user_data(g.user, include_perms=True), "forced_height": request.args.get("height"), "common": common_bootstrap_payload(), - "columns": columns, } if slc: title = slc.slice_name