Skip to content

Commit 6791f9b

Browse files
committed
fix for protocol
1 parent ebde4af commit 6791f9b

File tree

32 files changed

+124
-332
lines changed

32 files changed

+124
-332
lines changed

clickhouse-r2dbc-samples/clickhouse-r2dbc-spring-webflux-sample/src/main/java/com/clickhouse/r2dbc/spring/webflux/sample/Main.java

Lines changed: 0 additions & 112 deletions
This file was deleted.

clickhouse-r2dbc-samples/clickhouse-r2dbc-spring-webflux-sample/src/main/java/com/clickhouse/r2dbc/spring/webflux/sample/Runny.java

Lines changed: 0 additions & 26 deletions
This file was deleted.

clickhouse-r2dbc/pom.xml

Lines changed: 0 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
<artifactId>clickhouse-r2dbc</artifactId>
1313

1414
<properties>
15-
<revision>0.3.3-SNAPSHOT</revision>
1615
<hikari-cp.version>4.0.3</hikari-cp.version>
1716
<maven.compiler.source>1.8</maven.compiler.source>
1817
<maven.compiler.target>1.8</maven.compiler.target>
@@ -22,21 +21,8 @@
2221
<testcontainers.clickhouse.version>1.16.3</testcontainers.clickhouse.version>
2322
<docker-java-api.version>3.2.13</docker-java-api.version>
2423
<docker-java-transport-zerodep.version>3.2.13</docker-java-transport-zerodep.version>
25-
<surefire-plugin.version>3.0.0-M5</surefire-plugin.version>
2624
</properties>
2725

28-
<dependencyManagement>
29-
<dependencies>
30-
<dependency>
31-
<groupId>io.projectreactor</groupId>
32-
<artifactId>reactor-bom</artifactId>
33-
<version>2020.0.16</version>
34-
<type>pom</type>
35-
<scope>import</scope>
36-
</dependency>
37-
</dependencies>
38-
</dependencyManagement>
39-
4026
<dependencies>
4127
<dependency>
4228
<groupId>io.projectreactor</groupId>
@@ -115,21 +101,5 @@
115101
</exclusion>
116102
</exclusions>
117103
</dependency>
118-
119104
</dependencies>
120-
121-
<build>
122-
<plugins>
123-
<plugin>
124-
<groupId>org.apache.maven.plugins</groupId>
125-
<artifactId>maven-surefire-plugin</artifactId>
126-
<version>${surefire-plugin.version}</version>
127-
<configuration>
128-
<includes>
129-
<include>%regex[.*Test*.*]</include>
130-
</includes>
131-
</configuration>
132-
</plugin>
133-
</plugins>
134-
</build>
135105
</project>

clickhouse-r2dbc/src/main/java/com/clickhouse/r2dbc/ClickHouseBatch.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.clickhouse.client.ClickHouseFormat;
44
import com.clickhouse.client.ClickHouseRequest;
5+
import com.clickhouse.client.config.ClickHouseDefaults;
56
import io.r2dbc.spi.Batch;
67
import io.r2dbc.spi.Result;
78
import org.reactivestreams.Publisher;
@@ -13,7 +14,7 @@
1314

1415
public class ClickHouseBatch implements Batch {
1516

16-
private static final ClickHouseFormat PREFERRED_FORMAT = ClickHouseFormat.RowBinaryWithNamesAndTypes;
17+
private static final ClickHouseFormat PREFERRED_FORMAT = ClickHouseFormat.TabSeparatedWithNamesAndTypes;
1718
private ClickHouseRequest<?> request;
1819
List<String> sqlList = new ArrayList<>();
1920

@@ -31,7 +32,8 @@ public Batch add(String sql) {
3132
public Publisher<? extends Result> execute() {
3233
return Flux.fromStream(sqlList.stream().map(sql -> {
3334
request.query(sql).format(PREFERRED_FORMAT);
34-
return Mono.fromFuture(request.execute());
35-
}).map(ClickHouseResult::new));
35+
return Mono.fromFuture(request::execute); }))
36+
.flatMap(Mono::flux)
37+
.map(ClickHouseResult::new);
3638
}
3739
}

clickhouse-r2dbc/src/main/java/com/clickhouse/r2dbc/ClickHouseColumnMetadata.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.clickhouse.r2dbc;
22

