diff --git a/chat2db-community-server/chat2db-community-plugins/chat2db-community-mysql/src/main/java/ai/chat2db/plugin/mysql/enums/type/MysqlColumnTypeEnum.java b/chat2db-community-server/chat2db-community-plugins/chat2db-community-mysql/src/main/java/ai/chat2db/plugin/mysql/enums/type/MysqlColumnTypeEnum.java index fa9f3efb9e..f3382f95c2 100644 --- a/chat2db-community-server/chat2db-community-plugins/chat2db-community-mysql/src/main/java/ai/chat2db/plugin/mysql/enums/type/MysqlColumnTypeEnum.java +++ b/chat2db-community-server/chat2db-community-plugins/chat2db-community-mysql/src/main/java/ai/chat2db/plugin/mysql/enums/type/MysqlColumnTypeEnum.java @@ -376,7 +376,7 @@ private String buildDataType(TableColumn column, MysqlColumnTypeEnum type) { if (Arrays.asList(DECIMAL).contains(type) && column.getColumnSize() == null && column.getDecimalDigits() != null) { return StringUtils.join(columnType, "(", DEFAULT_DECIMAL_COLUMN_SIZE + "," + column.getDecimalDigits() + ")"); } - if (column.getColumnSize() == null || column.getDecimalDigits() == null) { + if (column.getColumnSize() == null) { return columnType; } if (column.getColumnSize() != null && column.getDecimalDigits() == null) { @@ -391,7 +391,7 @@ private String buildDataType(TableColumn column, MysqlColumnTypeEnum type) { if (Arrays.asList(DECIMAL_UNSIGNED).contains(type) && column.getColumnSize() == null && column.getDecimalDigits() != null) { return unsignedDataType(columnType, "(" + DEFAULT_DECIMAL_COLUMN_SIZE + "," + column.getDecimalDigits() + ")"); } - if (column.getColumnSize() == null || column.getDecimalDigits() == null) { + if (column.getColumnSize() == null) { return columnType; } if (column.getColumnSize() != null && column.getDecimalDigits() == null) { diff --git a/chat2db-community-server/chat2db-community-plugins/chat2db-community-mysql/src/test/java/ai/chat2db/plugin/mysql/enums/type/MysqlColumnTypeEnumDecimalTest.java b/chat2db-community-server/chat2db-community-plugins/chat2db-community-mysql/src/test/java/ai/chat2db/plugin/mysql/enums/type/MysqlColumnTypeEnumDecimalTest.java new file mode 100644 index 0000000000..846d273dd7 --- /dev/null +++ b/chat2db-community-server/chat2db-community-plugins/chat2db-community-mysql/src/test/java/ai/chat2db/plugin/mysql/enums/type/MysqlColumnTypeEnumDecimalTest.java @@ -0,0 +1,43 @@ +package ai.chat2db.plugin.mysql.enums.type; + +import ai.chat2db.community.domain.api.model.metadata.TableColumn; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertFalse; + +class MysqlColumnTypeEnumDecimalTest { + + private TableColumn column(String type, Integer size, Integer digits) { + TableColumn c = new TableColumn(); + c.setColumnType(type); + c.setColumnSize(size); + c.setDecimalDigits(digits); + return c; + } + + @Test + void decimalWithPrecisionOnly() { + String result = MysqlColumnTypeEnum.DECIMAL.buildCreateColumnSql(column("DECIMAL", 15, null)); + assertTrue(result.contains("DECIMAL(15"), () -> "Expected DECIMAL(15): " + result); + } + + @Test + void decimalWithPrecisionAndScale() { + String result = MysqlColumnTypeEnum.DECIMAL.buildCreateColumnSql(column("DECIMAL", 15, 2)); + assertTrue(result.contains("DECIMAL(15,2)"), () -> "Expected DECIMAL(15,2): " + result); + } + + @Test + void decimalWithBothNull() { + String result = MysqlColumnTypeEnum.DECIMAL.buildCreateColumnSql(column("DECIMAL", null, null)); + assertTrue(result.contains("DECIMAL"), () -> "Expected DECIMAL: " + result); + assertFalse(result.contains("("), () -> "Should not have size: " + result); + } + + @Test + void floatWithPrecisionOnly() { + String result = MysqlColumnTypeEnum.FLOAT.buildCreateColumnSql(column("FLOAT", 10, null)); + assertTrue(result.contains("FLOAT"), () -> "Expected FLOAT: " + result); + } +}