Skip to content

Commit b0d66cf

Browse files
committed
Merge branch 'main' into pre_0.7.2
2 parents 1296c4a + 593b9e3 commit b0d66cf

File tree

30 files changed

+569
-121
lines changed

30 files changed

+569
-121
lines changed

.github/workflows/build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ jobs:
208208
clickhouse: ["cloud"]
209209
project: ["clickhouse-http-client", "clickhouse-jdbc", "client-v2", "jdbc-v2"]
210210
fail-fast: false
211-
timeout-minutes: 15
211+
timeout-minutes: 20
212212
name: ${{ matrix.project }} + CH ${{ matrix.clickhouse }}
213213
steps:
214214
- name: Check out repository
@@ -278,7 +278,7 @@ jobs:
278278
# protocol: ["http", "http_client", "apache_http_client"]
279279
protocol: ["apache_http_client"]
280280
fail-fast: false
281-
timeout-minutes: 15
281+
timeout-minutes: 20
282282
name: JDBC driver + CH ${{ matrix.clickhouse }} (${{ matrix.protocol }})
283283
steps:
284284
- name: Check out repository

clickhouse-client/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,12 @@
6969
</dependencies>
7070

7171
<build>
72+
<resources>
73+
<resource>
74+
<directory>src/main/resources</directory>
75+
<filtering>true</filtering>
76+
</resource>
77+
</resources>
7278
<plugins>
7379
<plugin>
7480
<groupId>org.apache.maven.plugins</groupId>

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

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

3+
import java.io.InputStream;
34
import java.io.Serializable;
45
import java.net.InetAddress;
56
import java.net.UnknownHostException;
67
import java.util.Collections;
78
import java.util.HashMap;
89
import java.util.Map;
10+
import java.util.Properties;
911

1012
import com.clickhouse.config.ClickHouseOption;
1113
import com.clickhouse.data.ClickHouseChecker;
@@ -491,19 +493,8 @@ public enum ClickHouseClientOption implements ClickHouseOption {
491493
}
492494
options = Collections.unmodifiableMap(map);
493495

494-
// <artifact-id> <version> (revision: <revision>)
495-
String ver = ClickHouseClientOption.class.getPackage().getImplementationVersion();
496-
String[] parts = ver == null || ver.isEmpty() ? null : ver.split("\\s");
497-
if (parts != null && parts.length == 4 && parts[1].length() > 0 && parts[3].length() > 1
498-
&& ver.charAt(ver.length() - 1) == ')') {
499-
PRODUCT_VERSION = parts[1];
500-
ver = parts[3];
501-
PRODUCT_REVISION = ver.substring(0, ver.length() - 1);
502-
} else { // perhaps try harder by checking version from pom.xml?
503-
PRODUCT_VERSION = LATEST_KNOWN_VERSION;
504-
PRODUCT_REVISION = UNKNOWN;
505-
}
506-
496+
PRODUCT_VERSION = readVersionFromResource("clickhouse-client-version.properties");
497+
PRODUCT_REVISION = UNKNOWN;
507498

508499
CLIENT_OS_INFO = new StringBuilder().append(getSystemConfig("os.name", "O/S")).append('/')
509500
.append(getSystemConfig("os.version", UNKNOWN)).toString();
@@ -514,12 +505,31 @@ public enum ClickHouseClientOption implements ClickHouseOption {
514505
CLIENT_JVM_INFO = new StringBuilder().append(getSystemConfig("java.vm.name", "Java")).append('/')
515506
.append(javaVersion).toString();
516507
CLIENT_USER = getSystemConfig("user.name", UNKNOWN);
508+
509+
String host = null;
517510
try {
518-
ver = InetAddress.getLocalHost().getHostName();
511+
host = InetAddress.getLocalHost().getHostName();
519512
} catch (UnknownHostException e1) {
520513
// ignore
521514
}
522-
CLIENT_HOST = ver == null || ver.isEmpty() ? UNKNOWN : ver;
515+
CLIENT_HOST = host == null || host.isEmpty() ? UNKNOWN : host;
516+
}
517+
518+
public static String readVersionFromResource(String resourceFilePath) {
519+
// TODO: move to client-v2 when client-v1 is deprecated completely
520+
String tmpVersion = "unknown";
521+
try (InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(resourceFilePath)) {
522+
Properties p = new Properties();
523+
p.load(in);
524+
525+
String tmp = p.getProperty("version");
526+
if (tmp != null && !tmp.isEmpty() && !tmp.equals("${revision}")) {
527+
tmpVersion = tmp;
528+
}
529+
} catch (Exception e) {
530+
// ignore
531+
}
532+
return tmpVersion;
523533
}
524534

