diff --git a/jOOQ/src/main/java/org/jooq/conf/RenderQuotedNames.java b/jOOQ/src/main/java/org/jooq/conf/RenderQuotedNames.java index ebaa23702d..3512d1fabb 100644 --- a/jOOQ/src/main/java/org/jooq/conf/RenderQuotedNames.java +++ b/jOOQ/src/main/java/org/jooq/conf/RenderQuotedNames.java @@ -21,6 +21,8 @@ import javax.xml.bind.annotation.XmlType; * <simpleType name="RenderQuotedNames"> * <restriction base="{http://www.w3.org/2001/XMLSchema}string"> * <enumeration value="ALWAYS"/> + * <enumeration value="EXPLICIT_DEFAULT_QUOTED"/> + * <enumeration value="EXPLICIT_DEFAULT_UNQUOTED"/> * <enumeration value="NEVER"/> * </restriction> * </simpleType> @@ -32,6 +34,8 @@ import javax.xml.bind.annotation.XmlType; public enum RenderQuotedNames { ALWAYS, + EXPLICIT_DEFAULT_QUOTED, + EXPLICIT_DEFAULT_UNQUOTED, NEVER; public String value() { diff --git a/jOOQ/src/main/java/org/jooq/conf/Settings.java b/jOOQ/src/main/java/org/jooq/conf/Settings.java index 9e78d9ea24..f9813f9e86 100644 --- a/jOOQ/src/main/java/org/jooq/conf/Settings.java +++ b/jOOQ/src/main/java/org/jooq/conf/Settings.java @@ -43,9 +43,9 @@ public class Settings @XmlElement(defaultValue = "true") protected Boolean renderSchema = true; protected RenderMapping renderMapping; - @XmlElement(defaultValue = "ALWAYS") + @XmlElement(defaultValue = "EXPLICIT_DEFAULT_QUOTED") @XmlSchemaType(name = "string") - protected RenderQuotedNames renderQuotedNames = RenderQuotedNames.ALWAYS; + protected RenderQuotedNames renderQuotedNames = RenderQuotedNames.EXPLICIT_DEFAULT_QUOTED; @XmlElement(defaultValue = "AS_IS") @XmlSchemaType(name = "string") protected RenderNameCase renderNameCase = RenderNameCase.AS_IS; diff --git a/jOOQ/src/main/java/org/jooq/conf/SettingsTools.java b/jOOQ/src/main/java/org/jooq/conf/SettingsTools.java index 9dd9737450..882996265d 100644 --- a/jOOQ/src/main/java/org/jooq/conf/SettingsTools.java +++ b/jOOQ/src/main/java/org/jooq/conf/SettingsTools.java @@ -236,11 +236,11 @@ public final class SettingsTools { public static final RenderQuotedNames getRenderQuotedNames(Settings settings) { RenderQuotedNames result = settings.getRenderQuotedNames(); - if (result == null || result == RenderQuotedNames.ALWAYS) { + if (result == null || result == RenderQuotedNames.EXPLICIT_DEFAULT_QUOTED) { RenderNameStyle style = settings.getRenderNameStyle(); if (style == null || style == RenderNameStyle.QUOTED) - result = RenderQuotedNames.ALWAYS; + result = RenderQuotedNames.EXPLICIT_DEFAULT_QUOTED; else result = RenderQuotedNames.NEVER; } diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java b/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java index 1cbdd2329c..3273b219b6 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java @@ -80,7 +80,6 @@ import org.jooq.VisitListener; import org.jooq.VisitListenerProvider; import org.jooq.conf.ParamCastMode; import org.jooq.conf.ParamType; -import org.jooq.conf.RenderQuotedNames; import org.jooq.conf.Settings; import org.jooq.conf.SettingsTools; import org.jooq.conf.StatementType; @@ -179,7 +178,6 @@ abstract class AbstractContext> extends AbstractScope imple : m == ParamCastMode.NEVER ? CastMode.NEVER : CastMode.DEFAULT; - this.quote = SettingsTools.getRenderQuotedNames(settings()) == RenderQuotedNames.ALWAYS; this.scopeStack = new ScopeStack(); } diff --git a/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java b/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java index 204a502823..3ccf87ae86 100644 --- a/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java +++ b/jOOQ/src/main/java/org/jooq/impl/UnqualifiedName.java @@ -39,6 +39,8 @@ package org.jooq.impl; import org.jooq.Context; import org.jooq.Name; +import org.jooq.conf.RenderQuotedNames; +import org.jooq.conf.SettingsTools; /** * The default implementation for an unqualified SQL identifier. @@ -66,15 +68,17 @@ final class UnqualifiedName extends AbstractName { @Override public final void accept(Context ctx) { + RenderQuotedNames q = SettingsTools.getRenderQuotedNames(ctx.settings()); + boolean previous = ctx.quote(); + boolean current = + q == RenderQuotedNames.ALWAYS + || q == RenderQuotedNames.EXPLICIT_DEFAULT_QUOTED && (quoted == null || quoted) + || q == RenderQuotedNames.EXPLICIT_DEFAULT_UNQUOTED && quoted != null && quoted; - if (quoted != null) - ctx.quote(quoted); - + ctx.quote(current); ctx.literal(name); - - if (quoted != null) - ctx.quote(previous); + ctx.quote(previous); } @Override diff --git a/jOOQ/src/main/resources/xsd/jooq-runtime-3.12.0.xsd b/jOOQ/src/main/resources/xsd/jooq-runtime-3.12.0.xsd index 79721d51e3..b3c950451e 100644 --- a/jOOQ/src/main/resources/xsd/jooq-runtime-3.12.0.xsd +++ b/jOOQ/src/main/resources/xsd/jooq-runtime-3.12.0.xsd @@ -33,7 +33,7 @@ available using synonyms]]> generated SQL.]]> - + This only affects names created through {@link org.jooq.impl.DSL#name(String)} methods (including those that are implicitly created through this method), not {@link org.jooq.impl.DSL#quotedName(String)} or {@link org.jooq.impl.DSL#unquotedName(String)}, whose behaviour cannot be overridden. @@ -441,6 +441,12 @@ Either <input/> or <inputExpression/> must be provided]]> + + + + + +