From 75a78841560eb3eb1222827fca1d7719c0e6bb4f Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 7 Oct 2024 15:03:50 +0200 Subject: [PATCH] [jOOQ/jOOQ#17401] NUMERIC bind values passed to SQL Server VALUES constructor may lose scale if not explicit DataType is supplied --- jOOQ/src/main/java/org/jooq/impl/Call.java | 5 +++++ .../main/java/org/jooq/impl/DefaultBinding.java | 11 +++++++++++ .../org/jooq/impl/QueryPartCollectionView.java | 15 +++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/jOOQ/src/main/java/org/jooq/impl/Call.java b/jOOQ/src/main/java/org/jooq/impl/Call.java index 85a3f91f18..18ad474b82 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Call.java +++ b/jOOQ/src/main/java/org/jooq/impl/Call.java @@ -204,6 +204,11 @@ package org.jooq.impl; + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java index 78442f480c..f67005b189 100644 --- a/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java +++ b/jOOQ/src/main/java/org/jooq/impl/DefaultBinding.java @@ -969,6 +969,17 @@ public class DefaultBinding implements Binding { + + + + + + + + + + + diff --git a/jOOQ/src/main/java/org/jooq/impl/QueryPartCollectionView.java b/jOOQ/src/main/java/org/jooq/impl/QueryPartCollectionView.java index 36066ef34a..0ea8e96f46 100644 --- a/jOOQ/src/main/java/org/jooq/impl/QueryPartCollectionView.java +++ b/jOOQ/src/main/java/org/jooq/impl/QueryPartCollectionView.java @@ -51,6 +51,7 @@ import java.util.Collection; import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.function.BiConsumer; import java.util.function.Function; import org.jooq.Condition; @@ -85,6 +86,20 @@ implements return new QueryPartCollectionView<>(wrapped); } + static final QueryPartCollectionView wrap(Collection wrapped, BiConsumer, ? super QueryPart> acceptElement) { + return new QueryPartCollectionView<>(wrapped) { + @Override + protected void acceptElement(Context ctx, T part) { + + // [#11969] See QueryPartCollectionView.acceptElement() method + if (part instanceof Condition c) + acceptElement.accept(ctx, DSL.field(c)); + else + acceptElement.accept(ctx, part); + } + }; + } + QueryPartCollectionView(Collection wrapped) { this.wrapped = wrapped != null ? wrapped : Collections.emptyList();