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

vavila pushed a commit to branch fix/load-cached-table-metadata
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 4b9e906223e86fe4e9469aeb845268b2c605536d
Author: Vitor Avila <[email protected]>
AuthorDate: Tue Jan 21 16:00:48 2025 -0300

    fix: Load cached DB metadata as DatasourceName and add catalog to 
schema_list cache key
---
 superset/commands/database/tables.py |  7 +++++--
 superset/models/core.py              | 12 ++++++------
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/superset/commands/database/tables.py 
b/superset/commands/database/tables.py
index b28d4f065f..c8fa88400c 100644
--- a/superset/commands/database/tables.py
+++ b/superset/commands/database/tables.py
@@ -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,
diff --git a/superset/models/core.py b/superset/models/core.py
index 39775291f1..6f32383ab8 100755
--- a/superset/models/core.py
+++ b/superset/models/core.py
@@ -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(

Reply via email to