diff --git a/client-v2/src/main/java/com/clickhouse/client/api/data_formats/internal/BinaryStreamReader.java b/client-v2/src/main/java/com/clickhouse/client/api/data_formats/internal/BinaryStreamReader.java index 7e291a11c..c1c4faadf 100644 --- a/client-v2/src/main/java/com/clickhouse/client/api/data_formats/internal/BinaryStreamReader.java +++ b/client-v2/src/main/java/com/clickhouse/client/api/data_formats/internal/BinaryStreamReader.java @@ -624,7 +624,7 @@ public ArrayValue readArray(ClickHouseColumn column) throws IOException { public ArrayValue readArrayItem(ClickHouseColumn itemTypeColumn, int len) throws IOException { ArrayValue array; - if (itemTypeColumn.isNullable()) { + if (itemTypeColumn.isNullable() || itemTypeColumn.getDataType() == ClickHouseDataType.Variant) { array = new ArrayValue(Object.class, len); for (int i = 0; i < len; i++) { array.set(i, readValue(itemTypeColumn)); diff --git a/client-v2/src/test/java/com/clickhouse/client/datatypes/DataTypeTests.java b/client-v2/src/test/java/com/clickhouse/client/datatypes/DataTypeTests.java index 1ab8797ea..9ae67693d 100644 --- a/client-v2/src/test/java/com/clickhouse/client/datatypes/DataTypeTests.java +++ b/client-v2/src/test/java/com/clickhouse/client/datatypes/DataTypeTests.java @@ -348,6 +348,18 @@ public void testVariantWithArrays() throws Exception { "[[a, b], [c, d]]", "[[e, f], [j, h]]", }); + + testVariantWith("arrays", new String[]{"field Array(Variant(String, Int32))"}, + new Object[]{ + new Object[]{1, 2}, + new Object[]{"a", 3}, + new Object[]{3, "d"} + }, + new String[]{ + "[1, 2]", + "[a, 3]", + "[3, d]", + }); } @Test(groups = {"integration"})