11package com .clickhouse .jdbc ;
22
3+ import com .clickhouse .client .api .data_formats .ClickHouseBinaryFormatReader ;
4+ import com .clickhouse .client .api .metadata .TableSchema ;
5+ import com .clickhouse .client .api .query .QueryResponse ;
6+ import com .clickhouse .data .ClickHouseColumn ;
7+ import com .clickhouse .data .ClickHouseDataType ;
8+ import com .clickhouse .jdbc .internal .ExceptionUtils ;
9+ import com .clickhouse .jdbc .internal .JdbcUtils ;
10+ import com .clickhouse .jdbc .metadata .ResultSetMetaDataImpl ;
11+ import com .clickhouse .jdbc .types .Array ;
12+ import org .slf4j .Logger ;
13+ import org .slf4j .LoggerFactory ;
14+
315import java .io .ByteArrayInputStream ;
416import java .io .InputStream ;
517import java .io .Reader ;
618import java .io .StringReader ;
719import java .math .BigDecimal ;
820import java .net .URL ;
921import java .nio .charset .StandardCharsets ;
10- import java .sql .*;
22+ import java .sql .Blob ;
23+ import java .sql .Clob ;
24+ import java .sql .Date ;
25+ import java .sql .NClob ;
26+ import java .sql .Ref ;
27+ import java .sql .ResultSet ;
28+ import java .sql .ResultSetMetaData ;
29+ import java .sql .RowId ;
30+ import java .sql .SQLException ;
31+ import java .sql .SQLFeatureNotSupportedException ;
32+ import java .sql .SQLType ;
33+ import java .sql .SQLWarning ;
34+ import java .sql .SQLXML ;
35+ import java .sql .Statement ;
36+ import java .sql .Time ;
37+ import java .sql .Timestamp ;
1138import java .time .ZonedDateTime ;
1239import java .util .Calendar ;
13- import java .util .GregorianCalendar ;
40+ import java .util .Collections ;
1441import java .util .List ;
1542import java .util .Map ;
1643
17- import com .clickhouse .client .api .data_formats .ClickHouseBinaryFormatReader ;
18- import com .clickhouse .client .api .metadata .TableSchema ;
19- import com .clickhouse .client .api .query .QueryResponse ;
20- import com .clickhouse .data .ClickHouseColumn ;
21- import com .clickhouse .data .ClickHouseDataType ;
22- import com .clickhouse .jdbc .internal .ExceptionUtils ;
23- import com .clickhouse .jdbc .internal .JdbcUtils ;
24- import com .clickhouse .jdbc .types .Array ;
25- import org .slf4j .Logger ;
26- import org .slf4j .LoggerFactory ;
27-
2844public class ResultSetImpl implements ResultSet , JdbcV2Wrapper {
2945 private static final Logger log = LoggerFactory .getLogger (ResultSetImpl .class );
30- private final ResultSetMetaData metaData ;
46+ private ResultSetMetaData metaData ;
3147 protected ClickHouseBinaryFormatReader reader ;
3248 private QueryResponse response ;
3349 private boolean closed ;
@@ -39,7 +55,12 @@ public ResultSetImpl(StatementImpl parentStatement, QueryResponse response, Clic
3955 this .parentStatement = parentStatement ;
4056 this .response = response ;
4157 this .reader = reader ;
42- this .metaData = new com .clickhouse .jdbc .metadata .ResultSetMetaData (this );
58+ TableSchema tableMetadata = reader .getSchema ();
59+
60+ // Result set contains columns from one database (there is a special table engine 'Merge' to do cross DB queries)
61+ this .metaData = new ResultSetMetaDataImpl (tableMetadata
62+ .getColumns (), response .getSettings ().getDatabase (), "" , tableMetadata .getTableName (),
63+ JdbcUtils .DATA_TYPE_CLASS_MAP );
4364 this .closed = false ;
4465 this .wasNull = false ;
4566 this .defaultCalendar = parentStatement .connection .defaultCalendar ;
@@ -49,7 +70,7 @@ protected ResultSetImpl(ResultSetImpl resultSet) {
4970 this .parentStatement = resultSet .parentStatement ;
5071 this .response = resultSet .response ;
5172 this .reader = resultSet .reader ;
52- this .metaData = new com . clickhouse . jdbc . metadata . ResultSetMetaData ( this ) ;
73+ this .metaData = resultSet . metaData ;
5374 this .closed = false ;
5475 this .wasNull = false ;
5576 this .defaultCalendar = parentStatement .connection .defaultCalendar ;
@@ -431,6 +452,10 @@ public ResultSetMetaData getMetaData() throws SQLException {
431452 return metaData ;
432453 }
433454
455+ protected void setMetaData (ResultSetMetaDataImpl metaData ) {
456+ this .metaData = metaData ;
457+ }
458+
434459 @ Override
435460 public Object getObject (int columnIndex ) throws SQLException {
436461 return getObject (columnIndex , JdbcUtils .convertToJavaClass (getSchema ().getColumnByIndex (columnIndex ).getDataType ()));
0 commit comments