Fix bug with fields that contain trimming spaces (#10079)

String x might contain trimming spaces. And it needs to be trimmed. For
example, in csv files, there might be trimming spaces in a field that
ought to meet a query condition that contains the value without
trimming spaces. This applies to both intCast and floatCast functions.
This commit is contained in:
Bruce Wang 2020-07-22 03:57:09 +08:00 committed by GitHub
parent eb6bf454f1
commit e464a5bfbc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -465,7 +465,9 @@ func intCast(v *Value) (int64, error) {
case string:
// Parse as number, truncate floating point if
// needed.
res, ok := strToInt(x)
// String might contain trimming spaces, which
// needs to be trimmed.
res, ok := strToInt(strings.TrimSpace(x))
if !ok {
return 0, errCastFailure("could not parse as int")
}
@ -473,7 +475,9 @@ func intCast(v *Value) (int64, error) {
case []byte:
// Parse as number, truncate floating point if
// needed.
res, ok := strToInt(string(x))
// String might contain trimming spaces, which
// needs to be trimmed.
res, ok := strToInt(strings.TrimSpace(string(x)))
if !ok {
return 0, errCastFailure("could not parse as int")
}
@ -491,13 +495,13 @@ func floatCast(v *Value) (float64, error) {
case int:
return float64(x), nil
case string:
f, err := strconv.ParseFloat(x, 64)
f, err := strconv.ParseFloat(strings.TrimSpace(x), 64)
if err != nil {
return 0, errCastFailure("could not parse as float")
}
return f, nil
case []byte:
f, err := strconv.ParseFloat(string(x), 64)
f, err := strconv.ParseFloat(strings.TrimSpace(string(x)), 64)
if err != nil {
return 0, errCastFailure("could not parse as float")
}