[#3000] Fixed also org.jooq.impl.Val implementation
This commit is contained in:
parent
74c76a15c5
commit
83d12c8d70
@ -1175,8 +1175,7 @@ final class Utils {
|
||||
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));
|
||||
boolean needsBackslashEscaping = needsBackslashEscaping(ctx.configuration());
|
||||
|
||||
for (int i = 0; i < sqlChars.length; i++) {
|
||||
|
||||
@ -1340,6 +1339,14 @@ final class Utils {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Whether backslash escaping is needed in inlined string literals.
|
||||
*/
|
||||
static final boolean needsBackslashEscaping(Configuration configuration) {
|
||||
BackslashEscaping escaping = getBackslashEscaping(configuration.settings());
|
||||
return escaping == ON || (escaping == DEFAULT && EnumSet.of(MARIADB, MYSQL).contains(configuration.dialect().family()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Peek for a string at a given <code>index</code> of a <code>char[]</code>
|
||||
*
|
||||
|
||||
@ -60,12 +60,11 @@ import static org.jooq.SQLDialect.POSTGRES;
|
||||
import static org.jooq.SQLDialect.SQLITE;
|
||||
// ...
|
||||
// ...
|
||||
import static org.jooq.conf.BackslashEscaping.ON;
|
||||
import static org.jooq.conf.ParamType.NAMED;
|
||||
import static org.jooq.conf.ParamType.NAMED_OR_INLINED;
|
||||
import static org.jooq.impl.DSL.name;
|
||||
import static org.jooq.impl.DSL.using;
|
||||
import static org.jooq.impl.Utils.settings;
|
||||
import static org.jooq.impl.Utils.needsBackslashEscaping;
|
||||
import static org.jooq.tools.StringUtils.leftPad;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@ -84,7 +83,6 @@ import org.jooq.RenderContext;
|
||||
import org.jooq.SQLDialect;
|
||||
import org.jooq.Schema;
|
||||
import org.jooq.UDTRecord;
|
||||
import org.jooq.conf.BackslashEscaping;
|
||||
import org.jooq.tools.StringUtils;
|
||||
import org.jooq.types.Interval;
|
||||
|
||||
@ -642,10 +640,9 @@ class Val<T> extends AbstractParam<T> {
|
||||
* Escape a string literal by replacing <code>'</code> by <code>''</code>, and possibly also backslashes.
|
||||
*/
|
||||
private final String escape(Object val, Context<?> context) {
|
||||
BackslashEscaping escaping = settings(context.configuration()).getBackslashEscaping();
|
||||
String result = val.toString();
|
||||
|
||||
if (escaping == ON)
|
||||
if (needsBackslashEscaping(context.configuration()))
|
||||
result = result.replace("\\", "\\\\");
|
||||
|
||||
return result.replace("'", "''");
|
||||
|
||||
Loading…
Reference in New Issue
Block a user