diff --git a/http_handler.go b/http_handler.go index 2815cdbf8..07385f342 100644 --- a/http_handler.go +++ b/http_handler.go @@ -1563,14 +1563,21 @@ func fieldOptionsToFunctionalOpts(opt fieldOptions) []FieldOption { case FieldTypeSet: fos = append(fos, OptFieldTypeSet(*opt.CacheType, *opt.CacheSize)) case FieldTypeInt: - if opt.Min == nil { - min := pql.NewDecimal(int64(math.MinInt64), 0) - opt.Min = &min + min, max := pql.MinMax(0) + // ensure the provided bounds are valid + if opt.Max != nil && max.LessThan(*opt.Max) { + opt.Max = &max } if opt.Max == nil { - max := pql.NewDecimal(int64(math.MaxInt64), 0) opt.Max = &max } + + if opt.Min != nil && min.GreaterThan(*opt.Min) { + opt.Min = &min + } + if opt.Min == nil { + opt.Min = &min + } fos = append(fos, OptFieldTypeInt(opt.Min.ToInt64(0), opt.Max.ToInt64(0))) case FieldTypeDecimal: scale := int64(0) diff --git a/index.go b/index.go index 08a4a6a4a..21686b04b 100644 --- a/index.go +++ b/index.go @@ -4,7 +4,6 @@ package pilosa import ( "context" "fmt" - "math" "os" "path/filepath" "sort" @@ -618,14 +617,23 @@ func (i *Index) CreateFieldIfNotExistsWithOptions(name string, opt *FieldOptions // added for backward compatablity with old schemas if opt != nil && opt.Type == FieldTypeDecimal { min, max := pql.MinMax(opt.Scale) - opt.Max = max - opt.Min = min + // ensure the provided bounds are valid + if max.LessThan(opt.Max) { + opt.Max = max + } + if min.GreaterThan(opt.Min) { + opt.Min = min + } } if opt != nil && opt.Type == FieldTypeDecimal { - min := pql.NewDecimal(int64(math.MinInt64), 0) - max := pql.NewDecimal(int64(math.MaxInt64), 0) - opt.Max = max - opt.Min = min + min, max := pql.MinMax(0) + // ensure the provided bounds are valid + if max.LessThan(opt.Max) { + opt.Max = max + } + if min.GreaterThan(opt.Min) { + opt.Min = min + } } cfm := &CreateFieldMessage{