From 2de44105b7b62f8758d2ddaa8d6dcf0b08653f38 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 4 Feb 2021 15:15:47 +0100 Subject: [PATCH] [jOOQ/jOOQ#11369] Emulate using expressions in Db2 DECLARE .. DEFAULT statements This includes: - [jOOQ/jOOQ#8230] Fix SIGNAL implementation for Db2 - [jOOQ/jOOQ#11253] Added Context.castMode(CastMode, Consumer) - [jOOQ/jOOQ#11370] Occasionally repeated BEGIN BEGIN blocks --- jOOQ/src/main/java/org/jooq/Context.java | 10 ++++++++-- jOOQ/src/main/java/org/jooq/impl/AbstractContext.java | 5 +++++ jOOQ/src/main/java/org/jooq/impl/BlockImpl.java | 7 +++++++ jOOQ/src/main/java/org/jooq/impl/DeclarationImpl.java | 6 ++++++ jOOQ/src/main/java/org/jooq/impl/Signal.java | 8 ++++++++ 5 files changed, 34 insertions(+), 2 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/Context.java b/jOOQ/src/main/java/org/jooq/Context.java index 0b40649e23..d1310872b3 100644 --- a/jOOQ/src/main/java/org/jooq/Context.java +++ b/jOOQ/src/main/java/org/jooq/Context.java @@ -719,8 +719,7 @@ public interface Context> extends Scope { /** * Set the new context value for {@link #paramType()} for the scope of a - * {@link Consumer}, if a condition is - * true. + * {@link Consumer}, if a condition is true. */ @NotNull C paramTypeIf(ParamType paramType, boolean condition, Consumer runnable); @@ -737,6 +736,13 @@ public interface Context> extends Scope { @NotNull C castMode(CastMode mode); + /** + * Set the new cast mode for {@link #castMode()} for the scope of a + * {@link Consumer}. + */ + @NotNull + C castMode(CastMode mode, Consumer runnable); + /** * Set the new cast mode for {@link #castMode()}, if a condition is true. */ diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java b/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java index 77d4123816..dc457b30be 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractContext.java @@ -879,6 +879,11 @@ abstract class AbstractContext> extends AbstractScope imple return (C) this; } + @Override + public final C castMode(CastMode mode, Consumer consumer) { + return toggle(mode, this::castMode, this::castMode, consumer); + } + @Override public final C castModeIf(CastMode mode, boolean condition) { if (condition) diff --git a/jOOQ/src/main/java/org/jooq/impl/BlockImpl.java b/jOOQ/src/main/java/org/jooq/impl/BlockImpl.java index db8241a980..4c355a30f2 100644 --- a/jOOQ/src/main/java/org/jooq/impl/BlockImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/BlockImpl.java @@ -331,6 +331,13 @@ final class BlockImpl extends AbstractRowCountQuery implements Block { + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/DeclarationImpl.java b/jOOQ/src/main/java/org/jooq/impl/DeclarationImpl.java index 0e86c28b4d..150e35aed0 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DeclarationImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/DeclarationImpl.java @@ -190,6 +190,12 @@ package org.jooq.impl; + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/Signal.java b/jOOQ/src/main/java/org/jooq/impl/Signal.java index 83cf23b4d9..7eeac22b0b 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Signal.java +++ b/jOOQ/src/main/java/org/jooq/impl/Signal.java @@ -151,6 +151,14 @@ package org.jooq.impl; + + + + + + + +