From ee062b078bdb55d03729868774117fe9b14212d4 Mon Sep 17 00:00:00 2001 From: liugddx Date: Mon, 30 Oct 2023 21:55:10 +0800 Subject: [PATCH 1/5] fix bug --- .../datasource/jdbc/client/JdbcClickHouseClient.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java index 292dea760efd15..400467a7ad068c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java @@ -69,12 +69,18 @@ protected Type jdbcTypeToDoris(JdbcFieldSchema fieldSchema) { if (ckType.equals("DateTime")) { return ScalarType.createDatetimeV2Type(0); } else { - // DateTime64 with [0~9] precision int indexStart = ckType.indexOf('('); int indexEnd = ckType.indexOf(')'); if (indexStart != -1 && indexEnd != -1) { String scaleStr = ckType.substring(indexStart + 1, indexEnd); - int scale = Integer.parseInt(scaleStr); + int scale; + try { + scale = Integer.parseInt(scaleStr); + } catch (NumberFormatException e) { + // DateTime([timezone]) + return ScalarType.createDatetimeV2Type(0); + } + // DateTime64 with [0~9] precision if (scale > 6) { scale = 6; } From c1334bc44ded71b447ddd055daa05fbd1a18cbe8 Mon Sep 17 00:00:00 2001 From: liugddx Date: Wed, 1 Nov 2023 23:05:06 +0800 Subject: [PATCH 2/5] fix bug --- .../jdbc/client/JdbcClickHouseClient.java | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java index 400467a7ad068c..e9aa7ae3e9a53c 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java @@ -72,17 +72,9 @@ protected Type jdbcTypeToDoris(JdbcFieldSchema fieldSchema) { int indexStart = ckType.indexOf('('); int indexEnd = ckType.indexOf(')'); if (indexStart != -1 && indexEnd != -1) { - String scaleStr = ckType.substring(indexStart + 1, indexEnd); - int scale; - try { - scale = Integer.parseInt(scaleStr); - } catch (NumberFormatException e) { - // DateTime([timezone]) - return ScalarType.createDatetimeV2Type(0); - } - // DateTime64 with [0~9] precision - if (scale > 6) { - scale = 6; + int scale = fieldSchema.getDecimalDigits(); + if (scale > JDBC_DATETIME_SCALE) { + scale = JDBC_DATETIME_SCALE; } // return with the actual scale return ScalarType.createDatetimeV2Type(scale); From bc5d58e76720d9f1921b515e0df008555954adcc Mon Sep 17 00:00:00 2001 From: liugddx Date: Sat, 4 Nov 2023 16:06:48 +0800 Subject: [PATCH 3/5] fix bug --- .../doris/datasource/jdbc/client/JdbcClickHouseClient.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java index e9aa7ae3e9a53c..ddc79660702de8 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java @@ -66,13 +66,14 @@ protected Type jdbcTypeToDoris(JdbcFieldSchema fieldSchema) { if (ckType.startsWith("DateTime")) { // DateTime with second precision - if (ckType.equals("DateTime")) { + if (ckType.startsWith("DateTime(")) { return ScalarType.createDatetimeV2Type(0); } else { int indexStart = ckType.indexOf('('); int indexEnd = ckType.indexOf(')'); if (indexStart != -1 && indexEnd != -1) { - int scale = fieldSchema.getDecimalDigits(); + String scaleStr = ckType.substring(indexStart + 1, indexEnd); + int scale = Integer.parseInt(scaleStr); if (scale > JDBC_DATETIME_SCALE) { scale = JDBC_DATETIME_SCALE; } From f51be070a181cfb576c9abe5a2d83dcb0d8db892 Mon Sep 17 00:00:00 2001 From: Guangdong Liu <804167098@qq.com> Date: Mon, 6 Nov 2023 14:08:41 +0800 Subject: [PATCH 4/5] Update JdbcClickHouseClient.java --- .../doris/datasource/jdbc/client/JdbcClickHouseClient.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java index ddc79660702de8..4cb0bacc38b28d 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java @@ -66,7 +66,7 @@ protected Type jdbcTypeToDoris(JdbcFieldSchema fieldSchema) { if (ckType.startsWith("DateTime")) { // DateTime with second precision - if (ckType.startsWith("DateTime(")) { + if (ckType.startsWith("DateTime(") || ckType.equals("DateTime")) { return ScalarType.createDatetimeV2Type(0); } else { int indexStart = ckType.indexOf('('); From 8832f332d73930c40ccd1d32964b5e0f34f92194 Mon Sep 17 00:00:00 2001 From: gdliu3 Date: Tue, 7 Nov 2023 10:48:10 +0800 Subject: [PATCH 5/5] fix code style --- .../doris/datasource/jdbc/client/JdbcClickHouseClient.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java index 4cb0bacc38b28d..b68ec481d3d2ec 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java +++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/jdbc/client/JdbcClickHouseClient.java @@ -58,8 +58,10 @@ protected Type jdbcTypeToDoris(JdbcFieldSchema fieldSchema) { return createDecimalOrStringType(precision, scale); } - if ("String".contains(ckType) || ckType.startsWith("Enum") - || ckType.startsWith("IPv") || "UUID".contains(ckType) + if ("String".contains(ckType) + || ckType.startsWith("Enum") + || ckType.startsWith("IPv") + || "UUID".contains(ckType) || ckType.startsWith("FixedString")) { return ScalarType.createStringType(); }