Skip to content

Commit 216ccae

Browse files
committed
fixed passing custom properties to ClickHouse. No enabling required
1 parent 6d33827 commit 216ccae

File tree

5 files changed

+52
-12
lines changed

5 files changed

+52
-12
lines changed

clickhouse-client/src/main/java/com/clickhouse/client/ClickHouseRequest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ public class ClickHouseRequest<SelfT extends ClickHouseRequest<SelfT>> implement
5555

5656
static {
5757
Set<String> set = new HashSet<>();
58-
set.add("query_id");
58+
set.add(ClickHouseClientOption.QUERY_ID.getKey());
5959
set.add(ClickHouseClientOption.SESSION_ID.getKey());
6060
set.add(ClickHouseClientOption.SESSION_CHECK.getKey());
6161
set.add(ClickHouseClientOption.SESSION_TIMEOUT.getKey());

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -420,7 +420,12 @@ public enum ClickHouseClientOption implements ClickHouseOption {
420420
* false.
421421
*/
422422
USE_TIME_ZONE("use_time_zone", "", "Time zone of all DateTime* values. "
423-
+ "Only used when use_server_time_zone is false. Empty value means client time zone.");
423+
+ "Only used when use_server_time_zone is false. Empty value means client time zone."),
424+
425+
/**
426+
* Query ID to be attached to an operation
427+
*/
428+
QUERY_ID("query_id", "", "Query id");
424429

425430
private final String key;
426431
private final Serializable defaultValue;

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

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import java.util.Collections;
1111
import java.util.HashMap;
1212
import java.util.HashSet;
13+
import java.util.List;
1314
import java.util.Map;
1415
import java.util.Set;
1516
import java.util.regex.Pattern;
@@ -20,7 +21,8 @@ public static Map<String, Serializable> toRequestSettings(Map<String, Object> se
2021
Map<String, Serializable> requestSettings = new HashMap<>();
2122

2223
for (Map.Entry<String, Object> entry : settings.entrySet()) {
23-
if (!REQUEST_SETTINGS.contains(entry.getKey())) {
24+
if (REQUEST_OPTIONS.get(entry.getKey()) != null) {
25+
// This definitely is a request option
2426
continue;
2527
}
2628

@@ -89,18 +91,12 @@ public static String escape(String value) {
8991
}
9092

9193
private static final Map<String, ClickHouseOption> REQUEST_OPTIONS = createMapOfRequestOptions();
92-
private static final Set<String> REQUEST_SETTINGS = Collections.unmodifiableSet(new HashSet<>(Arrays.asList(
93-
ClickHouseClientOption.MAX_EXECUTION_TIME.getKey(),
94-
ClickHouseClientOption.MAX_RESULT_ROWS.getKey(),
95-
"extremes",
96-
"role",
97-
"describe_include_subcolumns",
98-
"allow_experimental_variant_type"
99-
)));
94+
10095

10196
public static Map<String, ClickHouseOption> createMapOfRequestOptions() {
10297
Map<String, ClickHouseOption> map = new HashMap<>();
10398

99+
104100
Arrays.asList(ClickHouseClientOption.FORMAT,
105101
ClickHouseClientOption.MAX_EXECUTION_TIME,
106102
ClickHouseHttpOption.CUSTOM_PARAMS,

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

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
import java.util.stream.Stream;
1414
import java.util.stream.StreamSupport;
1515

16-
public class Records implements Iterable<GenericRecord> {
16+
public class Records implements Iterable<GenericRecord>, AutoCloseable {
1717

1818
private final QueryResponse response;
1919

@@ -128,4 +128,9 @@ public long getServerTime() {
128128
public long getResultRows() {
129129
return response.getMetrics().getMetric(ServerMetrics.RESULT_ROWS).getLong();
130130
}
131+
132+
@Override
133+
public void close() throws Exception {
134+
response.close();
135+
}
131136
}

client-v2/src/test/java/com/clickhouse/client/ClientTests.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
import com.clickhouse.client.api.ClientException;
55
import com.clickhouse.client.api.enums.Protocol;
66
import com.clickhouse.client.api.query.GenericRecord;
7+
import com.clickhouse.client.api.query.QueryResponse;
8+
import com.clickhouse.client.api.query.QuerySettings;
9+
import com.clickhouse.client.api.query.Records;
710
import com.clickhouse.client.config.ClickHouseClientOption;
811
import org.junit.Assert;
912
import org.testng.annotations.DataProvider;
@@ -12,6 +15,7 @@
1215
import java.net.ConnectException;
1316
import java.sql.Connection;
1417
import java.util.Optional;
18+
import java.util.concurrent.TimeUnit;
1519

1620
public class ClientTests extends BaseIntegrationTest {
1721

@@ -55,4 +59,34 @@ private static Client[] secureClientProvider() throws Exception {
5559
.build()
5660
};
5761
}
62+
63+
64+
@Test
65+
public void testRawSettings() {
66+
ClickHouseNode node = getServer(ClickHouseProtocol.HTTP);
67+
Client client = new Client.Builder()
68+
.addEndpoint(node.toUri().toString())
69+
.setUsername("default")
70+
.setPassword("")
71+
.setOption("custom_setting_1", "value_1")
72+
.build();
73+
74+
client.execute("SELECT 1");
75+
76+
QuerySettings querySettings = new QuerySettings();
77+
querySettings.setOption("session_timezone", "Europe/Zurich");
78+
79+
try (Records response =
80+
client.queryRecords("SELECT timeZone(), serverTimeZone()", querySettings).get(10, TimeUnit.SECONDS)) {
81+
82+
response.forEach(record -> {
83+
System.out.println(record.getString(1) + " " + record.getString(2));
84+
Assert.assertEquals("Europe/Zurich", record.getString(1));
85+
Assert.assertEquals("UTC", record.getString(2));
86+
});
87+
} catch (Exception e) {
88+
e.printStackTrace();
89+
Assert.fail(e.getMessage());
90+
}
91+
}
5892
}

0 commit comments

Comments
 (0)