合并拉取请求 #366

fix(sidebar): normalize mysql view names (#365)
This commit is contained in:
Syngnat
2026-04-13 10:35:00 +08:00
committed by GitHub
2 changed files with 39 additions and 1 deletions

View File

@@ -45,6 +45,7 @@ import { getTableDataDangerActionMeta, supportsTableTruncateAction, type TableDa
import { useAutoFetchVisibility } from '../utils/autoFetchVisibility';
import FindInDatabaseModal from './FindInDatabaseModal';
import { buildRpcConnectionConfig } from '../utils/connectionRpcConfig';
import { normalizeSidebarViewName } from '../utils/sidebarMetadata';
const { Search } = Input;
@@ -794,7 +795,7 @@ const Sidebar: React.FC<{ onEditConnection?: (conn: SavedConnection) => void }>
getCaseInsensitiveValue(row, ['view_name', 'viewname', 'table_name', 'name'])
|| getMySQLShowTablesName(row)
|| getFirstRowValue(row);
const fullName = buildQualifiedName(schemaName, viewName);
const fullName = normalizeSidebarViewName(dialect, dbName, schemaName, viewName);
if (!fullName || seen.has(fullName)) return;
seen.add(fullName);
views.push(fullName);

View File

@@ -0,0 +1,37 @@
const splitQualifiedName = (qualifiedName: string): { schemaName: string; objectName: string } => {
const raw = String(qualifiedName || '').trim();
if (!raw) return { schemaName: '', objectName: '' };
const idx = raw.lastIndexOf('.');
if (idx <= 0 || idx >= raw.length - 1) {
return { schemaName: '', objectName: raw };
}
return {
schemaName: raw.substring(0, idx),
objectName: raw.substring(idx + 1),
};
};
export const normalizeSidebarViewName = (dialect: string, dbName: string, schemaName: string, viewName: string): string => {
const normalizedDialect = String(dialect || '').trim().toLowerCase();
const normalizedDbName = String(dbName || '').trim();
const normalizedSchemaName = String(schemaName || '').trim();
const normalizedViewName = String(viewName || '').trim();
if (!normalizedViewName) {
return '';
}
if (normalizedDialect === 'mysql') {
const parsed = splitQualifiedName(normalizedViewName);
if (parsed.objectName) {
return parsed.objectName;
}
return normalizedViewName;
}
if (!normalizedSchemaName || normalizedViewName.includes('.')) {
return normalizedViewName;
}
return `${normalizedSchemaName}.${normalizedViewName}`;
};