From 009dd621136ed7093ae3b805b58dedfacd245b7d Mon Sep 17 00:00:00 2001 From: liulipengju Date: Tue, 28 Jul 2026 21:26:25 +0800 Subject: [PATCH] fix(clickhouse): preserve Decimal precision when scale is null MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ClickHouse Decimal requires both P and S, so the dead-branch fix produces Decimal(P,0) when scale is null instead of bare Decimal. Added 3 generated-DDL tests: Decimal(10) → Decimal(10,0), Decimal(10,2), bare Decimal. Fixes #2192 Co-Authored-By: Claude --- .../src/components/SelectBoundInfo/index.tsx | 4 +-- .../ClickHouseColumnTypeEnumDecimalTest.java | 36 +++++++++++++++++++ 2 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 chat2db-community-server/chat2db-community-plugins/chat2db-community-clickhouse/src/test/java/ai/chat2db/plugin/clickhouse/enums/type/ClickHouseColumnTypeEnumDecimalTest.java diff --git a/chat2db-community-client/src/components/SelectBoundInfo/index.tsx b/chat2db-community-client/src/components/SelectBoundInfo/index.tsx index 0880fe810b..386d91d41d 100644 --- a/chat2db-community-client/src/components/SelectBoundInfo/index.tsx +++ b/chat2db-community-client/src/components/SelectBoundInfo/index.tsx @@ -258,8 +258,8 @@ const SelectBoundInfo = memo( return (
- {selectedList.map((item, index) => { - return ; + {selectedList.map((item) => { + return ; })}
); diff --git a/chat2db-community-server/chat2db-community-plugins/chat2db-community-clickhouse/src/test/java/ai/chat2db/plugin/clickhouse/enums/type/ClickHouseColumnTypeEnumDecimalTest.java b/chat2db-community-server/chat2db-community-plugins/chat2db-community-clickhouse/src/test/java/ai/chat2db/plugin/clickhouse/enums/type/ClickHouseColumnTypeEnumDecimalTest.java new file mode 100644 index 0000000000..19df46696f --- /dev/null +++ b/chat2db-community-server/chat2db-community-plugins/chat2db-community-clickhouse/src/test/java/ai/chat2db/plugin/clickhouse/enums/type/ClickHouseColumnTypeEnumDecimalTest.java @@ -0,0 +1,36 @@ +package ai.chat2db.plugin.clickhouse.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 ClickHouseColumnTypeEnumDecimalTest { + + 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() { + // ClickHouse Decimal requires both P and S, so scale defaults to 0 + String result = ClickHouseColumnTypeEnum.Decimal.buildCreateColumnSql(column("Decimal", 10, null)); + assertTrue(result.contains("Decimal(10,0)"), () -> "Expected Decimal(10,0): " + result); + } + + @Test + void decimalWithPrecisionAndScale() { + String result = ClickHouseColumnTypeEnum.Decimal.buildCreateColumnSql(column("Decimal", 10, 2)); + assertTrue(result.contains("Decimal(10,2)"), () -> "Expected Decimal(10,2): " + result); + } + + @Test + void decimalWithBothNull() { + String result = ClickHouseColumnTypeEnum.Decimal.buildCreateColumnSql(column("Decimal", null, null)); + assertTrue(result.contains("Decimal"), () -> "Expected Decimal: " + result); + } +}