From 667e8bdce39c715d2339cc8b0105d65dfef9924e Mon Sep 17 00:00:00 2001 From: ChPi Date: Fri, 12 Nov 2021 10:36:58 +0800 Subject: [PATCH] [Bug] Fix NumberFormatException for partition cache (#6846) Fix #6845 --- .../apache/doris/qe/cache/PartitionRange.java | 30 ++++++++++++------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/qe/cache/PartitionRange.java b/fe/fe-core/src/main/java/org/apache/doris/qe/cache/PartitionRange.java index 91e393ea1c..5f815bd747 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/qe/cache/PartitionRange.java +++ b/fe/fe-core/src/main/java/org/apache/doris/qe/cache/PartitionRange.java @@ -27,7 +27,6 @@ import org.apache.doris.analysis.LiteralExpr; import org.apache.doris.analysis.IntLiteral; import org.apache.doris.catalog.OlapTable; import org.apache.doris.catalog.PartitionItem; -import org.apache.doris.catalog.PrimitiveType; import org.apache.doris.catalog.RangePartitionInfo; import org.apache.doris.catalog.Column; import org.apache.doris.catalog.Partition; @@ -149,17 +148,26 @@ public class PartitionRange { public Date date; public boolean init(Type type, String str) { - if (type.getPrimitiveType() == PrimitiveType.DATE) { - try { - date = df10.parse(str); - } catch (Exception e) { - LOG.warn("parse error str{}.", str); + switch (type.getPrimitiveType()) { + case DATE: + try { + date = df10.parse(str); + } catch (Exception e) { + LOG.warn("parse error str{}.", str); + return false; + } + keyType = KeyType.DATE; + break; + case TINYINT: + case SMALLINT: + case INT: + case BIGINT: + value = Long.parseLong(str); + keyType = KeyType.LONG; + break; + default: + LOG.info("PartitionCache not support such key type {}", type.toSql()); return false; - } - keyType = KeyType.DATE; - } else { - value = Long.valueOf(str); - keyType = KeyType.LONG; } return true; }