feat(query-editor): 结果页列元数据跨库加载并实心化保存按钮

- 结果集携带 metadataDbName/TableName,列类型注释从真实库表加载
- 只读查询也解析 tableRef,避免结果页丢元数据
- 选择列底色与固定列对齐;保存按钮改为蓝色实心主按钮样式
- 独立结果窗/还原路径同步元数据字段
This commit is contained in:
Syngnat
2026-07-09 15:37:27 +08:00
parent af9f490172
commit 8d7e7a6ddf
7 changed files with 79 additions and 13 deletions

View File

@@ -6549,6 +6549,9 @@ const QueryEditor: React.FC<{ tab: TabData; isActive?: boolean }> = ({ tab, isAc
columns: cols,
messages: resultMessages,
tableName: tableRef?.tableName,
// 跨库/跨 schema 查询时,列类型与注释必须从真实表所在库加载
metadataDbName: tableRef?.metadataDbName,
metadataTableName: tableRef?.metadataTableName,
pkColumns: plan?.pkColumns || [],
editLocator,
readOnly: forceReadOnlyResult || !editLocator || editLocator.readOnly,
@@ -7758,7 +7761,8 @@ const QueryEditor: React.FC<{ tab: TabData; isActive?: boolean }> = ({ tab, isAc
id: windowId,
sourceQueryTabId: tab.id,
connectionId: currentConnectionId || tab.connectionId || '',
dbName: currentDb || tab.dbName || '',
// 独立窗也要带上结果表元数据所属库,否则列类型/注释会丢
dbName: target.metadataDbName || currentDb || tab.dbName || '',
title,
...(preferred?.x !== undefined ? { x: preferred.x } : {}),
...(preferred?.y !== undefined ? { y: preferred.y } : {}),
@@ -7774,7 +7778,9 @@ const QueryEditor: React.FC<{ tab: TabData; isActive?: boolean }> = ({ tab, isAc
columns: target.columns,
messages: target.messages,
resultType: target.resultType,
tableName: target.tableName,
tableName: target.metadataTableName || target.tableName,
metadataDbName: target.metadataDbName,
metadataTableName: target.metadataTableName,
pkColumns: target.pkColumns || [],
editLocator: target.editLocator as any,
readOnly: target.readOnly !== false,
@@ -7811,6 +7817,8 @@ const QueryEditor: React.FC<{ tab: TabData; isActive?: boolean }> = ({ tab, isAc
messages: Array.isArray(restored.messages) ? restored.messages : undefined,
resultType: restored.resultType === 'message' ? 'message' : 'grid',
tableName: restored.tableName,
metadataDbName: restored.metadataDbName,
metadataTableName: restored.metadataTableName,
pkColumns: Array.isArray(restored.pkColumns) ? restored.pkColumns : [],
editLocator: restored.editLocator,
readOnly: restored.readOnly !== false,