mirror of
https://github.com/apache/superset.git
synced 2026-04-20 00:24:38 +00:00
* fix(dataset): create es-view dataset raise exception #16623 * fix(database): fix has_view logic * refactor(database): fix logic * style(lint): remove unused typing * fix(test): add test case * fix(test): fix test case
This commit is contained in:
@@ -44,7 +44,7 @@ from sqlalchemy import (
|
||||
Table,
|
||||
Text,
|
||||
)
|
||||
from sqlalchemy.engine import Dialect, Engine, url
|
||||
from sqlalchemy.engine import Connection, Dialect, Engine, url
|
||||
from sqlalchemy.engine.reflection import Inspector
|
||||
from sqlalchemy.engine.url import make_url, URL
|
||||
from sqlalchemy.exc import ArgumentError
|
||||
@@ -721,6 +721,28 @@ class Database(
|
||||
engine = self.get_sqla_engine()
|
||||
return engine.has_table(table_name, schema)
|
||||
|
||||
@classmethod
|
||||
def _has_view(
|
||||
cls,
|
||||
conn: Connection,
|
||||
dialect: Dialect,
|
||||
view_name: str,
|
||||
schema: Optional[str] = None,
|
||||
) -> bool:
|
||||
view_names: List[str] = []
|
||||
try:
|
||||
view_names = dialect.get_view_names(connection=conn, schema=schema)
|
||||
except Exception as ex: # pylint: disable=broad-except
|
||||
logger.warning(ex)
|
||||
return view_name in view_names
|
||||
|
||||
def has_view(self, view_name: str, schema: Optional[str] = None) -> bool:
|
||||
engine = self.get_sqla_engine()
|
||||
return engine.run_callable(self._has_view, engine.dialect, view_name, schema)
|
||||
|
||||
def has_view_by_name(self, view_name: str, schema: Optional[str] = None) -> bool:
|
||||
return self.has_view(view_name=view_name, schema=schema)
|
||||
|
||||
@memoized
|
||||
def get_dialect(self) -> Dialect:
|
||||
sqla_url = url.make_url(self.sqlalchemy_uri_decrypted)
|
||||
|
||||
Reference in New Issue
Block a user