Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revert "Make select_star work with SQL Lab views (#8598)" #8930

Merged
merged 1 commit into from Jan 6, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 1 addition & 5 deletions superset/connectors/sqla/models.py
Expand Up @@ -530,11 +530,7 @@ def select_star(self) -> str:
# show_cols and latest_partition set to false to avoid
# the expensive cost of inspecting the DB
return self.database.select_star(
self.table_name,
sql=self.sql,
schema=self.schema,
show_cols=False,
latest_partition=False,
self.table_name, schema=self.schema, show_cols=False, latest_partition=False
)

@property
Expand Down
27 changes: 11 additions & 16 deletions superset/db_engine_specs/base.py
Expand Up @@ -611,7 +611,6 @@ def select_star( # pylint: disable=too-many-arguments,too-many-locals
database,
table_name: str,
engine: Engine,
sql: Optional[str] = None,
schema: Optional[str] = None,
limit: int = 100,
show_cols: bool = False,
Expand All @@ -624,7 +623,6 @@ def select_star( # pylint: disable=too-many-arguments,too-many-locals

:param database: Database instance
:param table_name: Table name
:param sql: SQL defining a subselect
:param engine: SqlALchemy Engine instance
:param schema: Schema
:param limit: limit to impose on query
Expand All @@ -634,23 +632,20 @@ def select_star( # pylint: disable=too-many-arguments,too-many-locals
:param cols: Columns to include in query
:return: SQL query
"""
fields = "*"
cols = cols or []
if (show_cols or latest_partition) and not cols:
cols = database.get_columns(table_name, schema)

if show_cols:
fields = cls._get_fields(cols)
quote = engine.dialect.identifier_preparer.quote
if schema:
full_table_name = quote(schema) + "." + quote(table_name)
else:
full_table_name = quote(table_name)

if sql is not None:
subselect = f"(\n{sql}\n) AS {quote(table_name)}"
qry = select("*").select_from(text(subselect))
else:
fields = "*"
cols = cols or []
if (show_cols or latest_partition) and not cols:
cols = database.get_columns(table_name, schema)
if show_cols:
fields = cls._get_fields(cols)
qry = select(fields).select_from(text(full_table_name))
qry = select(fields).select_from(text(full_table_name))

if limit:
qry = qry.limit(limit)
Expand All @@ -660,10 +655,10 @@ def select_star( # pylint: disable=too-many-arguments,too-many-locals
)
if partition_query is not None:
qry = partition_query
select_star_query = database.compile_sqla_query(qry)
sql = database.compile_sqla_query(qry)
if indent:
select_star_query = sqlparse.format(select_star_query, reindent=True)
return select_star_query
sql = sqlparse.format(sql, reindent=True)
return sql

@classmethod
def estimate_statement_cost(
Expand Down
2 changes: 0 additions & 2 deletions superset/db_engine_specs/hive.py
Expand Up @@ -354,7 +354,6 @@ def select_star( # pylint: disable=too-many-arguments
database,
table_name: str,
engine: Engine,
sql: Optional[str] = None,
schema: str = None,
limit: int = 100,
show_cols: bool = False,
Expand All @@ -368,7 +367,6 @@ def select_star( # pylint: disable=too-many-arguments
database,
table_name,
engine,
sql,
schema,
limit,
show_cols,
Expand Down
2 changes: 0 additions & 2 deletions superset/db_engine_specs/presto.py
Expand Up @@ -394,7 +394,6 @@ def select_star( # pylint: disable=too-many-arguments
database,
table_name: str,
engine: Engine,
sql: Optional[str] = None,
schema: str = None,
limit: int = 100,
show_cols: bool = False,
Expand All @@ -418,7 +417,6 @@ def select_star( # pylint: disable=too-many-arguments
database,
table_name,
engine,
sql,
schema,
limit,
show_cols,
Expand Down
2 changes: 0 additions & 2 deletions superset/models/core.py
Expand Up @@ -383,7 +383,6 @@ def compile_sqla_query(self, qry: Select, schema: Optional[str] = None) -> str:
def select_star( # pylint: disable=too-many-arguments
self,
table_name: str,
sql: Optional[str] = None,
schema: Optional[str] = None,
limit: int = 100,
show_cols: bool = False,
Expand All @@ -398,7 +397,6 @@ def select_star( # pylint: disable=too-many-arguments
return self.db_engine_spec.select_star(
self,
table_name,
sql=sql,
schema=schema,
engine=eng,
limit=limit,
Expand Down