From 4d1ce61c9f75811d57b679c4c589863f40fd25b8 Mon Sep 17 00:00:00 2001 From: Paris Holley Date: Sun, 4 Oct 2015 11:40:14 -0700 Subject: [PATCH] do not include empty tags in hash --- models/points.go | 9 ++++++++- models/points_test.go | 12 ++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/models/points.go b/models/points.go index e709bfffb7..7faa6966e8 100644 --- a/models/points.go +++ b/models/points.go @@ -1017,6 +1017,10 @@ func (p *point) Tags() Tags { i, key = scanTo(p.key, i, '=') i, value = scanTagValue(p.key, i+1) + if len(value) == 0 { + continue + } + tags[string(unescapeTag(key))] = string(unescapeTag(value)) i += 1 @@ -1137,7 +1141,10 @@ func (t Tags) HashKey() []byte { for k, v := range t { ek := escapeTag([]byte(k)) ev := escapeTag([]byte(v)) - escaped[string(ek)] = string(ev) + + if len(string(ev)) > 0 { + escaped[string(ek)] = string(ev) + } } // Extract keys and determine final size. diff --git a/models/points_test.go b/models/points_test.go index b86dd87510..b95ccb9ea1 100644 --- a/models/points_test.go +++ b/models/points_test.go @@ -599,6 +599,18 @@ func TestParsePointUnescape(t *testing.T) { }, time.Unix(0, 0))) + // tag with no value + test(t, `cpu,regions=east value="1"`, + models.NewPoint("cpu", + models.Tags{ + "regions": "east", + "foobar": "", + }, + models.Fields{ + "value": "1", + }, + time.Unix(0, 0))) + // commas in field values test(t, `cpu,regions=east value="1,0"`, models.NewPoint("cpu",