66import com .clickhouse .data .ClickHouseColumn ;
77import com .clickhouse .data .ClickHouseDataType ;
88
9+ import java .io .IOException ;
910import java .net .InetAddress ;
1011import java .time .Instant ;
1112import java .time .LocalDate ;
@@ -202,6 +203,11 @@ public String arrayToString(Object value, ClickHouseColumn column) {
202203 return value .toString ();
203204 }
204205
206+ public String arrayToString (Object value , String columnDef ) {
207+ ClickHouseColumn column = ClickHouseColumn .of ("v" , columnDef );
208+ return arrayToString (value , column );
209+ }
210+
205211 /**
206212 *
207213 * @param value not null object value to convert
@@ -215,6 +221,18 @@ public String variantOrDynamicToString(Object value, ClickHouseColumn column) {
215221 return value .toString ();
216222 }
217223
224+ private static void appendEnquotedArrayElement (String value , ClickHouseColumn elementColumn , Appendable appendable ) {
225+ try {
226+ if (elementColumn != null && elementColumn .getDataType () == ClickHouseDataType .String ) {
227+ appendable .append (QUOTE ).append (value ).append (QUOTE );
228+ } else {
229+ appendable .append (value );
230+ }
231+ } catch (IOException e ) {
232+ throw new ClickHouseException (e .getMessage (), e );
233+ }
234+ }
235+
218236 private final class ArrayAsStringWriter extends BaseCollectionConverter .BaseArrayWriter {
219237 private ClickHouseColumn column ;
220238
@@ -233,16 +251,9 @@ protected void onItem(Object item, ListConversionState<Object> state) {
233251 append (NULL );
234252 return ;
235253 }
236- String str = DataTypeConverter .this .convertToString (item , column .getArrayBaseColumn () == null ? column : column .getArrayBaseColumn ());
237- try {
238- if (column .getArrayBaseColumn ().getDataType () == ClickHouseDataType .String ) {
239- appendable .append (QUOTE ).append (str ).append (QUOTE );
240- } else {
241- appendable .append (str );
242- }
243- } catch (Exception ex ) {
244- throw new ClickHouseException (ex .getMessage (), ex );
245- }
254+ ClickHouseColumn elementColumn = column .getArrayBaseColumn () == null ? column : column .getArrayBaseColumn ();
255+ String str = DataTypeConverter .this .convertToString (item , elementColumn );
256+ appendEnquotedArrayElement (str , elementColumn , appendable );
246257 }
247258
248259 public String convertAndReset (Object list , Appendable acc , ClickHouseColumn column ) {
@@ -270,7 +281,10 @@ protected void onItem(Object item, ListConversionState<List<?>> state) {
270281 append (NULL );
271282 return ;
272283 }
273- append (DataTypeConverter .this .convertToString (item , column .getArrayBaseColumn () == null ? column : column .getArrayBaseColumn ()));
284+ ClickHouseColumn elementColumn = column .getArrayBaseColumn () == null ? column : column .getArrayBaseColumn ();
285+ String str = DataTypeConverter .this .convertToString (item , elementColumn );
286+ appendEnquotedArrayElement (str , elementColumn , appendable );
287+
274288 }
275289
276290 public String convertAndReset (List <?> list , Appendable acc , ClickHouseColumn column ) {
0 commit comments