Skip to content

Commit 925fde5

Browse files
authored
Merge pull request #1146 from JackyWoo/add_apache_http_client
Add apache http client
2 parents 3f07638 + 8d62caa commit 925fde5

File tree

16 files changed

+1070
-60
lines changed

16 files changed

+1070
-60
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ Note: in general, the new driver(v0.3.2+) is a few times faster with less memory
2525
| API | [JDBC](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) | :white_check_mark: | |
2626
| | [R2DBC](https://r2dbc.io/) | :x: | will be supported in 0.3.3 |
2727
| | [GraphQL](https://graphql.org/) | :x: | |
28-
| Protocol | [HTTP](https://clickhouse.com/docs/en/interfaces/http/) | :white_check_mark: | recommended, defaults to `java.net.HttpURLConnection` and can be changed to `java.net.http.HttpClient`(less stable) |
28+
| Protocol | [HTTP](https://clickhouse.com/docs/en/interfaces/http/) | :white_check_mark: | recommended, defaults to `java.net.HttpURLConnection` and can be changed to `apache http client` and java.net.http.HttpClient`(less stable). Note that `apache http client` support socket options.|
2929
| | [gRPC](https://clickhouse.com/docs/en/interfaces/grpc/) | :white_check_mark: | still experimental, works with 22.3+, known to has [issue](https://github.com/ClickHouse/ClickHouse/issues/28671#issuecomment-1087049993) when using LZ4 compression |
3030
| | [TCP/Native](https://clickhouse.com/docs/en/interfaces/tcp/) | :white_check_mark: | `clickhouse-cli-client`(wrapper of ClickHouse native command-line client) was added in 0.3.2-patch10, `clickhouse-tcp-client` will be available in 0.3.3 |
3131
| | [Local/File](https://clickhouse.com/docs/en/operations/utilities/clickhouse-local/) | :x: | `clickhouse-cli-client` will be enhanced to support `clickhouse-local` |

clickhouse-benchmark/src/main/java/com/clickhouse/benchmark/jdbc/JdbcDriver.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,9 @@ public enum JdbcDriver {
1717
ClickhouseHttpClientJdbc("com.clickhouse.jdbc.ClickHouseDriver",
1818
"jdbc:ch://%s:%s/%s?http_connection_provider=HTTP_CLIENT&ssl=false&user=%s&password=%s&use_server_time_zone=false&use_time_zone=UTC&compress=%s%s",
1919
Constants.HTTP_PORT),
20+
ClickhouseApacheHttpClientJdbc("com.clickhouse.jdbc.ClickHouseDriver",
21+
"jdbc:ch://%s:%s/%s?http_connection_provider=APACHE_HTTP_CLIENT&ssl=false&user=%s&password=%s&use_server_time_zone=false&use_time_zone=UTC&compress=%s%s",
22+
Constants.HTTP_PORT),
2023
// default gRPC implementation
2124
ClickhouseGrpcJdbc("com.clickhouse.jdbc.ClickHouseDriver",
2225
"jdbc:ch:grpc://%s:%s/%s?ssl=false&user=%s&password=%s&use_server_time_zone=false&use_time_zone=UTC&max_inbound_message_size=2147483647&compress=%s%s",

clickhouse-client/src/main/java/com/clickhouse/client/config/ClickHouseClientOption.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,13 @@ public enum ClickHouseClientOption implements ClickHouseOption {
323323
* false.
324324
*/
325325
USE_TIME_ZONE("use_time_zone", "", "Time zone of all DateTime* values. "
326-
+ "Only used when use_server_time_zone is false. Empty value means client time zone.");
326+
+ "Only used when use_server_time_zone is false. Empty value means client time zone."),
327+
328+
/**
329+
* Socket IP_TOS option which indicates IP package priority.
330+
*/
331+
IP_TOS("socket_op_ip_tos", 0, "Socket IP_TOS option which indicates IP package priority.");
332+
327333

328334
private final String key;
329335
private final Serializable defaultValue;

clickhouse-client/src/test/java/com/clickhouse/client/ClientIntegrationTest.java

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,33 @@
11
package com.clickhouse.client;
22

3+
import com.clickhouse.client.ClickHouseClientBuilder.Agent;
4+
import com.clickhouse.client.ClickHouseTransaction.XID;
5+
import com.clickhouse.client.config.ClickHouseBufferingMode;
6+
import com.clickhouse.client.config.ClickHouseClientOption;
7+
import com.clickhouse.client.config.ClickHouseRenameMethod;
8+
import com.clickhouse.client.config.ClickHouseSslMode;
9+
import com.clickhouse.client.data.BinaryStreamUtils;
10+
import com.clickhouse.client.data.ClickHouseBigDecimalValue;
11+
import com.clickhouse.client.data.ClickHouseBigIntegerValue;
12+
import com.clickhouse.client.data.ClickHouseByteValue;
13+
import com.clickhouse.client.data.ClickHouseDateTimeValue;
14+
import com.clickhouse.client.data.ClickHouseEnumValue;
15+
import com.clickhouse.client.data.ClickHouseExternalTable;
16+
import com.clickhouse.client.data.ClickHouseIntegerValue;
17+
import com.clickhouse.client.data.ClickHouseIpv4Value;
18+
import com.clickhouse.client.data.ClickHouseIpv6Value;
19+
import com.clickhouse.client.data.ClickHouseLongValue;
20+
import com.clickhouse.client.data.ClickHouseOffsetDateTimeValue;
21+
import com.clickhouse.client.data.ClickHouseStringValue;
22+
import com.clickhouse.client.data.UnsignedByte;
23+
import com.clickhouse.client.data.UnsignedInteger;
24+
import com.clickhouse.client.data.UnsignedLong;
25+
import com.clickhouse.client.data.UnsignedShort;
26+
import org.testng.Assert;
27+
import org.testng.SkipException;
28+
import org.testng.annotations.DataProvider;
29+
import org.testng.annotations.Test;
30+
331
import java.io.BufferedReader;
432
import java.io.ByteArrayInputStream;
533
import java.io.ByteArrayOutputStream;
@@ -33,35 +61,6 @@
3361
import java.util.zip.GZIPInputStream;
3462
import java.util.zip.GZIPOutputStream;
3563

36-
import com.clickhouse.client.ClickHouseClientBuilder.Agent;
37-
import com.clickhouse.client.ClickHouseTransaction.XID;
38-
import com.clickhouse.client.config.ClickHouseBufferingMode;
39-
import com.clickhouse.client.config.ClickHouseClientOption;
40-
import com.clickhouse.client.config.ClickHouseRenameMethod;
41-
import com.clickhouse.client.config.ClickHouseSslMode;
42-
import com.clickhouse.client.data.BinaryStreamUtils;
43-
import com.clickhouse.client.data.ClickHouseBigDecimalValue;
44-
import com.clickhouse.client.data.ClickHouseBigIntegerValue;
45-
import com.clickhouse.client.data.ClickHouseByteValue;
46-
import com.clickhouse.client.data.ClickHouseDateTimeValue;
47-
import com.clickhouse.client.data.ClickHouseEnumValue;
48-
import com.clickhouse.client.data.ClickHouseExternalTable;
49-
import com.clickhouse.client.data.ClickHouseIntegerValue;
50-
import com.clickhouse.client.data.ClickHouseIpv4Value;
51-
import com.clickhouse.client.data.ClickHouseIpv6Value;
52-
import com.clickhouse.client.data.ClickHouseLongValue;
53-
import com.clickhouse.client.data.ClickHouseOffsetDateTimeValue;
54-
import com.clickhouse.client.data.ClickHouseStringValue;
55-
import com.clickhouse.client.data.UnsignedByte;
56-
import com.clickhouse.client.data.UnsignedInteger;
57-
import com.clickhouse.client.data.UnsignedLong;
58-
import com.clickhouse.client.data.UnsignedShort;
59-
60-
import org.testng.Assert;
61-
import org.testng.SkipException;
62-
import org.testng.annotations.DataProvider;
63-
import org.testng.annotations.Test;
64-
6564
public abstract class ClientIntegrationTest extends BaseIntegrationTest {
6665
protected void checkRowCount(String queryOrTableName, int expectedRowCount) throws ClickHouseException {
6766
try (ClickHouseClient client = getClient()) {

clickhouse-http-client/pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@
2929
<groupId>org.lz4</groupId>
3030
<artifactId>lz4-java</artifactId>
3131
</dependency>
32+
<dependency>
33+
<groupId>org.apache.httpcomponents.client5</groupId>
34+
<artifactId>httpclient5</artifactId>
35+
</dependency>
3236

3337
<!-- necessary for Java 9+ -->
3438
<dependency>

0 commit comments

Comments
 (0)