fix(table): hide unsupported identity column for opengauss

This commit is contained in:
zipg authored and GitHub committed 2026-09-03 12:34:10 +08:00
1 parent 3c4d61339e
commit c99c0d932c
3 files changed
+31 -14

No files matched your search

@@ -89,6 +89,7 @@ import {
resolveInsertColumnIndex,
restoreCharacterLengthUnitsAfterSave,
sameStructureIndexType,
supportsTableStructureExtendedProperties,
structureColumnSelectionRange,
isSyntheticContextMenuClick,
resolveColumnSelectionActiveId,
@@ -420,7 +421,7 @@ function columnChanged(column: EditableStructureColumn, index: number): boolean
column.isPrimaryKey !== original.is_primary_key ||
!sameText(column.characterSet, original.character_set) ||
!sameText(column.collation, original.collation) ||
JSON.stringify(column.extra) !== JSON.stringify(parseExtraToColumnExtra(original.extra, databaseType.value))
(showExtendedProperties.value && JSON.stringify(column.extra) !== JSON.stringify(parseExtraToColumnExtra(original.extra, databaseType.value)))
);
}
@@ -922,14 +923,7 @@ const defaultValuePresets = computed((): DefaultValuePreset[] => {
return [...universal, ...(dialectPresets[structureDialect.value] ?? [])];
});
function isPostgresIdentityType(dbType: string | undefined): boolean {
return dbType === "postgres" || dbType === "gaussdb" || dbType === "kwdb" || dbType === "opengauss" || dbType === "highgo" || dbType === "uxdb" || dbType === "vastbase" || dbType === "kingbase";
}
const showExtendedProperties = computed(() => {
const dt = databaseType.value;
return dt === "mysql" || dt === "dameng" || dt === "manticoresearch" || isPostgresIdentityType(dt) || dt === "sqlserver";
});
const showExtendedProperties = computed(() => supportsTableStructureExtendedProperties(databaseType.value));
const showCharacterSet = computed(() => structureDialect.value === "mysql");
const serverCharsetMetadata = ref<CreateDatabaseCharsetMetadata>();
@@ -1611,7 +1605,9 @@ function structureChangeOptions(): BuildTableStructureChangeSqlOptions {
databaseType: databaseType.value,
schema: props.schema,
tableName: isCreateMode.value ? newTableName.value.trim() : props.tableName || "",
columns: columns.value,
// Do not let a draft created by an older build submit properties that the
// current database cannot represent (notably PostgreSQL-style identity on openGauss).
columns: showExtendedProperties.value ? columns.value : columns.value.map((column) => ({ ...column, extra: {} })),
indexes: sanitizeStructureIndexesForCapabilities(indexes.value, structureCapabilities.value),
foreignKeys: foreignKeys.value,
triggers: triggers.value,