fix(kingbase): restore table structure type parameters

This commit is contained in:
zipg authored and GitHub committed 2026-07-16 18:19:29 +08:00
1 parent d9ef8b0cac
commit 669c742acd
2 files changed
+70 -1

No files matched your search

@@ -638,11 +638,30 @@ function columnDefaultForEditor(column: ColumnInfo, databaseType?: DatabaseType)
return defaultValue;
}
const CHARACTER_LENGTH_METADATA_TYPES = new Set(["binary", "char", "character", "character varying", "nchar", "nvarchar", "nvarchar2", "varbinary", "varchar", "varchar2"]);
const NUMERIC_PRECISION_METADATA_TYPES = new Set(["decimal", "number", "numeric"]);
function columnDataTypeForEditor(column: ColumnInfo, databaseType?: DatabaseType): string {
const parsed = splitDataType(column.data_type);
if (parsed.params) return column.data_type;
const baseType = parsed.baseType.trim().replace(/\s+/g, " ");
const normalized = baseType.toLowerCase();
if (CHARACTER_LENGTH_METADATA_TYPES.has(normalized) && Number.isInteger(column.character_maximum_length) && Number(column.character_maximum_length) > 0) {
return combineDataTypeForDatabase(databaseType, baseType, String(column.character_maximum_length));
}
if (NUMERIC_PRECISION_METADATA_TYPES.has(normalized) && Number.isInteger(column.numeric_precision) && Number(column.numeric_precision) > 0) {
const scale = Number.isInteger(column.numeric_scale) && Number(column.numeric_scale) >= 0 ? `,${column.numeric_scale}` : "";
return combineDataTypeForDatabase(databaseType, baseType, `${column.numeric_precision}${scale}`);
}
return column.data_type;
}
export function createColumnDrafts(columns: ColumnInfo[], databaseType?: DatabaseType): EditableStructureColumn[] {
return columns.map((column, index) => {
const defaultValue = columnDefaultForEditor(column, databaseType);
const enumValues = isMysqlEnumDataType(databaseType, column.data_type) ? [...(column.enum_values ?? [])] : undefined;
const dataType = enumValues?.length ? mysqlEnumDataType(enumValues) : column.data_type;
const dataType = enumValues?.length ? mysqlEnumDataType(enumValues) : columnDataTypeForEditor(column, databaseType);
return {
id: `existing:${column.name}`,
name: column.name,