525535
/**
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
version=${revision}
2+
build.date=${build_timestamp}

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import java.util.Collections;
1313
import java.util.HashMap;
1414
import java.util.Map;
15+
import java.util.regex.Matcher;
16+
import java.util.regex.Pattern;
1517

1618
public class ClickHouseConfigTest {
1719
@Test(groups = { "unit" })
@@ -74,7 +76,8 @@ public void testCustomValues() {
7476
@Test(groups = { "unit" })
7577
public void testClientInfo() throws UnknownHostException {
7678
ClickHouseConfig config = new ClickHouseConfig();
77-
Assert.assertEquals(config.getProductVersion(), ClickHouseClientOption.LATEST_KNOWN_VERSION);
79+
Matcher versioMatcher = Pattern.compile("(^|\\\\.[\\\\d]+)+.*").matcher(config.getProductVersion());
80+
Assert.assertTrue(versioMatcher.matches());
7881
Assert.assertEquals(config.getProductRevision(), "unknown");
7982
Assert.assertEquals(config.getClientOsInfo(),
8083
System.getProperty("os.name") + "/" + System.getProperty("os.version"));
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
version=${revision}
2+
build.date=${build_timestamp}

client-v2/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,12 @@
138138
</dependencies>
139139

140140
<build>
141+
<resources>
142+
<resource>
143+
<directory>src/main/resources</directory>
144+
<filtering>true</filtering>
145+
</resource>
146+
</resources>
141147
<plugins>
142148
<plugin>
143149
<groupId>org.apache.maven.plugins</groupId>

client-v2/src/main/java/com/clickhouse/client/api/Client.java

Lines changed: 20 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,8 @@
2626
import com.clickhouse.client.api.internal.ClickHouseLZ4OutputStream;
2727
import com.clickhouse.client.api.internal.ClientStatisticsHolder;
2828
import com.clickhouse.client.api.internal.ClientV1AdaptorHelper;
29-
import com.clickhouse.client.api.internal.EnvUtils;
3029
import com.clickhouse.client.api.internal.HttpAPIClientHelper;
3130
import com.clickhouse.client.api.internal.MapUtils;
32-
import com.clickhouse.client.api.internal.ServerSettings;
3331
import com.clickhouse.client.api.internal.SettingsConverter;
3432
import com.clickhouse.client.api.internal.TableSchemaParser;
3533
import com.clickhouse.client.api.internal.ValidationUtils;
@@ -76,8 +74,8 @@
7674
import java.util.HashSet;
7775
import java.util.LinkedHashMap;
7876
import java.util.List;
79-
import java.util.Locale;
8077
import java.util.Map;
78+
import java.util.Properties;
8179
import java.util.Set;
8280
import java.util.StringJoiner;
8381
import java.util.TimeZone;
@@ -186,6 +184,7 @@ private Client(Set<String> endpoints, Map<String,String> configuration, boolean
186184
}
187185
this.columnToMethodMatchingStrategy = columnToMethodMatchingStrategy;
188186

187+
189188
updateServerContext();
190189
}
191190

@@ -359,6 +358,12 @@ public Builder addEndpoint(Protocol protocol, String host, int port, boolean sec
359358
*/
360359
public Builder setOption(String key, String value) {
361360
this.configuration.put(key, value);
361+
if (key.equals(ClientConfigProperties.PRODUCT_NAME.getKey())) {
362+
setClientName(value);
363+
}
364+
if (key.equals(ClientConfigProperties.BEARERTOKEN_AUTH.getKey())) {
365+
useBearerTokenAuth(value);
366+
}
362367
return this;
363368
}
364369

