diff --git a/frontend/src/metabase/selectors/metadata.js b/frontend/src/metabase/selectors/metadata.js
index 5aeb843d6478795313e55f2be344eb33f6aeab59..6fb635bf33b304e20a8821c317fa857a38fbc940 100644
--- a/frontend/src/metabase/selectors/metadata.js
+++ b/frontend/src/metabase/selectors/metadata.js
@@ -7,6 +7,7 @@ import Table from "metabase-lib/lib/metadata/Table";
 import Field from "metabase-lib/lib/metadata/Field";
 import Metric from "metabase-lib/lib/metadata/Metric";
 import Segment from "metabase-lib/lib/metadata/Segment";
+import { isVirtualCardId } from "metabase/lib/saved-questions/saved-questions";
 
 import _ from "underscore";
 import { getFieldValues, getRemappings } from "metabase/lib/query/field";
@@ -93,7 +94,20 @@ export const getMetadata = createSelector(
     meta.metrics = copyObjects(meta, metrics, instantiateMetric);
 
     // database
-    hydrateList(meta.databases, "tables", meta.tables);
+    hydrate(meta.databases, "tables", database => {
+      if (database.tables?.length > 0) {
+        return database.tables
+          .map(tableId => meta.table(tableId))
+          .filter(table => table != null);
+      }
+
+      return Object.values(meta.tables).filter(
+        table =>
+          !isVirtualCardId(table.id) &&
+          table.schema &&
+          table.db_id === database.id,
+      );
+    });
     // schema
     hydrate(meta.schemas, "database", s => meta.database(s.database));
     // table
@@ -149,7 +163,10 @@ export const getMetadata = createSelector(
 
     hydrate(meta.fields, "values", f => getFieldValues(f));
     hydrate(meta.fields, "remapping", f => new Map(getRemappings(f)));
-
+    console.log(">>>>>>>>>>>");
+    console.log(">>>databases", meta.databases);
+    console.log(">>>schemas", meta.schemas);
+    console.log(">>>tables", meta.tables);
     return meta;
   },
 );
diff --git a/frontend/test/metabase/scenarios/permissions/reproductions/20436-incorrect-display-of-database-permissions-level.cy.spec.js b/frontend/test/metabase/scenarios/permissions/reproductions/20436-incorrect-display-of-database-permissions-level.cy.spec.js
index ed2cf050375120d9f1ee70d314db57be27d368a0..2ad0ca3fba850b94ea7703eee487fc58d5faed53 100644
--- a/frontend/test/metabase/scenarios/permissions/reproductions/20436-incorrect-display-of-database-permissions-level.cy.spec.js
+++ b/frontend/test/metabase/scenarios/permissions/reproductions/20436-incorrect-display-of-database-permissions-level.cy.spec.js
@@ -5,7 +5,7 @@ const { ALL_USERS_GROUP } = USER_GROUPS;
 
 const url = `/admin/permissions/data/group/${ALL_USERS_GROUP}`;
 
-describe.skip("issue 20436", () => {
+describe("issue 20436", () => {
   beforeEach(() => {
     cy.intercept("PUT", "/api/permissions/graph").as("updatePermissions");