Skip to content

Commit 94d3c07

Browse files
Merge pull request #51 from bonitoo-io/fix/write_no_tag_#50
fix: fixing line protocol composition when point has no tags (#50)
2 parents 47d4477 + ad76d34 commit 94d3c07

File tree

4 files changed

+32
-8
lines changed

4 files changed

+32
-8
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
## Version 3.x.x
33
- [FIX] Compilation error on fields order (#43)
44
- [FIX] Invalid precision constant for microseconds (#49)
5+
- [FIX] Write error in case point has no tags (#50)
56

67
## Version 3.1.1
78
- [Updated] CA Certificate for SSL (#38)

src/InfluxDbClient.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,8 +104,14 @@ void Point::putField(String name, String value) {
104104
}
105105

106106
String Point::toLineProtocol() const {
107-
String line = _measurement + "," + _tags + " " + _fields;
108-
if(_timestamp != "") {
107+
String line = _measurement;
108+
if(hasTags()) {
109+
line += "," + _tags;
110+
}
111+
if(hasFields()) {
112+
line += " " + _fields;
113+
}
114+
if(hasTime()) {
109115
line += " " + _timestamp;
110116
}
111117
return line;

src/InfluxDbClient.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ class Point {
7070
// Add field with various types
7171
void addField(String name, float value, int decimalPlaces = 2) { if(!isnan(value)) putField(name, String(value, decimalPlaces)); }
7272
void addField(String name, double value) { if(!isnan(value)) putField(name, String(value)); }
73-
void addField(String name, char value) { putField(name, String(value)); }
73+
void addField(String name, char value) { addField(name, String(value).c_str()); }
7474
void addField(String name, unsigned char value) { putField(name, String(value)+"i"); }
7575
void addField(String name, int value) { putField(name, String(value)+"i"); }
7676
void addField(String name, unsigned int value) { putField(name, String(value)+"i"); }

test/test.ino

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,13 +76,30 @@ void testPoint() {
7676
p.addTag("tag1", "tagvalue");
7777
TEST_ASSERT(p.hasTags());
7878
TEST_ASSERT(!p.hasFields());
79-
p.addField("field1", 23);
79+
p.addField("fieldInt", -23);
8080
TEST_ASSERT(p.hasFields());
81-
p.addField("field2", true);
82-
p.addField("field3", 1.123);
83-
p.addField("field4", "texttest");
81+
p.addField("fieldBool", true);
82+
p.addField("fieldFloat1", 1.123f);
83+
p.addField("fieldFloat2", 1.12345f, 5);
84+
p.addField("fieldDouble1", 1.123);
85+
p.addField("fieldDouble2", 1.12345, 5);
86+
p.addField("fieldChar", 'A');
87+
p.addField("fieldUChar", (unsigned char)1);
88+
p.addField("fieldUInt", 23u);
89+
p.addField("fieldLong", 123456l);
90+
p.addField("fieldULong", 123456ul);
91+
p.addField("fieldString", "text test");
8492
String line = p.toLineProtocol();
85-
String testLine = "test,tag1=tagvalue field1=23i,field2=true,field3=1.12,field4=\"texttest\"";
93+
String testLine = "test,tag1=tagvalue fieldInt=-23i,fieldBool=true,fieldFloat1=1.12,fieldFloat2=1.12345,fieldDouble1=1.12,fieldDouble2=1.12345,fieldChar=\"A\",fieldUChar=1i,fieldUInt=23i,fieldLong=123456i,fieldULong=123456i,fieldString=\"text test\"";
94+
TEST_ASSERTM(line == testLine, line);
95+
96+
p.clearFields();
97+
p.clearTags();
98+
99+
//line protocol without tags
100+
p.addField("f", 1);
101+
line = p.toLineProtocol();
102+
testLine = "test f=1i";
86103
TEST_ASSERTM(line == testLine, line);
87104

88105
TEST_ASSERT(!p.hasTime());

0 commit comments

Comments
 (0)