diff --git a/superset/connectors/sqla/models.py b/superset/connectors/sqla/models.py index 24d1243b0a708..3407b76f47506 100644 --- a/superset/connectors/sqla/models.py +++ b/superset/connectors/sqla/models.py @@ -478,7 +478,7 @@ def select_star(self): # show_cols and latest_partition set to false to avoid # the expensive cost of inspecting the DB return self.database.select_star( - self.name, show_cols=False, latest_partition=False + self.table_name, schema=self.schema, show_cols=False, latest_partition=False ) def get_col(self, col_name): diff --git a/tests/model_tests.py b/tests/model_tests.py index 55926cfc0d454..f65db84c7661f 100644 --- a/tests/model_tests.py +++ b/tests/model_tests.py @@ -104,9 +104,9 @@ def test_database_impersonate_user(self): self.assertNotEquals(example_user, user_name) def test_select_star(self): - main_db = get_example_database() + db = get_example_database() table_name = "energy_usage" - sql = main_db.select_star(table_name, show_cols=False, latest_partition=False) + sql = db.select_star(table_name, show_cols=False, latest_partition=False) expected = textwrap.dedent( f"""\ SELECT * @@ -115,7 +115,7 @@ def test_select_star(self): ) assert sql.startswith(expected) - sql = main_db.select_star(table_name, show_cols=True, latest_partition=False) + sql = db.select_star(table_name, show_cols=True, latest_partition=False) expected = textwrap.dedent( f"""\ SELECT source, @@ -126,6 +126,28 @@ def test_select_star(self): ) assert sql.startswith(expected) + def test_select_star_fully_qualified_names(self): + db = get_example_database() + schema = "schema.name" + table_name = "table/name" + sql = db.select_star( + table_name, schema=schema, show_cols=False, latest_partition=False + ) + fully_qualified_names = { + "sqlite": '"schema.name"."table/name"', + "mysql": "`schema.name`.`table/name`", + "postgres": '"schema.name"."table/name"', + } + fully_qualified_name = fully_qualified_names.get(db.db_engine_spec.engine) + if fully_qualified_name: + expected = textwrap.dedent( + f"""\ + SELECT * + FROM {fully_qualified_name} + LIMIT 100""" + ) + assert sql.startswith(expected) + def test_single_statement(self): main_db = get_main_database()