From e3c9874c4c379d8afa8ae0f6c7e2d457d2701b2f Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Tue, 29 Oct 2024 09:03:15 +0100 Subject: [PATCH] [jOOQ/jOOQ#17506] ORA-00904: invalid identifier when trying to insert into tables with lower case identifier in Oracle --- .../java/org/jooq/impl/AbstractDMLQuery.java | 19 ++++++++++++++++++ .../java/org/jooq/impl/UnqualifiedName.java | 20 +++++++++++-------- 2 files changed, 31 insertions(+), 8 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java b/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java index aabbef125b..27159d2cdc 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractDMLQuery.java @@ -792,6 +792,25 @@ abstract class AbstractDMLQuery extends AbstractRowCountQuery + + + + + + + + + + + + + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java b/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java index da1cac16c1..7585d1afc9 100644 --- a/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java +++ b/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java @@ -51,6 +51,7 @@ import java.util.Arrays; import org.jooq.Context; import org.jooq.Name; +import org.jooq.Scope; import org.jooq.conf.RenderQuotedNames; import org.jooq.conf.SettingsTools; import org.jooq.tools.StringUtils; @@ -92,20 +93,23 @@ final class UnqualifiedName extends AbstractName { - RenderQuotedNames q = SettingsTools.getRenderQuotedNames(ctx.settings()); - boolean previous = ctx.quote(); - boolean current = quoted != SYSTEM && ( - q == RenderQuotedNames.ALWAYS - || q == RenderQuotedNames.EXPLICIT_DEFAULT_QUOTED && (quoted == DEFAULT || quoted == QUOTED) - || q == RenderQuotedNames.EXPLICIT_DEFAULT_UNQUOTED && quoted == QUOTED - ); - ctx.quote(current); + ctx.quote(quoted(ctx)); ctx.literal(defaultIfNull(name, "")); ctx.quote(previous); } + final boolean quoted(Scope ctx) { + RenderQuotedNames q = SettingsTools.getRenderQuotedNames(ctx.settings()); + + return quoted != SYSTEM && ( + q == RenderQuotedNames.ALWAYS + || q == RenderQuotedNames.EXPLICIT_DEFAULT_QUOTED && (quoted == DEFAULT || quoted == QUOTED) + || q == RenderQuotedNames.EXPLICIT_DEFAULT_UNQUOTED && quoted == QUOTED + ); + } + @Override public final String first() { return name;