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[] {
-