You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by jo...@apache.org on 2022/07/16 03:02:06 UTC

[superset] 01/01: fix: Ensure Presto database engine spec correctly handles Trino

This is an automated email from the ASF dual-hosted git repository.

johnbodley pushed a commit to branch john-bodley--trino-presto
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 7dc5950fab8646cfb53aa57e3590381cbc41438f
Author: John Bodley <45...@users.noreply.github.com>
AuthorDate: Fri Jul 15 20:01:52 2022 -0700

    fix: Ensure Presto database engine spec correctly handles Trino
---
 superset/db_engine_specs/presto.py | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/superset/db_engine_specs/presto.py b/superset/db_engine_specs/presto.py
index cd6fa032b3..952574be09 100644
--- a/superset/db_engine_specs/presto.py
+++ b/superset/db_engine_specs/presto.py
@@ -940,8 +940,6 @@ class PrestoEngineSpec(BaseEngineSpec):  # pylint: disable=too-many-public-metho
         :param schema: Schema name
         :param table: Table (view) name
         """
-        # pylint: disable=import-outside-toplevel
-        from pyhive.exc import DatabaseError
 
         engine = cls.get_engine(database, schema)
         with closing(engine.raw_connection()) as conn:
@@ -949,11 +947,12 @@ class PrestoEngineSpec(BaseEngineSpec):  # pylint: disable=too-many-public-metho
             sql = f"SHOW CREATE VIEW {schema}.{table}"
             try:
                 cls.execute(cursor, sql)
+                return cls.fetch_data(cursor, 1)[0][0]
 
-            except DatabaseError:  # not a VIEW
+            # TODO(john-bodley): Replace with sqlalchemy.exc.DBAPIError after 
+            # https://github.com/trinodb/trino-python-client/issues/199 is resolved.
+            except Exception:  # pylint: disable=broad-exception
                 return None
-            rows = cls.fetch_data(cursor, 1)
-        return rows[0][0]
 
     @classmethod
     def handle_cursor(cls, cursor: Any, query: Query, session: Session) -> None: