@@ -229,6 +229,8 @@ public static Object convert(Object value, Class<?> type, ClickHouseColumn colum
229229 try {
230230 if (type .isInstance (value )) {
231231 return value ;
232+ } else if (type != java .sql .Array .class && value instanceof List <?>) {
233+ return convertList ((List <?>) value , type );
232234 } else if (type == String .class ) {
233235 return value .toString ();
234236 } else if (type == Boolean .class || type == boolean .class ) {
@@ -268,15 +270,14 @@ public static Object convert(Object value, Class<?> type, ClickHouseColumn colum
268270 if (column != null && column .getArrayBaseColumn () != null ) {
269271 ClickHouseDataType baseType = column .getArrayBaseColumn ().getDataType ();
270272 Object [] convertedValues = convertArray (arrayValue .getArrayOfObjects (),
271- JdbcUtils .convertToJavaClass (column . getArrayBaseColumn (). getDataType () ));
273+ JdbcUtils .convertToJavaClass (baseType ));
272274 return new Array (convertedValues , baseType .getName (), baseType .getVendorTypeNumber ());
273275 }
274276 return new Array (arrayValue .getArrayOfObjects (), "Unknown" , JDBCType .OTHER .getVendorTypeNumber ());
275277 } else if (type == java .sql .Array .class && value instanceof List <?>) {
276-
277278 if (column != null && column .getArrayBaseColumn () != null ) {
278279 ClickHouseDataType baseType = column .getArrayBaseColumn ().getDataType ();
279- return new Array (convertList ((List <?>) value , JdbcUtils .convertToJavaClass (column . getArrayBaseColumn (). getDataType () )),
280+ return new Array (convertList ((List <?>) value , JdbcUtils .convertToJavaClass (baseType )),
280281 baseType .getName (), JdbcUtils .CLICKHOUSE_TO_SQL_TYPE_MAP .getOrDefault (baseType , JDBCType .OTHER ).getVendorTypeNumber ());
281282 }
282283 // base type is unknown. all objects should be converted
@@ -301,6 +302,9 @@ public static Object[] convertList(List<?> values, Class<?> type) throws SQLExce
301302 if (values == null ) {
302303 return null ;
303304 }
305+ if (values .isEmpty ()) {
306+ return new Object [0 ];
307+ }
304308
305309 Object [] convertedValues = new Object [values .size ()];
306310 for (int i = 0 ; i < values .size (); i ++) {
0 commit comments