33
import com.clickhouse.client.ClickHouseColumn;
4-
import com.clickhouse.r2dbc.types.TypeMapper;
4+
import com.clickhouse.r2dbc.types.ClickHouseDataTypeWrapper;
55
import io.r2dbc.spi.ColumnMetadata;
66
import io.r2dbc.spi.Type;
77

@@ -12,7 +12,7 @@ public class ClickHouseColumnMetadata implements ColumnMetadata {
1212

1313
ClickHouseColumnMetadata(ClickHouseColumn col) {
1414
this.name = col.getColumnName(); // TODO :check alias handling.
15-
this.type = TypeMapper.getType(col.getDataType());
15+
this.type = ClickHouseDataTypeWrapper.of(col.getDataType());
1616
}
1717

1818
@Override

clickhouse-r2dbc/src/main/java/com/clickhouse/r2dbc/ClickHouseResult.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,14 +25,14 @@ public class ClickHouseResult implements Result {
2525
private final Mono<? extends Result.Segment> updatedCount;
2626
private final Flux<? extends Result.Segment> segments;
2727

28-
ClickHouseResult(Mono<ClickHouseResponse> response) {
29-
this.rowSegments = response.flux()
30-
.flatMap(resp -> Flux
28+
ClickHouseResult(ClickHouseResponse response) {
29+
this.rowSegments = Mono.just(response)
30+
.flatMapMany(resp -> Flux
3131
.fromStream(StreamSupport.stream(resp.records().spliterator(), false)
3232
.map(rec -> Pair.of(resp.getColumns(), rec))))
3333
.map(pair -> new ClickHouseRow(pair.getRight(), pair.getLeft()))
3434
.map(RowSegment::new);
35-
this.updatedCount = response.map(ClickHouseResponse::getSummary)
35+
this.updatedCount = Mono.just(response).map(ClickHouseResponse::getSummary)
3636
.map(ClickHouseResponseSummary::getProgress)
3737
.map(ClickHouseResponseSummary.Progress::getWrittenRows)
3838
.map(UpdateCount::new);

clickhouse-r2dbc/src/main/java/com/clickhouse/r2dbc/ClickHouseRowMetadata.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,6 @@
77
import java.util.Collections;
88
import java.util.LinkedHashMap;
99
import java.util.List;
10-
import java.util.Map;
11-
import java.util.stream.Collectors;
1210

1311
public class ClickHouseRowMetadata implements RowMetadata {
1412

clickhouse-r2dbc/src/main/java/com/clickhouse/r2dbc/ClickHouseStatement.java

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.clickhouse.client.ClickHouseRequest;
55
import com.clickhouse.client.ClickHouseResponse;
66
import com.clickhouse.client.config.ClickHouseClientOption;
7+
import com.clickhouse.client.config.ClickHouseDefaults;
78
import com.clickhouse.client.logging.Logger;
89
import com.clickhouse.client.logging.LoggerFactory;
910
import io.r2dbc.spi.Blob;
@@ -16,14 +17,13 @@
1617

1718
import java.util.List;
1819
import java.util.NoSuchElementException;
19-
import java.util.regex.Pattern;
2020
import java.util.stream.Stream;
2121

2222
public class ClickHouseStatement implements Statement {
2323

2424
private static final Logger log = LoggerFactory.getLogger(ClickHouseStatement.class);
2525

26-
private static final ClickHouseFormat PREFERRED_FORMAT = ClickHouseFormat.RowBinaryWithNamesAndTypes;
26+
private static final ClickHouseFormat PREFERRED_FORMAT = ClickHouseFormat.TabSeparatedWithNamesAndTypes;
2727
private static final String NULL_VALUES_ARE_NOT_ALLOWED_AS_VALUE = "null values are not allowed as value.";
2828
private static final String CLASS_TYPES_ARE_NOT_ALLOWED_AS_VALUE = "class types are not allowed as value.";
2929
private static final String INVALID_PARAMETER_INDEX = "Invalid parameter index! Parameter index must be greater than 0.";
@@ -42,7 +42,9 @@ public class ClickHouseStatement implements Statement {
4242
private int fetchSize;
4343

4444
public ClickHouseStatement(String sql, ClickHouseRequest<?> request) {
45-
this.request = request.format(PREFERRED_FORMAT).query(sql);
45+
this.request = request
46+
.format(PREFERRED_FORMAT)
47+
.query(sql);
4648
namedParameters = request.getPreparedQuery().getParameters();
4749
bindings = new ClickHouseStatementBinding(namedParameters.size());
4850
}
@@ -133,9 +135,8 @@ public Flux<? extends Result> execute() {
133135
request.option(ClickHouseClientOption.MAX_RESULT_ROWS, fetchSize);
134136
}
135137
if (boundList.isEmpty()) {
136-
return Flux.from(Mono.fromFuture(request::execute))
137-
.map(Mono::just)
138-
.map(ClickHouseResult::new);
138+
return Flux.from(Mono.fromFuture(request::execute)
139+
.map(ClickHouseResult::new));
139140
} else {
140141
Stream<Mono<ClickHouseResponse>> monoStream = boundList.stream().map(binding -> {
141142
for (int i = 0; i < binding.values.length; i++ ) {
@@ -146,7 +147,9 @@ public Flux<? extends Result> execute() {
146147
request.params(binding.values);
147148
return Mono.fromFuture(request::execute);
148149
});
149-
return Flux.fromStream(monoStream).map(ClickHouseResult::new);
150+
return Flux.fromStream(monoStream)
151+
.flatMap(Mono::flux)
152+
.map(ClickHouseResult::new);
150153
}
151154
}
152155

clickhouse-r2dbc/src/main/java/com/clickhouse/r2dbc/connection/ClickHouseConnection.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121

2222
import java.time.Duration;
2323

24+
import static reactor.core.publisher.Mono.just;
25+
2426
public class ClickHouseConnection implements Connection {
2527

2628
private static final Logger log = LoggerFactory.getLogger(ClickHouseConnection.class);
@@ -30,8 +32,8 @@ public class ClickHouseConnection implements Connection {
3032
final ClickHouseNode server;
3133
private boolean closed = false;
3234

33-
ClickHouseConnection(ClickHouseNode server, ClickHouseProtocol preferredProtocol) {
34-
this.client = ClickHouseClient.newInstance(preferredProtocol);
35+
ClickHouseConnection(ClickHouseNode server) {
36+
this.client = ClickHouseClient.newInstance(server.getProtocol());
3537
this.server = server;
3638
}
3739

@@ -81,6 +83,9 @@ public Publisher<Void> commitTransaction() {
8183
@Override
8284
public Batch createBatch() {
8385
ClickHouseRequest<?> req = client.connect(server);
86+
if (isHttp()) {
87+
req = req.set("send_progress_in_http_headers", 1);
88+
}
8489
req.option(ClickHouseClientOption.ASYNC, true);
8590
return new ClickHouseBatch(req);
8691
}
@@ -97,10 +102,17 @@ public Publisher<Void> createSavepoint(String s) {
97102
@Override
98103
public Statement createStatement(String sql) {
99104
ClickHouseRequest<?> req = client.connect(server);
105+
if (isHttp()) {
106+
req = req.set("send_progress_in_http_headers", 1);
107+
}
100108
req.option(ClickHouseClientOption.ASYNC, true);
101109
return new ClickHouseStatement(sql, req);
102110
}
103111

112+
private boolean isHttp() {
113+
return server.getProtocol() == ClickHouseProtocol.HTTP;
114+
}
115+
104116
/**
105117
* Returns true since there is no transaction support.
106118
* @return true
@@ -175,9 +187,9 @@ public Mono<Void> setTransactionIsolationLevel(IsolationLevel isolationLevel) {
175187
@Override
176188
public Publisher<Boolean> validate(ValidationDepth validationDepth) {
177189
if (validationDepth == ValidationDepth.REMOTE) {
178-
return Mono.just(client.ping(server, DEFAULT_TIMEOUT_FOR_CONNECTION_HEALTH_CHECK));
190+
return closed ? just(false) : just(client.ping(server, DEFAULT_TIMEOUT_FOR_CONNECTION_HEALTH_CHECK));
179191
} else { // validationDepth.LOCAL
180-
return Mono.just(client != null && !closed);
192+
return just(client != null && !closed);
181193
}
182194
}
183195
}

0 commit comments

Comments
 (0)