diff --git a/CHANGELOG.md b/CHANGELOG.md index 5d415d1d..6f1b6274 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ 1. [#112](https://github.com/influxdata/influxdb-client-python/pull/113): Support timestamp with different timezone in _convert_timestamp ### Bug Fixes +1. [#115](https://github.com/influxdata/influxdb-client-python/pull/115): Fixed serialization of `\n`, `\r` and `\t` to Line Protocol 1. [#117](https://github.com/influxdata/influxdb-client-python/pull/117): Fixed appending default tags for single Point ## 1.8.0 [2020-06-19] diff --git a/influxdb_client/client/write/point.py b/influxdb_client/client/write/point.py index d50117c0..af8c22eb 100644 --- a/influxdb_client/client/write/point.py +++ b/influxdb_client/client/write/point.py @@ -12,7 +12,7 @@ EPOCH = UTC.localize(datetime.utcfromtimestamp(0)) DEFAULT_WRITE_PRECISION = WritePrecision.NS -_ESCAPE_KEY = str.maketrans({'\\': '\\\\', ',': r'\,', ' ': r'\ ', '=': r'\=', '\n': ''}) +_ESCAPE_KEY = str.maketrans({'\\': '\\\\', ',': r'\,', ' ': r'\ ', '=': r'\=', '\n': '\\n', '\t': '\\t', '\r': '\\r'}) _ESCAPE_STRING = str.maketrans({'\"': r"\"", "\\": r"\\"}) diff --git a/tests/test_point.py b/tests/test_point.py index 698af330..8e91d3c9 100644 --- a/tests/test_point.py +++ b/tests/test_point.py @@ -36,6 +36,16 @@ def test_TagEmptyValue(self): self.assertEqual("h2o,location=europe level=2i", point.to_line_protocol()) + def test_TagEscapingKeyAndValue(self): + + point = Point.measurement("h\n2\ro\t_data") \ + .tag("new\nline", "new\nline") \ + .tag("carriage\rreturn", "carriage\nreturn") \ + .tag("t\tab", "t\tab") \ + .field("level", 2) + + self.assertEqual("h\\n2\\ro\\t_data,carriage\\rreturn=carriage\\nreturn,new\\nline=new\\nline,t\\tab=t\\tab level=2i", point.to_line_protocol()) + def test_OverrideTagField(self): point = Point.measurement("h2o") \ .tag("location", "europe") \