1 parent
bd83ee189b
commit
3dd034bf06
6 files changed
+130
-28
No files matched your search
@@ -73,7 +73,7 @@ import {
|
||||
parseExtraToColumnExtra,
|
||||
rehydrateColumnDraftsFromMetadata,
|
||||
resolveInsertColumnIndex,
|
||||
restoreDamengLengthUnitsAfterSave,
|
||||
restoreCharacterLengthUnitsAfterSave,
|
||||
sameStructureIndexType,
|
||||
splitDataType,
|
||||
toColumnNames,
|
||||
@@ -583,7 +583,7 @@ watch(localStructureDensity, (density, previousDensity) => {
|
||||
function onColResize(e: MouseEvent, col: number) {
|
||||
e.preventDefault();
|
||||
const widthIndex = columnWidthIndex(col);
|
||||
const minimumWidth = widthIndex === 3 && databaseType.value === "dameng" ? structureDensityMetric.value.minLengthColumnWidth : structureDensityMetric.value.minColumnWidth;
|
||||
const minimumWidth = widthIndex === 3 && supportsCharacterLengthUnits.value ? structureDensityMetric.value.minLengthColumnWidth : structureDensityMetric.value.minColumnWidth;
|
||||
colResizing.value = { col: widthIndex, startX: e.clientX, startW: Math.max(colWidths.value[widthIndex] ?? minimumWidth, minimumWidth) };
|
||||
const onMove = (ev: MouseEvent) => {
|
||||
if (!colResizing.value) return;
|
||||
@@ -622,6 +622,7 @@ function onIndexColResize(e: MouseEvent, col: number) {
|
||||
|
||||
const connection = computed(() => (props.connectionId ? store.getConfig(props.connectionId) : undefined));
|
||||
const databaseType = computed(() => tableStructureDatabaseTypeForConnection(connection.value));
|
||||
const supportsCharacterLengthUnits = computed(() => databaseType.value === "dameng" || databaseType.value === "oracle");
|
||||
const usesMysql8SafeDefaults = computed(() => databaseType.value === "mysql" && connection.value?.db_type === "mysql" && connection.value.driver_profile === "mysql");
|
||||
const structureCapabilities = computed(() => getTableStructureCapabilities(databaseType.value, connection.value?.db_type, connection.value?.database_info?.productVersion));
|
||||
const tableMetadataCapabilities = computed(() => getTableMetadataCapabilities(databaseType.value));
|
||||
@@ -772,7 +773,7 @@ const visibleColWidths = computed(() =>
|
||||
colLabels.value.map((column) => {
|
||||
if (column.key === "actions") return columnActionsWidth.value;
|
||||
const width = colWidths.value[column.widthIndex] ?? structureDensityMetric.value.minColumnWidth;
|
||||
return column.key === "length" && databaseType.value === "dameng" ? Math.max(width, structureDensityMetric.value.minLengthColumnWidth) : width;
|
||||
return column.key === "length" && supportsCharacterLengthUnits.value ? Math.max(width, structureDensityMetric.value.minLengthColumnWidth) : width;
|
||||
}),
|
||||
);
|
||||
|
||||
@@ -1299,7 +1300,7 @@ async function loadStructure(
|
||||
silent = false,
|
||||
scope: TableStructureRefreshScope = visibleTableStructureRefreshScope(activeTab.value),
|
||||
showErrors = true,
|
||||
options: { blockSecondaryMetadata?: boolean; preserveDraft?: boolean; damengLengthUnitsAfterSave?: ReadonlyMap<string, string>; forceDdl?: boolean; forceMetadata?: boolean } = {},
|
||||
options: { blockSecondaryMetadata?: boolean; preserveDraft?: boolean; characterLengthUnitsAfterSave?: ReadonlyMap<string, string>; forceDdl?: boolean; forceMetadata?: boolean } = {},
|
||||
) {
|
||||
const connectionId = props.connectionId;
|
||||
const database = props.database;
|
||||
@@ -1352,7 +1353,7 @@ async function loadStructure(
|
||||
// editor shows the correct options for the server version.
|
||||
void loadCharsetMetadata();
|
||||
const nextColumnDrafts = createColumnDrafts(nextColumns, databaseType.value);
|
||||
const hydratedColumnDrafts = databaseType.value === "dameng" && options.damengLengthUnitsAfterSave ? restoreDamengLengthUnitsAfterSave(nextColumnDrafts, options.damengLengthUnitsAfterSave) : nextColumnDrafts;
|
||||
const hydratedColumnDrafts = supportsCharacterLengthUnits.value && options.characterLengthUnitsAfterSave ? restoreCharacterLengthUnitsAfterSave(databaseType.value, nextColumnDrafts, options.characterLengthUnitsAfterSave) : nextColumnDrafts;
|
||||
columns.value = applyStoredLocalColumnOrder(hydratedColumnDrafts);
|
||||
loadedMetadataFacets.add("columns");
|
||||
if (!options.preserveDraft) selectedColumnId.value = null;
|
||||
@@ -1411,9 +1412,9 @@ async function loadStructure(
|
||||
}
|
||||
}
|
||||
|
||||
async function refreshStructureAfterSave(scope: TableStructureRefreshScope, damengLengthUnitsAfterSave: ReadonlyMap<string, string>) {
|
||||
async function refreshStructureAfterSave(scope: TableStructureRefreshScope, characterLengthUnitsAfterSave: ReadonlyMap<string, string>) {
|
||||
try {
|
||||
await loadStructure(true, scope, false, { blockSecondaryMetadata: true, damengLengthUnitsAfterSave });
|
||||
await loadStructure(true, scope, false, { blockSecondaryMetadata: true, characterLengthUnitsAfterSave });
|
||||
} catch (e) {
|
||||
console.warn("[DBX][structure-editor:post-save-refresh-failed]", e);
|
||||
} finally {
|
||||
@@ -2325,11 +2326,11 @@ async function applyChanges() {
|
||||
saving.value = true;
|
||||
errorMessage.value = "";
|
||||
const refreshScope = captureStructureRefreshScope();
|
||||
const damengLengthUnitsAfterSave = new Map<string, string>();
|
||||
if (databaseType.value === "dameng") {
|
||||
const characterLengthUnitsAfterSave = new Map<string, string>();
|
||||
if (supportsCharacterLengthUnits.value) {
|
||||
for (const column of columns.value) {
|
||||
if (!column.markedForDrop && dataTypeLengthUnitValue("dameng", column.dataType)) {
|
||||
damengLengthUnitsAfterSave.set(column.name.trim().toLowerCase(), column.dataType);
|
||||
if (!column.markedForDrop && dataTypeLengthUnitValue(databaseType.value, column.dataType)) {
|
||||
characterLengthUnitsAfterSave.set(column.name.trim().toLowerCase(), column.dataType);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2363,7 +2364,7 @@ async function applyChanges() {
|
||||
postSaveRefreshing.value = true;
|
||||
skipNextRefreshVersion = true;
|
||||
emit("saved", tableComment.value !== originalTableComment.value);
|
||||
await refreshStructureAfterSave(refreshScope, damengLengthUnitsAfterSave);
|
||||
await refreshStructureAfterSave(refreshScope, characterLengthUnitsAfterSave);
|
||||
}
|
||||
return true;
|
||||
} catch (e: any) {
|
||||
|
||||
Reference in new issue
Block a user