From f24ce4c7f375b3b7fc7e6c9f5db3e6265d3e4657 Mon Sep 17 00:00:00 2001 From: Yu Xiao Date: Mon, 20 Nov 2017 11:13:47 +0900 Subject: [PATCH 1/4] fix the schema-fetching problem for impala in sql_lab --- superset/db_engine_specs.py | 12 ++++++++++++ superset/models/core.py | 3 ++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/superset/db_engine_specs.py b/superset/db_engine_specs.py index 4b66fa1c33ae8..1a8bb31f27b9d 100644 --- a/superset/db_engine_specs.py +++ b/superset/db_engine_specs.py @@ -148,6 +148,11 @@ def adjust_database_uri(cls, uri, selected_schema): def patch(cls): pass + @classmethod + def get_schema_names(cls, inspector): + print("trying") + return sorted(inspector.get_schema_names()) + @classmethod def get_table_names(cls, schema, inspector): return sorted(inspector.get_table_names(schema)) @@ -1092,6 +1097,13 @@ def convert_dttm(cls, target_type, dttm): return "{}'".format(dttm.strftime('%Y-%m-%d')) return "'{}'".format(dttm.strftime('%Y-%m-%d %H:%M:%S')) + @classmethod + def get_schema_names(cls, inspector): + schemas = [row[0] for row in inspector.engine.execute('SHOW SCHEMAS') + if not row[0].startswith('_')] + return schemas + + engines = { o.engine: o for o in globals().values() diff --git a/superset/models/core.py b/superset/models/core.py index d2989d535e32f..c535ca5c56584 100644 --- a/superset/models/core.py +++ b/superset/models/core.py @@ -726,7 +726,8 @@ def all_view_names(self, schema=None, force=False): return views def all_schema_names(self): - return sorted(self.inspector.get_schema_names()) + schemas = sorted(self.db_engine_spec.get_schema_names(self.inspector)) + return schemas @property def db_engine_spec(self): From f34375ac73a7e04bd1f128e2a76693731cc6ee04 Mon Sep 17 00:00:00 2001 From: Yu Xiao Date: Mon, 20 Nov 2017 11:20:01 +0900 Subject: [PATCH 2/4] delete redundant print --- superset/db_engine_specs.py | 1 - 1 file changed, 1 deletion(-) diff --git a/superset/db_engine_specs.py b/superset/db_engine_specs.py index 1a8bb31f27b9d..95462646524da 100644 --- a/superset/db_engine_specs.py +++ b/superset/db_engine_specs.py @@ -150,7 +150,6 @@ def patch(cls): @classmethod def get_schema_names(cls, inspector): - print("trying") return sorted(inspector.get_schema_names()) @classmethod From 5d2a23ee09160965fac14bf8dea02345cd8f030d Mon Sep 17 00:00:00 2001 From: Yu Xiao Date: Mon, 20 Nov 2017 11:52:29 +0900 Subject: [PATCH 3/4] remove blank lines... --- superset/db_engine_specs.py | 1 - 1 file changed, 1 deletion(-) diff --git a/superset/db_engine_specs.py b/superset/db_engine_specs.py index 95462646524da..f5af99fe11a45 100644 --- a/superset/db_engine_specs.py +++ b/superset/db_engine_specs.py @@ -1103,7 +1103,6 @@ def get_schema_names(cls, inspector): return schemas - engines = { o.engine: o for o in globals().values() if inspect.isclass(o) and issubclass(o, BaseEngineSpec)} From 4cb43b43f4ea10409baa3d2eb1a44d04ae60d29f Mon Sep 17 00:00:00 2001 From: Yu Xiao Date: Tue, 21 Nov 2017 09:27:42 +0900 Subject: [PATCH 4/4] minior corrections --- superset/db_engine_specs.py | 2 +- superset/models/core.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/superset/db_engine_specs.py b/superset/db_engine_specs.py index f5af99fe11a45..37464e41baa54 100644 --- a/superset/db_engine_specs.py +++ b/superset/db_engine_specs.py @@ -150,7 +150,7 @@ def patch(cls): @classmethod def get_schema_names(cls, inspector): - return sorted(inspector.get_schema_names()) + return inspector.get_schema_names() @classmethod def get_table_names(cls, schema, inspector): diff --git a/superset/models/core.py b/superset/models/core.py index c535ca5c56584..2996625e2cbf5 100644 --- a/superset/models/core.py +++ b/superset/models/core.py @@ -726,8 +726,7 @@ def all_view_names(self, schema=None, force=False): return views def all_schema_names(self): - schemas = sorted(self.db_engine_spec.get_schema_names(self.inspector)) - return schemas + return sorted(self.db_engine_spec.get_schema_names(self.inspector)) @property def db_engine_spec(self):