From 116cd25994dea8e382117cd4569e1dc172fd362a Mon Sep 17 00:00:00 2001 From: Knut Wannheden Date: Tue, 6 Aug 2019 13:43:29 +0200 Subject: [PATCH] [jOOQ/jOOQ#8986] Fix DDLDatabaseInitializer for RenderNameCase.UPPER DDLDatabaseInitializer could previously cause a StackOverflowError when using RenderNameCase.UPPER or RenderNameCase.LOWER. This is now fixed. --- .../jooq/extensions/ddl/DDLDatabaseInitializer.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/jOOQ-extensions/src/main/java/org/jooq/extensions/ddl/DDLDatabaseInitializer.java b/jOOQ-extensions/src/main/java/org/jooq/extensions/ddl/DDLDatabaseInitializer.java index 6a65ea862d..ff34fb0d13 100644 --- a/jOOQ-extensions/src/main/java/org/jooq/extensions/ddl/DDLDatabaseInitializer.java +++ b/jOOQ-extensions/src/main/java/org/jooq/extensions/ddl/DDLDatabaseInitializer.java @@ -115,24 +115,27 @@ public final class DDLDatabaseInitializer { boolean changed = false; for (int i = 0; i < parts.length; i++) { + Name replacement = parts[i]; switch (nameCase) { case LOWER_IF_UNQUOTED: if (parts[i].quoted() == Quoted.QUOTED) break; case LOWER: - parts[i] = DSL.quotedName(parts[i].first().toLowerCase(locale)); - changed = true; + replacement = DSL.quotedName(parts[i].first().toLowerCase(locale)); break; case UPPER_IF_UNQUOTED: if (parts[i].quoted() == Quoted.QUOTED) break; case UPPER: - parts[i] = DSL.quotedName(parts[i].first().toUpperCase(locale)); - changed = true; + replacement = DSL.quotedName(parts[i].first().toUpperCase(locale)); break; default: break; } + if (!replacement.equals(parts[i])) { + parts[i] = replacement; + changed = true; + } } if (changed)