Skip to content

Commit e9b54bc

Browse files
committed
fix: serialization of \n, \r and \t to Line Protocol
1 parent 73de99d commit e9b54bc

File tree

4 files changed

+36
-0
lines changed

4 files changed

+36
-0
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
## 1.10.0 [unreleased]
22

3+
### Bug Fixes
4+
1. [#129](https://github.com/influxdata/influxdb-client-java/pull/129): Fixed serialization of `\n`, `\r` and `\t` to Line Protocol
5+
36
### Dependencies
47

58
1. [#124](https://github.com/influxdata/influxdb-client-java/pull/124): Update dependencies: akka: 2.6.6, commons-io: 2.7, spring: 5.2.7.RELEASE, retrofit: 2.9.0, okhttp3: 4.7.2

client/src/main/java/com/influxdb/client/write/Point.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,15 @@ private void appendTime(@Nonnull final StringBuilder sb) {
423423
private void escapeKey(@Nonnull final StringBuilder sb, @Nonnull final String key) {
424424
for (int i = 0; i < key.length(); i++) {
425425
switch (key.charAt(i)) {
426+
case '\n':
427+
sb.append("\\n");
428+
break;
429+
case '\r':
430+
sb.append("\\r");
431+
break;
432+
case '\t':
433+
sb.append("\\t");
434+
break;
426435
case ' ':
427436
case ',':
428437
case '=':

client/src/test/java/com/influxdb/client/internal/MeasurementMapperTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,17 @@ void instantOver2226() {
101101
Assertions.assertThat(mapper.toPoint(pojo, WritePrecision.NS).toLineProtocol()).isEqualTo("pojo,tag=value value=\"15\" 43658216763800123456");
102102
}
103103

104+
@Test
105+
public void escapingTags() {
106+
107+
Pojo pojo = new Pojo();
108+
pojo.tag = "mad\nrid";
109+
pojo.value = 5;
110+
111+
String lineProtocol = mapper.toPoint(pojo, WritePrecision.S).toLineProtocol();
112+
Assertions.assertThat(lineProtocol).isEqualTo("pojo,tag=mad\\nrid value=\"5\"");
113+
}
114+
104115
@Measurement(name = "pojo")
105116
private static class Pojo {
106117

client/src/test/java/com/influxdb/client/write/PointTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,19 @@ void tagEmptyValue() {
8686
Assertions.assertThat(point.toLineProtocol()).isEqualTo("h2o,location=europe level=2i");
8787
}
8888

89+
@Test
90+
public void tagEscapingKeyAndValue() {
91+
92+
Point point = Point.measurement("h\n2\ro\t_data")
93+
.addTag("new\nline", "new\nline")
94+
.addTag("carriage\rreturn", "carriage\nreturn")
95+
.addTag("t\tab", "t\tab")
96+
.addField("level", 2);
97+
98+
Assertions.assertThat(point.toLineProtocol())
99+
.isEqualTo("h\\n2\\ro\\t_data,carriage\\rreturn=carriage\\nreturn,new\\nline=new\\nline,t\\tab=t\\tab level=2i");
100+
}
101+
89102
@Test
90103
void fieldTypes() {
91104

0 commit comments

Comments
 (0)