From de3a75127c79a44690b00734cc2602411b2cc955 Mon Sep 17 00:00:00 2001 From: lukaseder Date: Sun, 26 Feb 2017 15:33:40 +0100 Subject: [PATCH] [#1735] Add Setting to indicate that bind values should not be cast --- .../java/org/jooq/impl/AbstractContext.java | 21 +++++++++++++++--- .../resources/xsd/jooq-runtime-3.10.0.xsd | 22 +++++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java b/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java index fb73783f81..3089a2e778 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java @@ -62,6 +62,7 @@ import org.jooq.Table; import org.jooq.VisitContext; import org.jooq.VisitListener; import org.jooq.VisitListenerProvider; +import org.jooq.conf.ParamCastMode; import org.jooq.conf.ParamType; import org.jooq.conf.Settings; import org.jooq.conf.SettingsTools; @@ -93,10 +94,11 @@ abstract class AbstractContext> extends AbstractScope imple // [#2694] Unified RenderContext and BindContext traversal final ParamType forcedParamType; + final boolean castModeOverride; + CastMode castMode; ParamType paramType = ParamType.INDEXED; boolean qualifySchema = true; boolean qualifyCatalog = true; - CastMode castMode = CastMode.DEFAULT; AbstractContext(Configuration configuration, PreparedStatement stmt) { super(configuration); @@ -133,9 +135,19 @@ abstract class AbstractContext> extends AbstractScope imple this.visitClauses = null; } - forcedParamType = SettingsTools.getStatementType(settings()) == StatementType.STATIC_STATEMENT + this.forcedParamType = SettingsTools.getStatementType(settings()) == StatementType.STATIC_STATEMENT ? ParamType.INLINED : null; + + ParamCastMode m = settings().getParamCastMode(); + this.castModeOverride = + m != ParamCastMode.DEFAULT && m != null; + this.castMode = + m == ParamCastMode.ALWAYS + ? CastMode.ALWAYS + : m == ParamCastMode.NEVER + ? CastMode.NEVER + : CastMode.DEFAULT; } // ------------------------------------------------------------------------ @@ -383,7 +395,7 @@ abstract class AbstractContext> extends AbstractScope imple declareCTE(true); } - else if (castMode() != CastMode.DEFAULT && !internal.generatesCast()) { + else if (!castModeOverride && castMode() != CastMode.DEFAULT && !internal.generatesCast()) { CastMode previous = castMode(); castMode(CastMode.DEFAULT); @@ -593,6 +605,9 @@ abstract class AbstractContext> extends AbstractScope imple sb.append( "bind index ["); sb.append(index); sb.append("]"); + sb.append("\ncast mode ["); + sb.append(castMode); + sb.append("]"); sb.append("\ndeclaring ["); if (declareFields) { diff --git a/jOOQ/src/main/resources/xsd/jooq-runtime-3.10.0.xsd b/jOOQ/src/main/resources/xsd/jooq-runtime-3.10.0.xsd index 637843d1a4..826007c445 100644 --- a/jOOQ/src/main/resources/xsd/jooq-runtime-3.10.0.xsd +++ b/jOOQ/src/main/resources/xsd/jooq-runtime-3.10.0.xsd @@ -57,6 +57,9 @@ --> + + + @@ -208,6 +211,25 @@ + + + + + + + + + + + + + +