Skip to content

Commit bf6e14e

Browse files
authored
Merge pull request #926 from zhicwu/grpc-patch
Fix #909 and bump version
2 parents fb19ba9 + fde782b commit bf6e14e

File tree

10 files changed

+90
-15
lines changed

10 files changed

+90
-15
lines changed

README.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ Note: in general, the new driver(v0.3.2) is a few times faster with less memory
115115
<groupId>com.clickhouse</groupId>
116116
<!-- or clickhouse-grpc-client if you prefer gRPC -->
117117
<artifactId>clickhouse-http-client</artifactId>
118-
<version>0.3.2-patch8</version>
118+
<version>0.3.2-patch9</version>
119119
</dependency>
120120
```
121121

@@ -151,7 +151,7 @@ try (ClickHouseClient client = ClickHouseClient.newInstance(preferredProtocol);
151151
<!-- will stop using ru.yandex.clickhouse starting from 0.4.0 -->
152152
<groupId>com.clickhouse</groupId>
153153
<artifactId>clickhouse-jdbc</artifactId>
154-
<version>0.3.2-patch8</version>
154+
<version>0.3.2-patch9</version>
155155
<!-- below is only needed when all you want is a shaded jar -->
156156
<classifier>http</classifier>
157157
<exclusions>

clickhouse-client/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Async Java client for ClickHouse. `clickhouse-client` is an abstract module, so
99
<dependency>
1010
<groupId>com.clickhouse</groupId>
1111
<artifactId>clickhouse-http-client</artifactId>
12-
<version>0.3.2-patch8</version>
12+
<version>0.3.2-patch9</version>
1313
</dependency>
1414
```
1515

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