@@ -817,7 +822,7 @@ public Builder setSharedOperationExecutor(ExecutorService executorService) {
817822
/**
818823
* Set size of a buffers that are used to read/write data from the server. It is mainly used to copy data from
819824
* a socket to application memory and visa-versa. Setting is applied for both read and write operations.
820-
* Default is 8192 bytes.
825+
* Default is 300,000 bytes.
821826
*
822827
* @param size - size in bytes
823828
* @return
@@ -977,7 +982,9 @@ public Builder setClientName(String clientName) {
977982
* @return same instance of the builder
978983
*/
979984
public Builder setOptions(Map<String, String> options) {
980-
this.configuration.putAll(options);
985+
for (Map.Entry<String, String> entry : options.entrySet()) {
986+
setOption(entry.getKey(), entry.getValue());
987+
}
981988
return this;
982989
}
983990

@@ -1147,41 +1154,7 @@ private void setDefaults() {
11471154
if (!configuration.containsKey(ClientConfigProperties.USE_HTTP_COMPRESSION.getKey())) {
11481155
useHttpCompression(false);
11491156
}
1150-
1151-
String userAgent = configuration.getOrDefault(ClientConfigProperties.HTTP_HEADER_PREFIX + HttpHeaders.USER_AGENT.toUpperCase(Locale.US), "");
1152-
String clientName = configuration.getOrDefault(ClientConfigProperties.CLIENT_NAME.getKey(), "");
1153-
httpHeader(HttpHeaders.USER_AGENT, buildUserAgent(userAgent.isEmpty() ? clientName : userAgent));
11541157
}
1155-
1156-
private static String buildUserAgent(String customUserAgent) {
1157-
1158-
StringBuilder userAgent = new StringBuilder();
1159-
if (customUserAgent != null && !customUserAgent.isEmpty()) {
1160-
userAgent.append(customUserAgent).append(" ");
1161-
}
1162-
1163-
userAgent.append(CLIENT_USER_AGENT);
1164-
1165-
String clientVersion = Client.class.getPackage().getImplementationVersion();
1166-
if (clientVersion == null) {
1167-
clientVersion = LATEST_ARTIFACT_VERSION;
1168-
}
1169-
userAgent.append(clientVersion);
1170-
1171-
userAgent.append(" (");
1172-
userAgent.append(System.getProperty("os.name"));
1173-
userAgent.append("; ");
1174-
userAgent.append("jvm:").append(System.getProperty("java.version"));
1175-
userAgent.append("; ");
1176-
1177-
userAgent.setLength(userAgent.length() - 2);
1178-
userAgent.append(')');
1179-
1180-
return userAgent.toString();
1181-
}
1182-
1183-
public static final String LATEST_ARTIFACT_VERSION = "0.7.1-patch1";
1184-
public static final String CLIENT_USER_AGENT = "clickhouse-java-v2/";
11851158
}
11861159

11871160
private ClickHouseNode getServerNode() {
@@ -2170,6 +2143,10 @@ public String getServerVersion() {
21702143
return this.serverVersion;
21712144
}
21722145

2146+
public String getClientVersion() {
2147+
return clientVersion;
2148+
}
2149+
21732150
/**
21742151
* Sets list of DB roles that should be applied to each query.
21752152
*
@@ -2186,6 +2163,10 @@ public void updateClientName(String name) {
21862163
this.configuration.put(ClientConfigProperties.CLIENT_NAME.getKey(), name);
21872164
}
21882165

2166+
public static final String clientVersion =
2167+
ClickHouseClientOption.readVersionFromResource("client-v2-version.properties");
2168+
public static final String CLIENT_USER_AGENT = "clickhouse-java-v2/";
2169+
21892170
private Collection<String> unmodifiableDbRolesView = Collections.emptyList();
21902171

21912172
/**

client-v2/src/main/java/com/clickhouse/client/api/ClientConfigProperties.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,16 @@ public enum ClientConfigProperties {
115115

116116
CLIENT_RETRY_ON_FAILURE("client_retry_on_failures"),
117117

118-
CLIENT_NAME("client_name");
118+
CLIENT_NAME("client_name"),
119+
120+
/**
121+
* An old alias to {@link ClientConfigProperties#CLIENT_NAME}. Using the last one is preferred.
122+
*/
123+
@Deprecated
124+
PRODUCT_NAME("product_name"),
125+
126+
BEARERTOKEN_AUTH ("bearer_token")
127+
;
119128

120129
private String key;
121130

client-v2/src/main/java/com/clickhouse/client/api/insert/InsertSettings.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,12 @@ public Object getOption(String option) {
4848
* @param option - configuration option name
4949
* @param value - configuration option value
5050
*/
51-
public void setOption(String option, Object value) {
51+
public InsertSettings setOption(String option, Object value) {
5252
rawSettings.put(option, value);
53+
if (option.equals(ClientConfigProperties.PRODUCT_NAME.getKey())) {
54+
rawSettings.put(ClientConfigProperties.CLIENT_NAME.getKey(), value);
55+
}
56+
return this;
5357
}
5458

5559
/**

0 commit comments

Comments
 (0)