This is an automated email from the ASF dual-hosted git repository. doebele pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/empire-db.git
The following commit(s) were added to refs/heads/master by this push: new 2719fb12 EMPIREDB-470 DateUtils: cache DateTimeFormatter for patterns 2719fb12 is described below commit 2719fb12000790d6bba1b1aecaa8b5835b19ea3e Author: Rainer Döbele <doeb...@apache.org> AuthorDate: Fri Jul 18 12:38:02 2025 +0200 EMPIREDB-470 DateUtils: cache DateTimeFormatter for patterns --- .../main/java/org/apache/empire/commons/DateUtils.java | 15 +++++++++++++++ .../src/main/java/org/apache/empire/db/DBSQLBuilder.java | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/empire-db/src/main/java/org/apache/empire/commons/DateUtils.java b/empire-db/src/main/java/org/apache/empire/commons/DateUtils.java index 81f7b1ec..5d8dbe76 100644 --- a/empire-db/src/main/java/org/apache/empire/commons/DateUtils.java +++ b/empire-db/src/main/java/org/apache/empire/commons/DateUtils.java @@ -35,6 +35,7 @@ import java.util.Date; import java.util.HashMap; import java.util.Locale; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.TimeUnit; import org.slf4j.Logger; @@ -483,6 +484,20 @@ public class DateUtils /* * Local Date formatting */ + + public static final String FORMAT_PATTERN_ISO_DATE ="yyyy-MM-dd"; + public static final String FORMAT_PATTERN_ISO_TIME ="HH:mm:ss"; + public static final String FORMAT_PATTERN_ISO_DATETIME ="yyyy-MM-dd HH:mm:ss"; + public static final String FORMAT_PATTERN_ISO_TIMESTAMP ="yyyy-MM-dd HH:mm:ss.SSS"; + public static final String FORMAT_PATTERN_ISO_TIMESTAMP6 ="yyyy-MM-dd HH:mm:ss.SSSSSS"; + public static final String FORMAT_PATTERN_ISO_TIMESTAMP9 ="yyyy-MM-dd HH:mm:ss.SSSSSSSSS"; + + private static final Map<String, DateTimeFormatter> patternFormatterMap = new ConcurrentHashMap<String, DateTimeFormatter>(); + + public static DateTimeFormatter getPatternFormatter(String pattern) + { + return patternFormatterMap.computeIfAbsent(pattern, DateTimeFormatter::ofPattern); + } public static DateTimeFormatter getLocalDateFormatter(Locale locale) { diff --git a/empire-db/src/main/java/org/apache/empire/db/DBSQLBuilder.java b/empire-db/src/main/java/org/apache/empire/db/DBSQLBuilder.java index 9a51c551..ba7004df 100644 --- a/empire-db/src/main/java/org/apache/empire/db/DBSQLBuilder.java +++ b/empire-db/src/main/java/org/apache/empire/db/DBSQLBuilder.java @@ -401,7 +401,7 @@ public abstract class DBSQLBuilder implements Appendable } // Convert to String String pattern = dbms.getSQLPhrase(sqlPattern); - DateTimeFormatter sqlFormat = DateTimeFormatter.ofPattern(pattern); + DateTimeFormatter sqlFormat = DateUtils.getPatternFormatter(pattern); String datetime = sqlFormat.format(ts); // Add micro / nanoseconds if (pattern.endsWith(".SSS") && nanos>0)