From 55cefa0f5abe2f3d6aee74ef8863dce9a449292e Mon Sep 17 00:00:00 2001 From: Knut Wannheden Date: Wed, 12 Jun 2019 12:33:51 +0200 Subject: [PATCH] [jOOQ/jOOQ#8753] Add Context#sql(long), sql(float), and sql(double) Adds the methods Context#sql(long), sql(float), and sql(double). These are used by the default converters in DefaultBinding for better performance. Note that there is no sql(boolean), since "true" and "false" are expected to be treated as keywords and as such respect the keyword rendering style. --- jOOQ/src/main/java/org/jooq/Context.java | 15 ++++++++++++ .../src/main/java/org/jooq/RenderContext.java | 18 ++++++++++++++ .../org/jooq/impl/AbstractBindContext.java | 15 ++++++++++++ .../java/org/jooq/impl/DefaultBinding.java | 10 ++++---- .../org/jooq/impl/DefaultRenderContext.java | 24 +++++++++++++++++++ 5 files changed, 77 insertions(+), 5 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/Context.java b/jOOQ/src/main/java/org/jooq/Context.java index bfa16ce75c..0efcfabea4 100644 --- a/jOOQ/src/main/java/org/jooq/Context.java +++ b/jOOQ/src/main/java/org/jooq/Context.java @@ -289,6 +289,21 @@ public interface Context> extends Scope { */ C sql(int sql); + /** + * Append some SQL to the context's contained {@link StringBuilder}. + */ + C sql(long sql); + + /** + * Append some SQL to the context's contained {@link StringBuilder}. + */ + C sql(float sql); + + /** + * Append some SQL to the context's contained {@link StringBuilder}. + */ + C sql(double sql); + /** * Override the value of {@link Settings#isRenderFormatted()}. */ diff --git a/jOOQ/src/main/java/org/jooq/RenderContext.java b/jOOQ/src/main/java/org/jooq/RenderContext.java index 3cdd9ad567..15518a1183 100644 --- a/jOOQ/src/main/java/org/jooq/RenderContext.java +++ b/jOOQ/src/main/java/org/jooq/RenderContext.java @@ -114,6 +114,24 @@ public interface RenderContext extends Context { @Override RenderContext sql(int sql); + /** + * Append some SQL to the context's contained {@link StringBuilder}. + */ + @Override + RenderContext sql(long sql); + + /** + * Append some SQL to the context's contained {@link StringBuilder}. + */ + @Override + RenderContext sql(float sql); + + /** + * Append some SQL to the context's contained {@link StringBuilder}. + */ + @Override + RenderContext sql(double sql); + /** * Recurse rendering. * diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractBindContext.java b/jOOQ/src/main/java/org/jooq/impl/AbstractBindContext.java index 12e376b5c2..284c6b8d22 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractBindContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractBindContext.java @@ -177,6 +177,21 @@ abstract class AbstractBindContext extends AbstractContext implemen return this; } + @Override + public final BindContext sql(long sql) { + return this; + } + + @Override + public final BindContext sql(float sql) { + return this; + } + + @Override + public final BindContext sql(double sql) { + return this; + } + @Override public final BindContext format(boolean format) { return this; diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index f475c10fbc..c589500239 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -1659,7 +1659,7 @@ public class DefaultBinding implements Binding { @Override final void sqlInline0(BindingSQLContext ctx, Byte value) { - ctx.render().sql(value.toString()); + ctx.render().sql(value); } @Override @@ -2151,7 +2151,7 @@ public class DefaultBinding implements Binding { else ctx.render().visit(K_CAST).sql('(').visit(inline("NaN")).sql(' ').visit(K_AS).sql(' ').visit(keyword(DOUBLE.getCastTypeName(ctx.configuration()))).sql(')'); else - ctx.render().sql(value.toString()); + ctx.render().sql(value); } @Override @@ -2324,7 +2324,7 @@ public class DefaultBinding implements Binding { else ctx.render().visit(K_CAST).sql('(').visit(inline("NaN")).sql(' ').visit(K_AS).sql(' ').visit(keyword(DOUBLE.getCastTypeName(ctx.configuration()))).sql(')'); else - ctx.render().sql(value.toString()); + ctx.render().sql(value); } @Override @@ -2428,7 +2428,7 @@ public class DefaultBinding implements Binding { @Override final void sqlInline0(BindingSQLContext ctx, Long value) { - ctx.render().sql(value.toString()); + ctx.render().sql(value); } @Override @@ -3485,7 +3485,7 @@ public class DefaultBinding implements Binding { @Override final void sqlInline0(BindingSQLContext ctx, Short value) { - ctx.render().sql(value.toString()); + ctx.render().sql(value); } @Override diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultRenderContext.java b/jOOQ/src/main/java/org/jooq/impl/DefaultRenderContext.java index 6316e3cfd1..a51e2d5ce2 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultRenderContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultRenderContext.java @@ -381,6 +381,30 @@ class DefaultRenderContext extends AbstractContext implements Ren return this; } + @Override + public final RenderContext sql(long l) { + sql.append(l); + separator = false; + newline = false; + return this; + } + + @Override + public final RenderContext sql(float f) { + sql.append(f); + separator = false; + newline = false; + return this; + } + + @Override + public final RenderContext sql(double d) { + sql.append(d); + separator = false; + newline = false; + return this; + } + @Override public final RenderContext formatNewLine() { if (cachedRenderFormatted) {