From 892a40274eb091f2d1768c2bf6fcb98d5838eb99 Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Mon, 3 Aug 2026 17:05:13 +0800 Subject: [PATCH] fix(objects): refresh active table metadata Closes #5224 --- .../src/components/objects/ObjectBrowser.vue | 25 ++++++++++- .../ObjectBrowserMetadataRefresh.spec.ts | 43 +++++++++++++++++++ .../contentAreaObjectBrowserCatalog.spec.ts | 6 +-- 3 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 apps/desktop/src/components/objects/__tests__/ObjectBrowserMetadataRefresh.spec.ts diff --git a/apps/desktop/src/components/objects/ObjectBrowser.vue b/apps/desktop/src/components/objects/ObjectBrowser.vue index f78dc38103..8ed0da7bd2 100644 --- a/apps/desktop/src/components/objects/ObjectBrowser.vue +++ b/apps/desktop/src/components/objects/ObjectBrowser.vue @@ -1035,6 +1035,28 @@ async function fetchTableTriggers() { } } +async function refreshActiveTableInfo() { + if (sidePanelMode.value !== "table-info" || !sidePanelRow.value) return; + sidePanelGuard.bump(); + + if (tableInfoTab.value === "ddl") { + tableDdlContent.value = ""; + await fetchTableDdl(); + } else if (tableInfoTab.value === "columns") { + tableColumns.value = []; + await fetchTableColumns(); + } else if (tableInfoTab.value === "indexes") { + tableIndexes.value = []; + await fetchTableIndexes(); + } else if (tableInfoTab.value === "foreignKeys") { + tableForeignKeys.value = []; + await fetchTableForeignKeys(); + } else if (tableInfoTab.value === "triggers") { + tableTriggers.value = []; + await fetchTableTriggers(); + } +} + function copyTableDdl() { void copyToClipboard(tableDdlContent.value); toast(t("grid.copyDdl"), 2000); @@ -2454,6 +2476,7 @@ async function reload(options?: { allowCachedObjects?: boolean; contextEpoch?: n function refresh(): boolean { void reload(); + void refreshActiveTableInfo(); return true; } @@ -2778,7 +2801,7 @@ function getObjectBrowserMenuItems(item: ObjectBrowserRow): ContextMenuItem[] { -