Skip to content

Commit 00cfdf4

Browse files
authored
Adding issue #2266 tests (#2295)
* Adding issue #2266 tests * Adding to getArray wasNull value change if the retrieve data is null
1 parent 19946ce commit 00cfdf4

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

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

+4-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import java.time.ZonedDateTime;
1212
import java.util.Calendar;
1313
import java.util.GregorianCalendar;
14+
import java.util.List;
1415
import java.util.Map;
1516

1617
import com.clickhouse.client.api.data_formats.ClickHouseBinaryFormatReader;
@@ -1025,7 +1026,9 @@ public java.sql.Array getArray(String columnLabel) throws SQLException {
10251026
checkClosed();
10261027
try {
10271028
ClickHouseColumn column = getSchema().getColumnByName(columnLabel);
1028-
return new Array(reader.getList(columnLabel),
1029+
List<Object> lstObj = reader.getList(columnLabel);
1030+
wasNull = lstObj == null;
1031+
return new Array(lstObj,
10291032
column.getArrayBaseColumn().getDataType().name(),
10301033
JdbcUtils.convertToSqlType(column.getArrayBaseColumn().getDataType()).getVendorTypeNumber());
10311034
} catch (Exception e) {

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

+40
Original file line numberDiff line numberDiff line change
@@ -671,4 +671,44 @@ public void testNullableFixedStringType() throws Exception {
671671
}
672672
}
673673
}
674+
675+
@Test(groups = { "integration" })
676+
public void testWasNullFlagArray() throws Exception {
677+
try (Connection conn = getJdbcConnection()) {
678+
String sql = "SELECT NULL, ['value1', 'value2']";
679+
Statement stmt = conn.createStatement();
680+
stmt.executeQuery(sql);
681+
ResultSet rs = stmt.getResultSet();
682+
assertTrue(rs.next());
683+
int val = rs.getInt(1);
684+
assertTrue(rs.wasNull());
685+
Array arr = rs.getArray(2);
686+
assertFalse(rs.wasNull());
687+
assertNotNull(arr);
688+
Object[] values = (Object[]) arr.getArray();
689+
assertNotNull(values);
690+
assertEquals(values.length, 2);
691+
assertEquals(values[0], "value1");
692+
assertEquals(values[1], "value2");
693+
}
694+
695+
try (Connection conn = getJdbcConnection()) {
696+
String sql = "SELECT NULL, ['value1', 'value2'] AS array";
697+
Statement stmt = conn.createStatement();
698+
stmt.executeQuery(sql);
699+
ResultSet rs = stmt.getResultSet();
700+
assertTrue(rs.next());
701+
int val = rs.getInt(1);
702+
assertTrue(rs.wasNull());
703+
Array arr = rs.getArray("array");
704+
assertFalse(rs.wasNull());
705+
assertNotNull(arr);
706+
Object[] values = (Object[]) arr.getArray();
707+
assertNotNull(values);
708+
assertEquals(values.length, 2);
709+
assertEquals(values[0], "value1");
710+
assertEquals(values[1], "value2");
711+
}
712+
}
713+
674714
}

0 commit comments

Comments
 (0)