From 9e7766b346b77aec9fd7c36bd74f6121f3a06637 Mon Sep 17 00:00:00 2001 From: Alex Roitman Date: Tue, 24 Mar 2020 22:08:55 -0700 Subject: [PATCH] Array of values instead of map for whereins. --- internal/server/scanner_test.go | 4 ++-- internal/server/token.go | 17 ++++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/internal/server/scanner_test.go b/internal/server/scanner_test.go index fc021cb5..013d1d0a 100644 --- a/internal/server/scanner_test.go +++ b/internal/server/scanner_test.go @@ -35,8 +35,8 @@ func BenchmarkFieldMatch(t *testing.B) { {"bar", false, 10, false, 30}, }, whereins: []whereinT{ - {"foo", map[float64]struct{}{1: {}, 2: {}}}, - {"bar", map[float64]struct{}{11: {}, 25: {}}}, + {"foo", []float64{1, 2}}, + {"bar", []float64{11, 25}}, }, fmap: map[string]int{"foo": 0, "bar": 1}, farr: []string{"bar", "foo"}, diff --git a/internal/server/token.go b/internal/server/token.go index 52f97774..75cca315 100644 --- a/internal/server/token.go +++ b/internal/server/token.go @@ -159,12 +159,16 @@ func zMinMaxFromWheres(wheres []whereT) (minZ, maxZ float64) { type whereinT struct { field string - valMap map[float64]struct{} + valArr []float64 } func (wherein whereinT) match(value float64) bool { - _, ok := wherein.valMap[value] - return ok + for _, val := range wherein.valArr { + if val == value { + return true + } + } + return false } type whereevalT struct { @@ -342,9 +346,8 @@ func (s *Server) parseSearchScanBaseTokens( err = errInvalidArgument(nvalsStr) return } - valMap := make(map[float64]struct{}) + valArr := make([]float64, nvals) var val float64 - var empty struct{} for i = 0; i < nvals; i++ { if vs, valStr, ok = tokenval(vs); !ok || valStr == "" { err = errInvalidNumberOfArguments @@ -354,9 +357,9 @@ func (s *Server) parseSearchScanBaseTokens( err = errInvalidArgument(valStr) return } - valMap[val] = empty + valArr = append(valArr, val) } - t.whereins = append(t.whereins, whereinT{field, valMap}) + t.whereins = append(t.whereins, whereinT{field, valArr}) continue case "whereevalsha": fallthrough