From 153e99f64f686c6b65c512ae9c4c17749967010f Mon Sep 17 00:00:00 2001 From: Norman Jordan Date: Thu, 25 Apr 2024 15:52:04 -0700 Subject: [PATCH] Added a constant for no pattern match --- .../util/format/PostgresqlDateTimeFormatter.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/org/apache/calcite/util/format/PostgresqlDateTimeFormatter.java b/core/src/main/java/org/apache/calcite/util/format/PostgresqlDateTimeFormatter.java index 7ed049da9f14..a632acd542a2 100644 --- a/core/src/main/java/org/apache/calcite/util/format/PostgresqlDateTimeFormatter.java +++ b/core/src/main/java/org/apache/calcite/util/format/PostgresqlDateTimeFormatter.java @@ -39,6 +39,11 @@ private static class PatternConvertResult { final boolean matched; final String formattedString; + protected PatternConvertResult() { + matched = false; + formattedString = null; + } + protected PatternConvertResult(boolean matched, String formattedString) { this.matched = matched; this.formattedString = formattedString; @@ -90,7 +95,7 @@ protected NumberFormatPattern(Function converter, String. } if (patternToUse == null) { - return new PatternConvertResult(false, null); + return NO_PATTERN_MATCH; } parsePosition.setIndex(parsePosition.getIndex() + patternToUse.length()); @@ -217,16 +222,18 @@ protected StringFormatPattern(Function converter, String. } } - return new PatternConvertResult(false, null); + return NO_PATTERN_MATCH; } } + private static final PatternConvertResult NO_PATTERN_MATCH = new PatternConvertResult(); + /** * The format patterns that are supported. Order is very important, since some patterns * are prefixes of other patterns. */ @SuppressWarnings("TemporalAccessorGetChronoField") - private static FormatPattern[] formatPatterns = new FormatPattern[] { + private static final FormatPattern[] FORMAT_PATTERNS = new FormatPattern[] { new NumberFormatPattern( dt -> { final int hour = dt.get(ChronoField.HOUR_OF_AMPM); @@ -597,7 +604,7 @@ public static String toChar(String formatString, ZonedDateTime dateTime) { while (parsePosition.getIndex() < formatString.length()) { boolean matched = false; - for (FormatPattern formatPattern : formatPatterns) { + for (FormatPattern formatPattern : FORMAT_PATTERNS) { final PatternConvertResult patternConvertResult = formatPattern.convert(parsePosition, formatString, dateTime); if (patternConvertResult.matched) {