From ea7678f32978f756c349d2b779a61c96aff5cd86 Mon Sep 17 00:00:00 2001 From: Cong Hu Date: Mon, 4 Dec 2023 20:56:14 +0800 Subject: [PATCH 1/3] Optimizing the performance of QuoteCharacter lookup. --- .../metadata/database/enums/QuoteCharacter.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/enums/QuoteCharacter.java b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/enums/QuoteCharacter.java index e27050112c52f..5e8593c88c908 100644 --- a/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/enums/QuoteCharacter.java +++ b/infra/database/core/src/main/java/org/apache/shardingsphere/infra/database/core/metadata/database/enums/QuoteCharacter.java @@ -21,7 +21,8 @@ import lombok.Getter; import lombok.RequiredArgsConstructor; -import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; /** * Quote character. @@ -42,6 +43,17 @@ public enum QuoteCharacter { NONE("", ""); + private static final Map BY_FIRST_CHAR = new HashMap<>(QuoteCharacter.values().length - 1, 1L); + + static { + for (QuoteCharacter each : values()) { + if (each.equals(NONE)) { + continue; + } + BY_FIRST_CHAR.put(each.startDelimiter.charAt(0), each); + } + } + private final String startDelimiter; private final String endDelimiter; @@ -56,7 +68,7 @@ public static QuoteCharacter getQuoteCharacter(final String value) { if (Strings.isNullOrEmpty(value)) { return NONE; } - return Arrays.stream(values()).filter(each -> NONE != each && each.startDelimiter.charAt(0) == value.charAt(0)).findFirst().orElse(NONE); + return BY_FIRST_CHAR.getOrDefault(value.charAt(0), NONE); } /** From 2b7d24f150e2813880eeab7715743100452c9d07 Mon Sep 17 00:00:00 2001 From: Cong Hu Date: Sun, 10 Dec 2023 13:37:08 +0800 Subject: [PATCH 2/3] retrigger checks From c507a0e604884f2528b842409e7e5eda0c6c4f02 Mon Sep 17 00:00:00 2001 From: Cong Hu Date: Tue, 12 Dec 2023 11:25:51 +0800 Subject: [PATCH 3/3] retrigger checks