diff --git a/enginetest/queries/queries.go b/enginetest/queries/queries.go index d52e6dad94..83918c7222 100644 --- a/enginetest/queries/queries.go +++ b/enginetest/queries/queries.go @@ -8719,6 +8719,14 @@ from typestable`, {1, 0, 3, 2}, }, }, + { + Query: "select * from mytable where i > '-0.5';", + Expected: []sql.Row{ + {1, "first row"}, + {2, "second row"}, + {3, "third row"}, + }, + }, } var KeylessQueries = []QueryTest{ diff --git a/sql/index_builder.go b/sql/index_builder.go index 3f1f290b9b..3254c08862 100644 --- a/sql/index_builder.go +++ b/sql/index_builder.go @@ -64,6 +64,14 @@ func ceil(val interface{}) interface{} { return math.Ceil(v) case decimal.Decimal: return v.Ceil() + case string: + dec, err := decimal.NewFromString(v) + if err != nil { + return v + } + return ceil(dec) + case []byte: + return ceil(string(v)) default: return v } @@ -77,6 +85,14 @@ func floor(val interface{}) interface{} { return math.Floor(v) case decimal.Decimal: return v.Floor() + case string: + dec, err := decimal.NewFromString(v) + if err != nil { + return v + } + return floor(dec) + case []byte: + return floor(string(v)) default: return v }