diff --git a/jOOQ/src/main/java/org/jooq/conf/SettingsTools.java b/jOOQ/src/main/java/org/jooq/conf/SettingsTools.java index c6a112ff73..c4dd3a34d2 100644 --- a/jOOQ/src/main/java/org/jooq/conf/SettingsTools.java +++ b/jOOQ/src/main/java/org/jooq/conf/SettingsTools.java @@ -142,7 +142,7 @@ public final class SettingsTools { } } - return BackslashEscaping.OFF; + return BackslashEscaping.DEFAULT; } /** diff --git a/jOOQ/src/main/java/org/jooq/impl/Utils.java b/jOOQ/src/main/java/org/jooq/impl/Utils.java index dffef84e4c..6739814194 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Utils.java +++ b/jOOQ/src/main/java/org/jooq/impl/Utils.java @@ -43,7 +43,10 @@ package org.jooq.impl; import static java.lang.Boolean.FALSE; // ... import static org.jooq.SQLDialect.CUBRID; +import static org.jooq.SQLDialect.MARIADB; +import static org.jooq.SQLDialect.MYSQL; import static org.jooq.SQLDialect.POSTGRES; +import static org.jooq.conf.BackslashEscaping.DEFAULT; import static org.jooq.conf.BackslashEscaping.ON; import static org.jooq.conf.ParamType.INLINED; import static org.jooq.conf.ParamType.NAMED; @@ -97,6 +100,7 @@ import java.util.Arrays; import java.util.Calendar; import java.util.Collection; import java.util.Collections; +import java.util.EnumSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; @@ -1166,13 +1170,14 @@ final class Utils { // [#1593] Create a dummy renderer if we're in bind mode if (render == null) render = new DefaultRenderContext(bind.configuration()); - // [#3630] Depending on this setting, we need to consider backslashes as escape characters within string literals. - BackslashEscaping escaping = getBackslashEscaping(ctx.configuration().settings()); - SQLDialect dialect = render.configuration().dialect(); SQLDialect family = dialect.family(); String[][] quotes = QUOTES.get(family); + // [#3630] Depending on this setting, we need to consider backslashes as escape characters within string literals. + BackslashEscaping escaping = getBackslashEscaping(ctx.configuration().settings()); + boolean needsBackslashEscaping = escaping == ON || (escaping == DEFAULT && EnumSet.of(MARIADB, MYSQL).contains(family)); + for (int i = 0; i < sqlChars.length; i++) { // [#1797] Skip content inside of single-line comments, e.g. @@ -1213,7 +1218,7 @@ final class Utils { for (;;) { // [#3000] [#3630] Consume backslash-escaped characters if needed - if (sqlChars[i] == '\\' && escaping == ON) { + if (sqlChars[i] == '\\' && needsBackslashEscaping) { render.sql(sqlChars[i++]); } diff --git a/jOOQ/src/main/resources/xsd/jooq-runtime-3.5.0.xsd b/jOOQ/src/main/resources/xsd/jooq-runtime-3.5.0.xsd index 37ef467a1a..b31a1a3a6a 100644 --- a/jOOQ/src/main/resources/xsd/jooq-runtime-3.5.0.xsd +++ b/jOOQ/src/main/resources/xsd/jooq-runtime-3.5.0.xsd @@ -35,7 +35,7 @@ - + + + +