Skip to content

Commit 16228b2

Browse files
authored
Merge pull request #2004 from abcfy2/main
Make GenericRecord and ClickHouseBinaryFormatReader easy to iterate
2 parents b022645 + 3453f77 commit 16228b2

File tree

4 files changed

+45
-39
lines changed

4 files changed

+45
-39
lines changed

client-v2/src/main/java/com/clickhouse/client/api/data_formats/internal/AbstractBinaryFormatReader.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,7 @@
3232
import java.time.ZoneOffset;
3333
import java.time.ZonedDateTime;
3434
import java.time.temporal.ChronoUnit;
35-
import java.util.Collections;
36-
import java.util.HashMap;
37-
import java.util.List;
38-
import java.util.Map;
39-
import java.util.TimeZone;
40-
import java.util.UUID;
35+
import java.util.*;
4136
import java.util.concurrent.ConcurrentHashMap;
4237
import java.util.concurrent.atomic.AtomicBoolean;
4338
import java.util.function.Function;

client-v2/src/main/java/com/clickhouse/client/api/data_formats/internal/BinaryReaderBackedRecord.java

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,20 @@
11
package com.clickhouse.client.api.data_formats.internal;
22

33
import com.clickhouse.client.api.data_formats.ClickHouseBinaryFormatReader;
4+
import com.clickhouse.client.api.metadata.TableSchema;
45
import com.clickhouse.client.api.query.GenericRecord;
5-
import com.clickhouse.data.value.ClickHouseBitmap;
6-
import com.clickhouse.data.value.ClickHouseGeoMultiPolygonValue;
7-
import com.clickhouse.data.value.ClickHouseGeoPointValue;
8-
import com.clickhouse.data.value.ClickHouseGeoPolygonValue;
9-
import com.clickhouse.data.value.ClickHouseGeoRingValue;
6+
import com.clickhouse.data.ClickHouseColumn;
7+
import com.clickhouse.data.value.*;
108

119
import java.math.BigDecimal;
1210
import java.math.BigInteger;
1311
import java.net.Inet4Address;
1412
import java.net.Inet6Address;
15-
import java.time.Duration;
16-
import java.time.Instant;
17-
import java.time.LocalDate;
18-
import java.time.LocalDateTime;
19-
import java.time.ZonedDateTime;
13+
import java.time.*;
2014
import java.util.List;
15+
import java.util.Map;
2116
import java.util.UUID;
17+
import java.util.stream.Collectors;
2218

2319
public class BinaryReaderBackedRecord implements GenericRecord {
2420

@@ -377,4 +373,16 @@ public ClickHouseBitmap getClickHouseBitmap(String colName) {
377373
public ClickHouseBitmap getClickHouseBitmap(int index) {
378374
return reader.readValue(index);
379375
}
376+
377+
@Override
378+
public TableSchema getSchema() {
379+
return reader.getSchema();
380+
}
381+
382+
@Override
383+
public Map<String, Object> getValues() {
384+
return this.getSchema().getColumns().stream().collect(Collectors.toMap(
385+
ClickHouseColumn::getColumnName,
386+
column -> this.getObject(column.getColumnName())));
387+
}
380388
}

client-v2/src/main/java/com/clickhouse/client/api/data_formats/internal/MapBackedRecord.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,23 +5,13 @@
55
import com.clickhouse.client.api.query.GenericRecord;
66
import com.clickhouse.client.api.query.NullValueException;
77
import com.clickhouse.data.ClickHouseColumn;
8-
import com.clickhouse.data.value.ClickHouseArrayValue;
9-
import com.clickhouse.data.value.ClickHouseBitmap;
10-
import com.clickhouse.data.value.ClickHouseGeoMultiPolygonValue;
11-
import com.clickhouse.data.value.ClickHouseGeoPointValue;
12-
import com.clickhouse.data.value.ClickHouseGeoPolygonValue;
13-
import com.clickhouse.data.value.ClickHouseGeoRingValue;
8+
import com.clickhouse.data.value.*;
149

1510
import java.math.BigDecimal;
1611
import java.math.BigInteger;
1712
import java.net.Inet4Address;
1813
import java.net.Inet6Address;
19-
import java.time.Duration;
20-
import java.time.Instant;
21-
import java.time.LocalDate;
22-
import java.time.LocalDateTime;
23-
import java.time.ZoneOffset;
24-
import java.time.ZonedDateTime;
14+
import java.time.*;
2515
import java.time.temporal.ChronoUnit;
2616
import java.util.HashMap;
2717
import java.util.List;
@@ -33,7 +23,7 @@ public class MapBackedRecord implements GenericRecord {
3323

3424
private final Map<String, Object> record;
3525

36-
private TableSchema schema;
26+
private final TableSchema schema;
3727

3828
private Map[] columnConverters;
3929

@@ -513,6 +503,11 @@ public ClickHouseBitmap getClickHouseBitmap(int index) {
513503
return readValue(index);
514504
}
515505

506+
@Override
507+
public TableSchema getSchema() {
508+
return this.schema;
509+
}
510+
516511
@Override
517512
public Object getObject(String colName) {
518513
return readValue(colName);
@@ -522,4 +517,9 @@ public Object getObject(String colName) {
522517
public Object getObject(int index) {
523518
return readValue(index);
524519
}
520+
521+
@Override
522+
public Map<String, Object> getValues() {
523+
return this.record;
524+
}
525525
}

client-v2/src/main/java/com/clickhouse/client/api/query/GenericRecord.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,15 @@
11
package com.clickhouse.client.api.query;
22

3-
import com.clickhouse.data.value.ClickHouseBitmap;
4-
import com.clickhouse.data.value.ClickHouseGeoMultiPolygonValue;
5-
import com.clickhouse.data.value.ClickHouseGeoPointValue;
6-
import com.clickhouse.data.value.ClickHouseGeoPolygonValue;
7-
import com.clickhouse.data.value.ClickHouseGeoRingValue;
3+
import com.clickhouse.client.api.metadata.TableSchema;
4+
import com.clickhouse.data.value.*;
85

96
import java.math.BigDecimal;
107
import java.math.BigInteger;
118
import java.net.Inet4Address;
129
import java.net.Inet6Address;
13-
import java.time.Duration;
14-
import java.time.Instant;
15-
import java.time.LocalDate;
16-
import java.time.LocalDateTime;
17-
import java.time.ZonedDateTime;
10+
import java.time.*;
1811
import java.util.List;
12+
import java.util.Map;
1913
import java.util.UUID;
2014

2115
public interface GenericRecord {
@@ -500,4 +494,13 @@ public interface GenericRecord {
500494
ClickHouseBitmap getClickHouseBitmap(String colName);
501495

502496
ClickHouseBitmap getClickHouseBitmap(int index);
497+
498+
TableSchema getSchema();
499+
500+
/**
501+
* Returns all values of this record in Map.
502+
*
503+
* @return a Map of column names and values.
504+
*/
505+
Map<String, Object> getValues();
503506
}

0 commit comments

Comments
 (0)