fix: proper formatting of floating point (#7653)

* fix: proper formatting of floating point

* fix: old trace

* fix: add tests

* fix: use strconv.FormatFloat instead
This commit is contained in:
Nityananda Gohain 2025-04-17 11:32:41 +05:30 committed by GitHub
parent aaf0b597dc
commit 054dea366e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1085,7 +1085,7 @@ func (r *ClickHouseReader) GetWaterfallSpansForTraceWithMetadata(ctx context.Con
item.Attributes_string[k] = fmt.Sprintf("%v", v) item.Attributes_string[k] = fmt.Sprintf("%v", v)
} }
for k, v := range item.Attributes_number { for k, v := range item.Attributes_number {
item.Attributes_string[k] = fmt.Sprintf("%v", v) item.Attributes_string[k] = strconv.FormatFloat(v, 'f', -1, 64)
} }
for k, v := range item.Resources_string { for k, v := range item.Resources_string {
item.Attributes_string[k] = v item.Attributes_string[k] = v
@ -4241,11 +4241,12 @@ func readRow(vars []interface{}, columnNames []string, countOfNumberCols int) ([
isValidPoint = true isValidPoint = true
point.Value = float64(reflect.ValueOf(v).Elem().Float()) point.Value = float64(reflect.ValueOf(v).Elem().Float())
} else { } else {
groupBy = append(groupBy, fmt.Sprintf("%v", reflect.ValueOf(v).Elem().Float())) val := strconv.FormatFloat(reflect.ValueOf(v).Elem().Float(), 'f', -1, 64)
groupBy = append(groupBy, val)
if _, ok := groupAttributes[colName]; !ok { if _, ok := groupAttributes[colName]; !ok {
groupAttributesArray = append(groupAttributesArray, map[string]string{colName: fmt.Sprintf("%v", reflect.ValueOf(v).Elem().Float())}) groupAttributesArray = append(groupAttributesArray, map[string]string{colName: val})
} }
groupAttributes[colName] = fmt.Sprintf("%v", reflect.ValueOf(v).Elem().Float()) groupAttributes[colName] = val
} }
case **float64, **float32: case **float64, **float32:
val := reflect.ValueOf(v) val := reflect.ValueOf(v)
@ -4255,11 +4256,12 @@ func readRow(vars []interface{}, columnNames []string, countOfNumberCols int) ([
isValidPoint = true isValidPoint = true
point.Value = value point.Value = value
} else { } else {
groupBy = append(groupBy, fmt.Sprintf("%v", value)) val := strconv.FormatFloat(value, 'f', -1, 64)
groupBy = append(groupBy, val)
if _, ok := groupAttributes[colName]; !ok { if _, ok := groupAttributes[colName]; !ok {
groupAttributesArray = append(groupAttributesArray, map[string]string{colName: fmt.Sprintf("%v", value)}) groupAttributesArray = append(groupAttributesArray, map[string]string{colName: val})
} }
groupAttributes[colName] = fmt.Sprintf("%v", value) groupAttributes[colName] = val
} }
} }
case *uint, *uint8, *uint64, *uint16, *uint32: case *uint, *uint8, *uint64, *uint16, *uint32:
@ -6889,7 +6891,7 @@ func (r *ClickHouseReader) SearchTracesV2(ctx context.Context, params *model.Sea
item.Attributes_string[k] = fmt.Sprintf("%v", v) item.Attributes_string[k] = fmt.Sprintf("%v", v)
} }
for k, v := range item.Attributes_number { for k, v := range item.Attributes_number {
item.Attributes_string[k] = fmt.Sprintf("%v", v) item.Attributes_string[k] = strconv.FormatFloat(v, 'f', -1, 64)
} }
for k, v := range item.Resources_string { for k, v := range item.Resources_string {
item.Attributes_string[k] = v item.Attributes_string[k] = v