From f96f2b35f2e268158f3d945dc1aed1854419fe7c Mon Sep 17 00:00:00 2001 From: PennyYoon <525296438@qq.com> Date: Mon, 29 Jan 2024 19:25:18 +0800 Subject: [PATCH] chore: add integer's symbol in parseFields method to enhance performance Signed-off-by: PennyYoon <525296438@qq.com> --- opengemini/point.go | 2 +- opengemini/write_test.go | 45 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 1 deletion(-) diff --git a/opengemini/point.go b/opengemini/point.go index 33148d2..4dad74f 100644 --- a/opengemini/point.go +++ b/opengemini/point.go @@ -131,7 +131,7 @@ func parseFields(fields map[string]interface{}) string { case string: builder.WriteString("\"" + v + "\"") case int8, uint8, int16, uint16, int, uint, int32, uint32, int64, uint64: - builder.WriteString(fmt.Sprintf("%d", v)) + builder.WriteString(fmt.Sprintf("%di", v)) case float32, float64: builder.WriteString(fmt.Sprintf("%f", v)) case bool: diff --git a/opengemini/write_test.go b/opengemini/write_test.go index db837d5..72add74 100644 --- a/opengemini/write_test.go +++ b/opengemini/write_test.go @@ -1,7 +1,10 @@ package opengemini import ( + "fmt" "github.com/stretchr/testify/assert" + "reflect" + "strings" "testing" "time" ) @@ -85,3 +88,45 @@ func TestClientWritePoint(t *testing.T) { err = c.WritePoint(database, point, callback) assert.Nil(t, err) } + +func TestWriteAssignedIntegerField(t *testing.T) { + c := testDefaultClient(t) + + // create a test database with rand suffix + database := randomDatabaseName() + err := c.CreateDatabase(database) + assert.Nil(t, err) + + // delete test database before exit test case + defer func() { + err := c.DropDatabase(database) + assert.Nil(t, err) + }() + + callback := func(err error) { + assert.Nil(t, err) + } + measurement := randomMeasurement() + point := &Point{} + point.Measurement = measurement + point.AddTag("tag", "test") + point.AddField("field", 123) + err = c.WritePoint(database, point, callback) + assert.Nil(t, err) + + time.Sleep(time.Second * 5) + + // check field's data type + res, err := c.ShowFieldKeys(database, fmt.Sprintf("SHOW FIELD KEYS FROM %s", measurement)) + assert.Nil(t, err) + values := res[0].Values + if value, ok := values[0].(string); !ok { + t.Log(reflect.TypeOf(value)) + t.Fail() + } else { + if !strings.Contains(value, "integer") { + t.Error("not contain integer") + t.Fail() + } + } +}