diff --git a/models/points.go b/models/points.go index c8a39632bc..b25459a12c 100644 --- a/models/points.go +++ b/models/points.go @@ -1919,7 +1919,9 @@ func (p *point) Delete() { switch { case p.it.end == p.it.start: case p.it.end >= len(p.fields): - p.fields = p.fields[:p.it.start] + // Remove the trailing comma if there are more than one fields + p.fields = bytes.TrimSuffix(p.fields[:p.it.start], []byte(",")) + case p.it.start == 0: p.fields = p.fields[p.it.end:] default: diff --git a/models/points_test.go b/models/points_test.go index 9b6479a652..da49d10adf 100644 --- a/models/points_test.go +++ b/models/points_test.go @@ -2182,6 +2182,10 @@ func TestPoint_FieldIterator_Delete_Begin(t *testing.T) { if !reflect.DeepEqual(got, exp) { t.Fatalf("Delete failed, got %#v, exp %#v", got, exp) } + + if _, err = models.ParsePointsString(points[0].String()); err != nil { + t.Fatalf("Failed to parse point: %v", err) + } } func TestPoint_FieldIterator_Delete_Middle(t *testing.T) { @@ -2203,6 +2207,10 @@ func TestPoint_FieldIterator_Delete_Middle(t *testing.T) { if !reflect.DeepEqual(got, exp) { t.Fatalf("Delete failed, got %#v, exp %#v", got, exp) } + + if _, err = models.ParsePointsString(points[0].String()); err != nil { + t.Fatalf("Failed to parse point: %v", err) + } } func TestPoint_FieldIterator_Delete_End(t *testing.T) { @@ -2225,6 +2233,10 @@ func TestPoint_FieldIterator_Delete_End(t *testing.T) { if !reflect.DeepEqual(got, exp) { t.Fatalf("Delete failed, got %#v, exp %#v", got, exp) } + + if _, err = models.ParsePointsString(points[0].String()); err != nil { + t.Fatalf("Failed to parse point: %v", err) + } } func TestPoint_FieldIterator_Delete_Nothing(t *testing.T) { @@ -2244,6 +2256,10 @@ func TestPoint_FieldIterator_Delete_Nothing(t *testing.T) { if !reflect.DeepEqual(got, exp) { t.Fatalf("Delete failed, got %#v, exp %#v", got, exp) } + + if _, err = models.ParsePointsString(points[0].String()); err != nil { + t.Fatalf("Failed to parse point: %v", err) + } } func TestPoint_FieldIterator_Delete_Twice(t *testing.T) { @@ -2266,6 +2282,10 @@ func TestPoint_FieldIterator_Delete_Twice(t *testing.T) { if !reflect.DeepEqual(got, exp) { t.Fatalf("Delete failed, got %#v, exp %#v", got, exp) } + + if _, err = models.ParsePointsString(points[0].String()); err != nil { + t.Fatalf("Failed to parse point: %v", err) + } } func TestEscapeStringField(t *testing.T) {