fix: Load cached DB metadata as DatasourceName and add catalog to schema_list cache key (#31948)
This commit is contained in:
parent
b5ac415afc
commit
43a97f86f5
|
|
@ -32,6 +32,7 @@ from superset.daos.database import DatabaseDAO
|
|||
from superset.exceptions import SupersetException
|
||||
from superset.extensions import db, security_manager
|
||||
from superset.models.core import Database
|
||||
from superset.utils.core import DatasourceName
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
|
@ -59,7 +60,8 @@ class TablesDatabaseCommand(BaseCommand):
|
|||
catalog=self._catalog_name,
|
||||
schema=self._schema_name,
|
||||
datasource_names=sorted(
|
||||
self._model.get_all_table_names_in_schema(
|
||||
DatasourceName(*datasource_name)
|
||||
for datasource_name in self._model.get_all_table_names_in_schema(
|
||||
catalog=self._catalog_name,
|
||||
schema=self._schema_name,
|
||||
force=self._force,
|
||||
|
|
@ -74,7 +76,8 @@ class TablesDatabaseCommand(BaseCommand):
|
|||
catalog=self._catalog_name,
|
||||
schema=self._schema_name,
|
||||
datasource_names=sorted(
|
||||
self._model.get_all_view_names_in_schema(
|
||||
DatasourceName(*datasource_name)
|
||||
for datasource_name in self._model.get_all_view_names_in_schema(
|
||||
catalog=self._catalog_name,
|
||||
schema=self._schema_name,
|
||||
force=self._force,
|
||||
|
|
|
|||
|
|
@ -83,7 +83,7 @@ from superset.superset_typing import (
|
|||
)
|
||||
from superset.utils import cache as cache_util, core as utils, json
|
||||
from superset.utils.backports import StrEnum
|
||||
from superset.utils.core import DatasourceName, get_username
|
||||
from superset.utils.core import get_username
|
||||
from superset.utils.oauth2 import get_oauth2_access_token, OAuth2ClientConfigSchema
|
||||
|
||||
config = app.config
|
||||
|
|
@ -798,7 +798,7 @@ class Database(Model, AuditMixinNullable, ImportExportMixin): # pylint: disable
|
|||
self,
|
||||
catalog: str | None,
|
||||
schema: str,
|
||||
) -> set[DatasourceName]:
|
||||
) -> set[tuple[str, str, str | None]]:
|
||||
"""Parameters need to be passed as keyword arguments.
|
||||
|
||||
For unused parameters, they are referenced in
|
||||
|
|
@ -814,7 +814,7 @@ class Database(Model, AuditMixinNullable, ImportExportMixin): # pylint: disable
|
|||
try:
|
||||
with self.get_inspector(catalog=catalog, schema=schema) as inspector:
|
||||
return {
|
||||
DatasourceName(table, schema, catalog)
|
||||
(table, schema, catalog)
|
||||
for table in self.db_engine_spec.get_table_names(
|
||||
database=self,
|
||||
inspector=inspector,
|
||||
|
|
@ -832,7 +832,7 @@ class Database(Model, AuditMixinNullable, ImportExportMixin): # pylint: disable
|
|||
self,
|
||||
catalog: str | None,
|
||||
schema: str,
|
||||
) -> set[DatasourceName]:
|
||||
) -> set[tuple[str, str, str | None]]:
|
||||
"""Parameters need to be passed as keyword arguments.
|
||||
|
||||
For unused parameters, they are referenced in
|
||||
|
|
@ -848,7 +848,7 @@ class Database(Model, AuditMixinNullable, ImportExportMixin): # pylint: disable
|
|||
try:
|
||||
with self.get_inspector(catalog=catalog, schema=schema) as inspector:
|
||||
return {
|
||||
DatasourceName(view, schema, catalog)
|
||||
(view, schema, catalog)
|
||||
for view in self.db_engine_spec.get_view_names(
|
||||
database=self,
|
||||
inspector=inspector,
|
||||
|
|
@ -873,7 +873,7 @@ class Database(Model, AuditMixinNullable, ImportExportMixin): # pylint: disable
|
|||
yield sqla.inspect(engine)
|
||||
|
||||
@cache_util.memoized_func(
|
||||
key="db:{self.id}:schema_list",
|
||||
key="db:{self.id}:catalog:{catalog}:schema_list",
|
||||
cache=cache_manager.cache,
|
||||
)
|
||||
def get_all_schema_names(
|
||||
|
|
|
|||
Loading…
Reference in New Issue