+1-4
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public ClickHouseDataProcessor getProcessor(ClickHouseConfig config, ClickHouseI
5151
ClickHouseOutputStream output, Map<String, Object> settings, List<ClickHouseColumn> columns)
5252
throws IOException {
5353
ClickHouseFormat format = ClickHouseChecker.nonNull(config, "config").getFormat();
54-
ClickHouseDataProcessor processor;
54+
ClickHouseDataProcessor processor = null;
5555
if (ClickHouseFormat.RowBinary == format || ClickHouseFormat.RowBinaryWithNamesAndTypes == format) {
5656
processor = new ClickHouseRowBinaryProcessor(config, input, output, columns, settings);
5757
} else if (ClickHouseFormat.TSVWithNames == format || ClickHouseFormat.TSVWithNamesAndTypes == format
@@ -61,10 +61,7 @@ public ClickHouseDataProcessor getProcessor(ClickHouseConfig config, ClickHouseI
6161
} else if (format != null && format.isText()) {
6262
processor = new ClickHouseTabSeparatedProcessor(config, input, output,
6363
ClickHouseDataProcessor.DEFAULT_COLUMNS, settings);
64-
} else {
65-
throw new IllegalArgumentException(ERROR_UNSUPPORTED_FORMAT + format);
6664
}
67-
6865
return processor;
6966
}
7067

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

+44-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,50 @@ protected Mutation(ClickHouseRequest<?> request, boolean sealed) {
4848
@Override
4949
protected String getQuery() {
5050
if (input != null && sql != null) {
51-
return new StringBuilder().append(sql).append(" FORMAT ").append(getInputFormat().name()).toString();
51+
int tmp = 0;
52+
int len = sql.length();
53+
int index = len;
54+
while ((tmp = ClickHouseUtils.skipContentsUntil(sql, tmp, sql.length(), "format", false)) < len) {
55+
index = tmp;
56+
}
57+
58+
StringBuilder builder = new StringBuilder();
59+
boolean spaces = false;
60+
for (; index < len; index++) {
61+
char ch = sql.charAt(index);
62+
if (ClickHouseUtils.isQuote(ch) || ClickHouseUtils.isOpenBracket(ch)) {
63+
break;
64+
} else if (Character.isWhitespace(ch)) {
65+
if (builder.length() > 0) {
66+
spaces = true;
67+
}
68+
} else if (index + 1 < len) {
69+
char nextCh = sql.charAt(index + 1);
70+
if (ch == '-' && nextCh == '-') {
71+
index = ClickHouseUtils.skipSingleLineComment(sql, index + 2, len) - 1;
72+
} else if (ch == '/' && nextCh == '*') {
73+
index = ClickHouseUtils.skipMultiLineComment(sql, index + 2, len) - 1;
74+
} else if (ch == '\\') {
75+
index++;
76+
} else {
77+
if (spaces) {
78+
break;
79+
} else {
80+
builder.append(ch);
81+
}
82+
}
83+
} else {
84+
if (spaces) {
85+
break;
86+
} else {
87+
builder.append(ch);
88+
}
89+
}
90+
}
91+
92+
return builder.length() > 0 && index == len ? sql
93+
: new StringBuilder().append(sql).append("\n FORMAT ").append(getInputFormat().name())
94+
.toString();
5295
}
5396

5497
return super.getQuery();

clickhouse-client/src/main/java/com/clickhouse/client/stream/BlockingPipedOutputStream.java

+4-1
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,10 @@ public void close() throws IOException {
102102
Thread.currentThread().interrupt();
103103
throw new IOException("Thread was interrupted when putting EMPTY buffer into queue", e);
104104
} finally {
105-
super.close();
105+
closed = true;
106+
if (postCloseAction != null) {
107+
postCloseAction.run();
108+
}
106109
}
107110
}
108111

clickhouse-client/src/main/java/com/clickhouse/client/stream/NonBlockingPipedOutputStream.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,11 @@ public void close() throws IOException {
116116
for (int i = 0, len = buckets.length; i < len; i++) {
117117
buckets[i] = null;
118118
}
119-
super.close();
119+
120+
closed = true;
121+
if (postCloseAction != null) {
122+
postCloseAction.run();
123+
}
120124
}
121125
}
122126

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

+30-2
Original file line numberDiff line numberDiff line change
@@ -360,11 +360,39 @@ public void testMutation() {
360360
Mutation request = ClickHouseClient.newInstance().connect(ClickHouseNode.builder().build()).write();
361361
request.table("test_table").format(ClickHouseFormat.Arrow).data(new ByteArrayInputStream(new byte[0]));
362362

363-
String expectedSql = "INSERT INTO test_table FORMAT Arrow";
363+
String expectedSql = "INSERT INTO test_table\n FORMAT Arrow";
364364
Assert.assertEquals(request.getQuery(), expectedSql);
365365
Assert.assertEquals(request.getStatements().get(0), expectedSql);
366366

367-
request = request.seal();
367+
ClickHouseRequest<?> sealedRequest = request.seal();
368+
Assert.assertEquals(sealedRequest.getQuery(), expectedSql);
369+
Assert.assertEquals(sealedRequest.getStatements().get(0), expectedSql);
370+
371+
request.query(expectedSql = "select 1 format CSV");
372+
Assert.assertEquals(request.getQuery(), expectedSql);
373+
Assert.assertEquals(request.getStatements().get(0), expectedSql);
374+
375+
request.query(expectedSql = "select format tsv from table format CSV ");
376+
Assert.assertEquals(request.getQuery(), expectedSql);
377+
Assert.assertEquals(request.getStatements().get(0), expectedSql);
378+
379+
request.query(expectedSql = "select 1 -- format CSV ");
380+
expectedSql += "\n FORMAT Arrow";
381+
Assert.assertEquals(request.getQuery(), expectedSql);
382+
Assert.assertEquals(request.getStatements().get(0), expectedSql);
383+
384+
request.query(expectedSql = "select format CSV from table /* ccc */");
385+
expectedSql += "\n FORMAT Arrow";
386+
Assert.assertEquals(request.getQuery(), expectedSql);
387+
Assert.assertEquals(request.getStatements().get(0), expectedSql);
388+
389+
request.query(expectedSql = "select /* format CSV */");
390+
expectedSql += "\n FORMAT Arrow";
391+
Assert.assertEquals(request.getQuery(), expectedSql);
392+
Assert.assertEquals(request.getStatements().get(0), expectedSql);
393+
394+
request.query(expectedSql = "select 1 format CSV a");
395+
expectedSql += "\n FORMAT Arrow";
368396
Assert.assertEquals(request.getQuery(), expectedSql);
369397
Assert.assertEquals(request.getStatements().get(0), expectedSql);
370398
}

clickhouse-jdbc/README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ Keep in mind that `clickhouse-jdbc` is synchronous, and in general it has more o
1111
<!-- will stop using ru.yandex.clickhouse starting from 0.4.0 -->
1212
<groupId>com.clickhouse</groupId>
1313
<artifactId>clickhouse-jdbc</artifactId>
14-
<version>0.3.2-patch8</version>
14+
<version>0.3.2-patch9</version>
1515
</dependency>
1616
```
1717

examples/grpc/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
5757
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
5858

59-
<clickhouse-grpc.version>0.3.2-patch8</clickhouse-grpc.version>
59+
<clickhouse-grpc.version>0.3.2-patch9</clickhouse-grpc.version>
6060

6161
<compiler-plugin.version>3.8.1</compiler-plugin.version>
6262

examples/jdbc/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
5757
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
5858

59-
<clickhouse-jdbc.version>0.3.2-patch8</clickhouse-jdbc.version>
59+
<clickhouse-jdbc.version>0.3.2-patch9</clickhouse-jdbc.version>
6060

6161
<compiler-plugin.version>3.8.1</compiler-plugin.version>
6262

0 commit comments

Comments
 (0)