diff --git a/chat2db-community-server/chat2db-community-plugins/chat2db-community-hive/src/main/java/ai/chat2db/plugin/hive/enums/type/HiveColumnTypeEnum.java b/chat2db-community-server/chat2db-community-plugins/chat2db-community-hive/src/main/java/ai/chat2db/plugin/hive/enums/type/HiveColumnTypeEnum.java index 62d837bb89..7dc9814ac6 100644 --- a/chat2db-community-server/chat2db-community-plugins/chat2db-community-hive/src/main/java/ai/chat2db/plugin/hive/enums/type/HiveColumnTypeEnum.java +++ b/chat2db-community-server/chat2db-community-plugins/chat2db-community-hive/src/main/java/ai/chat2db/plugin/hive/enums/type/HiveColumnTypeEnum.java @@ -222,7 +222,7 @@ private String buildDataType(TableColumn column, HiveColumnTypeEnum type) { if (Arrays.asList(DECIMAL, FLOAT, DOUBLE,TINYINT).contains(type)) { - 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-hive/src/test/java/ai/chat2db/plugin/hive/enums/type/HiveColumnTypeEnumDecimalTest.java b/chat2db-community-server/chat2db-community-plugins/chat2db-community-hive/src/test/java/ai/chat2db/plugin/hive/enums/type/HiveColumnTypeEnumDecimalTest.java new file mode 100644 index 0000000000..85a3ea07fd --- /dev/null +++ b/chat2db-community-server/chat2db-community-plugins/chat2db-community-hive/src/test/java/ai/chat2db/plugin/hive/enums/type/HiveColumnTypeEnumDecimalTest.java @@ -0,0 +1,41 @@ +package ai.chat2db.plugin.hive.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; + +class HiveColumnTypeEnumDecimalTest { + + 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 = HiveColumnTypeEnum.DECIMAL.buildCreateColumnSql(column("DECIMAL", 10, null)); + assertTrue(result.contains("DECIMAL(10"), () -> "Expected DECIMAL(10): " + result); + } + + @Test + void decimalWithPrecisionAndScale() { + String result = HiveColumnTypeEnum.DECIMAL.buildCreateColumnSql(column("DECIMAL", 10, 2)); + assertTrue(result.contains("DECIMAL(10,2)"), () -> "Expected DECIMAL(10,2): " + result); + } + + @Test + void decimalWithBothNull() { + String result = HiveColumnTypeEnum.DECIMAL.buildCreateColumnSql(column("DECIMAL", null, null)); + assertTrue(result.contains("DECIMAL"), () -> "Expected DECIMAL: " + result); + } + + @Test + void floatWithPrecisionOnly() { + String result = HiveColumnTypeEnum.FLOAT.buildCreateColumnSql(column("FLOAT", 10, null)); + assertTrue(result.contains("FLOAT"), () -> "Expected FLOAT: " + result); + } +}