1010import java .io .StringReader ;
1111import java .lang .reflect .Array ;
1212import java .math .BigDecimal ;
13+ import java .net .URL ;
1314import java .sql .Blob ;
1415import java .sql .Clob ;
1516import java .sql .Date ;
2122import java .sql .Time ;
2223import java .sql .Timestamp ;
2324import java .sql .Types ;
25+ import java .util .GregorianCalendar ;
2426
2527import static org .testng .Assert .assertEquals ;
2628import static org .testng .Assert .assertFalse ;
@@ -427,6 +429,80 @@ void testIndexColumn() throws Exception {
427429 assertEquals (rs .getObject (indexColumn , Integer .class ), 1 );
428430 assertEquals (rs .getObject (indexColumn , Short .class ), (short ) 1 );
429431 assertEquals (rs .getObject (indexColumn , Byte .class ), (byte ) 1 );
432+ }
433+
434+ @ Test
435+ void testDateColumn () throws Exception {
436+ Date [] array = {Date .valueOf ("2020-01-01" ), null , Date .valueOf ("2020-01-02" )};
437+ ArrayResultSet rs = new ArrayResultSet (array , ClickHouseColumn .parse ("v Array(Date)" ).get (0 ));
438+
439+ final String dateColumn = rs .getMetaData ().getColumnName (2 );
440+ Assert .assertEquals (dateColumn , "VALUE" );
441+ rs .next ();
442+ assertEquals (rs .getObject (dateColumn ), Date .valueOf ("2020-01-01" ));
443+ assertEquals (rs .getObject (dateColumn , String .class ), "2020-01-01" );
444+ assertEquals (rs .getDate (dateColumn ), rs .getObject (dateColumn , Date .class ));
445+ assertEquals (rs .getDate (dateColumn , new GregorianCalendar ()), rs .getObject (dateColumn , Date .class ));
446+ }
447+
448+ @ Test
449+ void testTimeColumn () throws Exception {
450+ Time [] array = {Time .valueOf ("12:34:56" ), null , Time .valueOf ("12:34:57" )};
451+ ArrayResultSet rs = new ArrayResultSet (array , ClickHouseColumn .parse ("v Array(Time)" ).get (0 ));
452+
453+ final String timeColumn = rs .getMetaData ().getColumnName (2 );
454+ Assert .assertEquals (timeColumn , "VALUE" );
455+ rs .next ();
456+ assertEquals (rs .getObject (timeColumn ), Time .valueOf ("12:34:56" ));
457+ assertEquals (rs .getObject (timeColumn , String .class ), "12:34:56" );
458+ assertEquals (rs .getTime (timeColumn ), rs .getObject (timeColumn , Time .class ));
459+ assertEquals (rs .getTime (timeColumn , new GregorianCalendar ()), rs .getObject (timeColumn , Time .class ));
460+ }
461+
462+ @ Test
463+ void testTimestampColumn () throws Exception {
464+ Timestamp [] array = {Timestamp .valueOf ("2020-01-01 12:34:56.789123" ), null , Timestamp .valueOf ("2020-01-01 12:34:56.789124" )};
465+ ArrayResultSet rs = new ArrayResultSet (array , ClickHouseColumn .parse ("v Array(Timestamp)" ).get (0 ));
466+
467+ final String timestampColumn = rs .getMetaData ().getColumnName (2 );
468+ Assert .assertEquals (timestampColumn , "VALUE" );
469+ rs .next ();
470+ assertEquals (rs .getObject (timestampColumn ), Timestamp .valueOf ("2020-01-01 12:34:56.789123" ));
471+ assertEquals (rs .getObject (timestampColumn , String .class ), "2020-01-01 12:34:56.789123" );
472+ assertEquals (rs .getTimestamp (timestampColumn ), rs .getObject (timestampColumn , Timestamp .class ));
473+ assertEquals (rs .getTimestamp (timestampColumn , new GregorianCalendar ()), rs .getObject (timestampColumn , Timestamp .class ));
474+ }
475+
476+ @ Test
477+ void testStringColumn () throws Exception {
478+ String [] array = {"123" , null , "456" };
479+ ArrayResultSet rs = new ArrayResultSet (array , ClickHouseColumn .parse ("v Array(String)" ).get (0 ));
430480
481+ final String stringColumn = rs .getMetaData ().getColumnName (2 );
482+ Assert .assertEquals (stringColumn , "VALUE" );
483+ rs .next ();
484+ assertEquals (rs .getObject (stringColumn ), "123" );
485+ assertEquals (rs .getObject (stringColumn , String .class ), "123" );
486+ assertEquals (rs .getString (stringColumn ), rs .getObject (stringColumn , String .class ));
487+ assertEquals (rs .getByte (stringColumn ), 123 );
488+ assertEquals (rs .getShort (stringColumn ), (short ) 123 );
489+ assertEquals (rs .getInt (stringColumn ), 123 );
490+ assertEquals (rs .getLong (stringColumn ), 123L );
491+ assertEquals (rs .getFloat (stringColumn ), 123.0f );
492+ assertEquals (rs .getDouble (stringColumn ), 123.0 );
493+ }
494+
495+ @ Test
496+ void testStringToURL () throws Exception {
497+ String [] array = {"http://test.com" , null , "https://test.com" };
498+ ArrayResultSet rs = new ArrayResultSet (array , ClickHouseColumn .parse ("v Array(String)" ).get (0 ));
499+
500+ final String stringColumn = rs .getMetaData ().getColumnName (2 );
501+ Assert .assertEquals (stringColumn , "VALUE" );
502+ rs .next ();
503+ assertEquals (rs .getObject (stringColumn ), "http://test.com" );
504+ assertEquals (rs .getObject (stringColumn , String .class ), "http://test.com" );
505+ assertEquals (rs .getString (stringColumn ), rs .getObject (stringColumn , String .class ));
506+ assertEquals (rs .getURL (stringColumn ), rs .getObject (stringColumn , URL .class ));
431507 }
432508}
0 commit comments