Skip to content

Commit a8c59f8

Browse files
committed
added more test. fixed dead code when instanceof Object[] was after if array branch
1 parent 007ae6c commit a8c59f8

File tree

3 files changed

+56
-6
lines changed

3 files changed

+56
-6
lines changed

jdbc-v2/src/main/java/com/clickhouse/jdbc/PreparedStatementImpl.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -793,6 +793,12 @@ private String encodeObject(Object x, Long length) throws SQLException {
793793
listString.append(']');
794794

795795
return listString.toString();
796+
} else if (x instanceof Object[]) {
797+
StringBuilder arrayString = new StringBuilder();
798+
arrayString.append('[');
799+
appendArrayElements((Object[]) x, arrayString);
800+
arrayString.append(']');
801+
return arrayString.toString();
796802
} else if (x.getClass().isArray()) {
797803
StringBuilder listString = new StringBuilder();
798804
listString.append('[');
@@ -841,12 +847,6 @@ private String encodeObject(Object x, Long length) throws SQLException {
841847
return encodeCharacterStream((Reader) x, length);
842848
} else if (x instanceof InputStream) {
843849
return encodeCharacterStream((InputStream) x, length);
844-
} else if (x instanceof Object[]) {
845-
StringBuilder arrayString = new StringBuilder();
846-
arrayString.append('[');
847-
appendArrayElements((Object[]) x, arrayString);
848-
arrayString.append(']');
849-
return arrayString.toString();
850850
} else if (x instanceof Tuple) {
851851
return arrayToTuple(((Tuple)x).getValues());
852852
} else if (x instanceof Struct) {

jdbc-v2/src/test/java/com/clickhouse/jdbc/PreparedStatementTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,16 @@ public void testPrimitiveArrays() throws Exception {
276276
assertFalse(rs.next());
277277
}
278278
}
279+
280+
try (PreparedStatement stmt = conn.prepareStatement("SELECT ?")) {
281+
stmt.setObject(1, new Object[] {1, 2, 3});
282+
try (ResultSet rs = stmt.executeQuery()) {
283+
assertTrue(rs.next());
284+
Array a1 = rs.getArray(1);
285+
assertNotNull(a1);
286+
assertEquals(Arrays.deepToString((Object[]) a1.getArray()), "[1, 2, 3]");
287+
}
288+
}
279289
}
280290
}
281291

jdbc-v2/src/test/java/com/clickhouse/jdbc/internal/JdbcUtilsTest.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
package com.clickhouse.jdbc.internal;
22

33
import com.clickhouse.client.api.data_formats.internal.BinaryStreamReader;
4+
import com.clickhouse.client.api.data_formats.internal.InetAddressConverter;
45
import com.clickhouse.data.ClickHouseColumn;
56
import org.testng.annotations.Test;
67

78
import java.math.BigDecimal;
9+
import java.net.Inet6Address;
810
import java.sql.SQLException;
11+
import java.util.Arrays;
12+
import java.util.List;
913

1014
import static org.testng.Assert.assertEquals;
15+
import static org.testng.Assert.assertNull;
1116

1217
public class JdbcUtilsTest {
1318

@@ -40,4 +45,39 @@ public void testConvertToArray() throws Exception {
4045
assertEquals(arrs[0], 1);
4146
assertEquals(arrs[1], 2);
4247
}
48+
49+
50+
@Test(groups = {"unit"})
51+
public void testConvertArray() throws Exception {
52+
Object[] src = {1, 2, 3};
53+
Object[] dst = JdbcUtils.convertArray(src, int.class);
54+
assertEquals(dst.length, src.length);
55+
assertEquals(dst[0], src[0]);
56+
assertEquals(dst[1], src[1]);
57+
assertEquals(dst[2], src[2]);
58+
59+
assertNull(JdbcUtils.convertArray(null, int.class));
60+
assertEquals(JdbcUtils.convertArray(new Integer[] { 1, 2}, null), new Integer[] { 1, 2});
61+
}
62+
63+
64+
@Test(groups = {"unit"})
65+
public void testConvertList() throws Exception {
66+
ClickHouseColumn column = ClickHouseColumn.of("arr", "Array(Int32)");
67+
List<Integer> src = Arrays.asList(1, 2, 3);
68+
Object[] dst = JdbcUtils.convertList(src, Integer.class);
69+
assertEquals(dst.length, src.size());
70+
assertEquals(dst[0], src.get(0));
71+
assertEquals(dst[1], src.get(1));
72+
assertEquals(dst[2], src.get(2));
73+
74+
assertNull(JdbcUtils.convertList(null, Integer.class));
75+
}
76+
77+
78+
@Test(groups = {"unit"})
79+
public void testConvertToInetAddress() throws Exception {
80+
ClickHouseColumn column = ClickHouseColumn.of("ip", "IPv4");
81+
assertEquals(JdbcUtils.convert(java.net.InetAddress.getByName("192.168.0.1"), java.net.Inet6Address.class, column).toString(), "/0:0:0:0:0:ffff:c0a8:1");
82+
}
4383
}

0 commit comments

Comments
 (0)