From 361562e1daec20c3b369e7db14f0e5abb7b26893 Mon Sep 17 00:00:00 2001 From: Steven Schlansker Date: Thu, 24 Sep 2020 12:03:21 -0700 Subject: [PATCH] Batch insert: fix inserting constant 'null' Fixes #1761 --- .../org/jdbi/v3/core/internal/IterableLike.java | 2 +- .../java/org/jdbi/v3/sqlobject/TestBatching.java | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/core/src/main/java/org/jdbi/v3/core/internal/IterableLike.java b/core/src/main/java/org/jdbi/v3/core/internal/IterableLike.java index 80b0e3bf2e..8a60f53839 100644 --- a/core/src/main/java/org/jdbi/v3/core/internal/IterableLike.java +++ b/core/src/main/java/org/jdbi/v3/core/internal/IterableLike.java @@ -45,7 +45,7 @@ private IterableLike() { public static boolean isIterable(Object maybeIterable) { return maybeIterable instanceof Iterator || maybeIterable instanceof Iterable - || maybeIterable.getClass().isArray(); + || (maybeIterable != null && maybeIterable.getClass().isArray()); } /** diff --git a/sqlobject/src/test/java/org/jdbi/v3/sqlobject/TestBatching.java b/sqlobject/src/test/java/org/jdbi/v3/sqlobject/TestBatching.java index 8f2d659fb4..bd88f6e4a9 100644 --- a/sqlobject/src/test/java/org/jdbi/v3/sqlobject/TestBatching.java +++ b/sqlobject/src/test/java/org/jdbi/v3/sqlobject/TestBatching.java @@ -67,6 +67,21 @@ public void testInsertSingleIteratorNoTx() { assertThat(b.size()).isEqualTo(2); } + @Test + public void testBindConstantNull() { + UsesBatching b = handle.attach(UsesBatching.class); + List ids = Arrays.asList(1, 2, 3, 4, 5); + + b.withConstantValue(ids, null); + + assertThat(b.size()).isEqualTo(5); + + List names = handle.createQuery("select distinct name from something") + .mapTo(String.class) + .list(); + assertThat(names).containsExactly((String) null); + } + @Test public void testBindConstantValue() { UsesBatching b = handle.attach(UsesBatching.class);