mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54:59 +00:00
change Pair struct Key to ID
This commit is contained in:
parent
67a691dfe0
commit
ac8018c4f3
5 changed files with 53 additions and 53 deletions
16
cache.go
16
cache.go
|
|
@ -258,20 +258,20 @@ func (p BitmapPairs) Len() int { return len(p) }
|
|||
func (p BitmapPairs) Less(i, j int) bool { return p[i].Count > p[j].Count }
|
||||
|
||||
type Pair struct {
|
||||
Key uint64 `json:"id"`
|
||||
ID uint64 `json:"id"`
|
||||
Count uint64 `json:"count"`
|
||||
}
|
||||
|
||||
func encodePair(p Pair) *internal.Pair {
|
||||
return &internal.Pair{
|
||||
Key: p.Key,
|
||||
Key: p.ID,
|
||||
Count: p.Count,
|
||||
}
|
||||
}
|
||||
|
||||
func decodePair(pb *internal.Pair) Pair {
|
||||
return Pair{
|
||||
Key: pb.Key,
|
||||
ID: pb.Key,
|
||||
Count: pb.Count,
|
||||
}
|
||||
}
|
||||
|
|
@ -307,18 +307,18 @@ func (p Pairs) Add(other []Pair) []Pair {
|
|||
// Create lookup of key/counts.
|
||||
m := make(map[uint64]uint64, len(p))
|
||||
for _, pair := range p {
|
||||
m[pair.Key] = pair.Count
|
||||
m[pair.ID] = pair.Count
|
||||
}
|
||||
|
||||
// Add/merge from other.
|
||||
for _, pair := range other {
|
||||
m[pair.Key] += pair.Count
|
||||
m[pair.ID] += pair.Count
|
||||
}
|
||||
|
||||
// Convert back to slice.
|
||||
a := make([]Pair, 0, len(m))
|
||||
for k, v := range m {
|
||||
a = append(a, Pair{Key: k, Count: v})
|
||||
a = append(a, Pair{ID: k, Count: v})
|
||||
}
|
||||
return a
|
||||
}
|
||||
|
|
@ -327,7 +327,7 @@ func (p Pairs) Add(other []Pair) []Pair {
|
|||
func (p Pairs) Keys() []uint64 {
|
||||
a := make([]uint64, len(p))
|
||||
for i := range p {
|
||||
a[i] = p[i].Key
|
||||
a[i] = p[i].ID
|
||||
}
|
||||
return a
|
||||
}
|
||||
|
|
@ -336,7 +336,7 @@ func (p Pairs) String() string {
|
|||
var buf bytes.Buffer
|
||||
buf.WriteString("Pairs(")
|
||||
for i := range p {
|
||||
fmt.Fprintf(&buf, "%d/%d", p[i].Key, p[i].Count)
|
||||
fmt.Fprintf(&buf, "%d/%d", p[i].ID, p[i].Count)
|
||||
if i < len(p)-1 {
|
||||
buf.WriteString(", ")
|
||||
}
|
||||
|
|
|
|||
|
|
@ -231,8 +231,8 @@ func TestExecutor_Execute_TopN(t *testing.T) {
|
|||
if result, err := e.Execute(context.Background(), "d", MustParse(`TopN(frame=f, n=2)`), nil, nil); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(result[0], []pilosa.Pair{
|
||||
{Key: 0, Count: 5},
|
||||
{Key: 10, Count: 2},
|
||||
{ID: 0, Count: 5},
|
||||
{ID: 10, Count: 2},
|
||||
}) {
|
||||
t.Fatalf("unexpected result: %s", spew.Sdump(result))
|
||||
}
|
||||
|
|
@ -254,7 +254,7 @@ func TestExecutor_Execute_TopN_fill(t *testing.T) {
|
|||
if result, err := e.Execute(context.Background(), "d", MustParse(`TopN(frame=f, n=1)`), nil, nil); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(result, []interface{}{[]pilosa.Pair{
|
||||
{Key: 0, Count: 4},
|
||||
{ID: 0, Count: 4},
|
||||
}}) {
|
||||
t.Fatalf("unexpected result: %s", spew.Sdump(result))
|
||||
}
|
||||
|
|
@ -288,7 +288,7 @@ func TestExecutor_Execute_TopN_fill_small(t *testing.T) {
|
|||
if result, err := e.Execute(context.Background(), "d", MustParse(`TopN(frame=f, n=1)`), nil, nil); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(result, []interface{}{[]pilosa.Pair{
|
||||
{Key: 0, Count: 5},
|
||||
{ID: 0, Count: 5},
|
||||
}}) {
|
||||
t.Fatalf("unexpected result: %s", spew.Sdump(result))
|
||||
}
|
||||
|
|
@ -319,9 +319,9 @@ func TestExecutor_Execute_TopN_Src(t *testing.T) {
|
|||
if result, err := e.Execute(context.Background(), "d", MustParse(`TopN(Bitmap(id=100, frame=other), frame=f, n=3)`), nil, nil); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(result, []interface{}{[]pilosa.Pair{
|
||||
{Key: 20, Count: 3},
|
||||
{Key: 10, Count: 2},
|
||||
{Key: 0, Count: 1},
|
||||
{ID: 20, Count: 3},
|
||||
{ID: 10, Count: 2},
|
||||
{ID: 0, Count: 1},
|
||||
}}) {
|
||||
t.Fatalf("unexpected result: %s", spew.Sdump(result))
|
||||
}
|
||||
|
|
@ -343,7 +343,7 @@ func TestExecutor_Execute_TopN_Attr(t *testing.T) {
|
|||
if result, err := e.Execute(context.Background(), "d", MustParse(`TopN(frame="f", n=1, field="category", filters=[123])`), nil, nil); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(result, []interface{}{[]pilosa.Pair{
|
||||
{Key: 10, Count: 1},
|
||||
{ID: 10, Count: 1},
|
||||
}}) {
|
||||
t.Fatalf("unexpected result: %s", spew.Sdump(result))
|
||||
}
|
||||
|
|
@ -366,7 +366,7 @@ func TestExecutor_Execute_TopN_Attr_Src(t *testing.T) {
|
|||
if result, err := e.Execute(context.Background(), "d", MustParse(`TopN(Bitmap(id=10,frame=f),frame="f", n=1, field="category", filters=[123])`), nil, nil); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(result, []interface{}{[]pilosa.Pair{
|
||||
{Key: 10, Count: 1},
|
||||
{ID: 10, Count: 1},
|
||||
}}) {
|
||||
t.Fatalf("unexpected result: %s", spew.Sdump(result))
|
||||
}
|
||||
|
|
@ -611,9 +611,9 @@ func TestExecutor_Execute_Remote_TopN(t *testing.T) {
|
|||
|
||||
// Return pair counts.
|
||||
return []interface{}{[]pilosa.Pair{
|
||||
{Key: 0, Count: 5},
|
||||
{Key: 10, Count: 2},
|
||||
{Key: 30, Count: 2},
|
||||
{ID: 0, Count: 5},
|
||||
{ID: 10, Count: 2},
|
||||
{ID: 30, Count: 2},
|
||||
}}, nil
|
||||
}
|
||||
|
||||
|
|
@ -627,9 +627,9 @@ func TestExecutor_Execute_Remote_TopN(t *testing.T) {
|
|||
if res, err := e.Execute(context.Background(), "d", MustParse(`TopN(frame=f, n=3)`), nil, nil); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(res, []interface{}{[]pilosa.Pair{
|
||||
{Key: 0, Count: 5},
|
||||
{Key: 30, Count: 4},
|
||||
{Key: 10, Count: 2},
|
||||
{ID: 0, Count: 5},
|
||||
{ID: 30, Count: 4},
|
||||
{ID: 10, Count: 2},
|
||||
}}) {
|
||||
t.Fatalf("unexpected results: %s", spew.Sdump(res))
|
||||
}
|
||||
|
|
|
|||
|
|
@ -559,7 +559,7 @@ func (f *Fragment) Top(opt TopOptions) ([]Pair, error) {
|
|||
}
|
||||
}
|
||||
|
||||
heap.Push(results, Pair{Key: bitmapID, Count: count})
|
||||
heap.Push(results, Pair{ID: bitmapID, Count: count})
|
||||
|
||||
// If we reach the requested number of pairs and we are not computing
|
||||
// intersections then simply exit. If we are intersecting then sort
|
||||
|
|
@ -590,7 +590,7 @@ func (f *Fragment) Top(opt TopOptions) ([]Pair, error) {
|
|||
continue
|
||||
}
|
||||
|
||||
heap.Push(results, Pair{Key: bitmapID, Count: count})
|
||||
heap.Push(results, Pair{ID: bitmapID, Count: count})
|
||||
}
|
||||
|
||||
//Pop first opt.N elements out of heap
|
||||
|
|
|
|||
|
|
@ -152,9 +152,9 @@ func TestFragment_Top(t *testing.T) {
|
|||
t.Fatal(err)
|
||||
} else if len(pairs) != 2 {
|
||||
t.Fatalf("unexpected count: %d", len(pairs))
|
||||
} else if pairs[0] != (pilosa.Pair{Key: 100, Count: 3}) {
|
||||
} else if pairs[0] != (pilosa.Pair{ID: 100, Count: 3}) {
|
||||
t.Fatalf("unexpected pair(0): %v", pairs[0])
|
||||
} else if pairs[1] != (pilosa.Pair{Key: 102, Count: 2}) {
|
||||
} else if pairs[1] != (pilosa.Pair{ID: 102, Count: 2}) {
|
||||
t.Fatalf("unexpected pair(1): %v", pairs[1])
|
||||
}
|
||||
}
|
||||
|
|
@ -182,9 +182,9 @@ func TestFragment_Top_Filter(t *testing.T) {
|
|||
t.Fatal(err)
|
||||
} else if len(pairs) != 2 {
|
||||
t.Fatalf("unexpected count: %d", len(pairs))
|
||||
} else if pairs[0] != (pilosa.Pair{Key: 102, Count: 2}) {
|
||||
} else if pairs[0] != (pilosa.Pair{ID: 102, Count: 2}) {
|
||||
t.Fatalf("unexpected pair(0): %v", pairs[0])
|
||||
} else if pairs[1] != (pilosa.Pair{Key: 101, Count: 1}) {
|
||||
} else if pairs[1] != (pilosa.Pair{ID: 101, Count: 1}) {
|
||||
t.Fatalf("unexpected pair(1): %v", pairs[1])
|
||||
}
|
||||
}
|
||||
|
|
@ -207,9 +207,9 @@ func TestFragment_TopN_Intersect(t *testing.T) {
|
|||
if pairs, err := f.Top(pilosa.TopOptions{N: 3, Src: src}); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(pairs, []pilosa.Pair{
|
||||
{Key: 101, Count: 3},
|
||||
{Key: 102, Count: 2},
|
||||
{Key: 100, Count: 1},
|
||||
{ID: 101, Count: 3},
|
||||
{ID: 102, Count: 2},
|
||||
{ID: 100, Count: 1},
|
||||
}) {
|
||||
t.Fatalf("unexpected pairs: %s", spew.Sdump(pairs))
|
||||
}
|
||||
|
|
@ -241,16 +241,16 @@ func TestFragment_TopN_Intersect_Large(t *testing.T) {
|
|||
if pairs, err := f.Top(pilosa.TopOptions{N: 10, Src: src}); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(pairs, []pilosa.Pair{
|
||||
{Key: 999, Count: 19},
|
||||
{Key: 998, Count: 18},
|
||||
{Key: 997, Count: 17},
|
||||
{Key: 996, Count: 16},
|
||||
{Key: 995, Count: 15},
|
||||
{Key: 994, Count: 14},
|
||||
{Key: 993, Count: 13},
|
||||
{Key: 992, Count: 12},
|
||||
{Key: 991, Count: 11},
|
||||
{Key: 990, Count: 10},
|
||||
{ID: 999, Count: 19},
|
||||
{ID: 998, Count: 18},
|
||||
{ID: 997, Count: 17},
|
||||
{ID: 996, Count: 16},
|
||||
{ID: 995, Count: 15},
|
||||
{ID: 994, Count: 14},
|
||||
{ID: 993, Count: 13},
|
||||
{ID: 992, Count: 12},
|
||||
{ID: 991, Count: 11},
|
||||
{ID: 990, Count: 10},
|
||||
}) {
|
||||
t.Fatalf("unexpected pairs: %s", spew.Sdump(pairs))
|
||||
}
|
||||
|
|
@ -270,8 +270,8 @@ func TestFragment_TopN_BitmapIDs(t *testing.T) {
|
|||
if pairs, err := f.Top(pilosa.TopOptions{BitmapIDs: []uint64{100, 101, 200}}); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(pairs, []pilosa.Pair{
|
||||
{Key: 101, Count: 4},
|
||||
{Key: 100, Count: 3},
|
||||
{ID: 101, Count: 4},
|
||||
{ID: 100, Count: 3},
|
||||
}) {
|
||||
t.Fatalf("unexpected pairs: %s", spew.Sdump(pairs))
|
||||
}
|
||||
|
|
@ -675,9 +675,9 @@ func TestFragment_Tanimoto(t *testing.T) {
|
|||
t.Fatal(err)
|
||||
} else if len(pairs) != 2 {
|
||||
t.Fatalf("unexpected count: %d", len(pairs))
|
||||
} else if pairs[0] != (pilosa.Pair{Key: 100, Count: 3}) {
|
||||
} else if pairs[0] != (pilosa.Pair{ID: 100, Count: 3}) {
|
||||
t.Fatalf("unexpected pair(0): %v", pairs[0])
|
||||
} else if pairs[1] != (pilosa.Pair{Key: 101, Count: 2}) {
|
||||
} else if pairs[1] != (pilosa.Pair{ID: 101, Count: 2}) {
|
||||
t.Fatalf("unexpected pair(1): %v", pairs[1])
|
||||
}
|
||||
}
|
||||
|
|
@ -697,11 +697,11 @@ func TestFragment_Zero_Tanimoto(t *testing.T) {
|
|||
t.Fatal(err)
|
||||
} else if len(pairs) != 3 {
|
||||
t.Fatalf("unexpected count: %d", len(pairs))
|
||||
} else if pairs[0] != (pilosa.Pair{Key: 100, Count: 3}) {
|
||||
} else if pairs[0] != (pilosa.Pair{ID: 100, Count: 3}) {
|
||||
t.Fatalf("unexpected pair(0): %v", pairs[0])
|
||||
} else if pairs[1] != (pilosa.Pair{Key: 101, Count: 2}) {
|
||||
} else if pairs[1] != (pilosa.Pair{ID: 101, Count: 2}) {
|
||||
t.Fatalf("unexpected pair(1): %v", pairs[1])
|
||||
} else if pairs[2] != (pilosa.Pair{Key: 102, Count: 2}) {
|
||||
} else if pairs[2] != (pilosa.Pair{ID: 102, Count: 2}) {
|
||||
t.Fatalf("unexpected pair(1): %v", pairs[2])
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -345,8 +345,8 @@ func TestHandler_Query_Pairs_JSON(t *testing.T) {
|
|||
h := NewHandler()
|
||||
h.Executor.ExecuteFn = func(ctx context.Context, db string, query *pql.Query, slices []uint64, opt *pilosa.ExecOptions) ([]interface{}, error) {
|
||||
return []interface{}{[]pilosa.Pair{
|
||||
{Key: 1, Count: 2},
|
||||
{Key: 3, Count: 4},
|
||||
{ID: 1, Count: 2},
|
||||
{ID: 3, Count: 4},
|
||||
}}, nil
|
||||
}
|
||||
|
||||
|
|
@ -364,8 +364,8 @@ func TestHandler_Query_Pairs_Protobuf(t *testing.T) {
|
|||
h := NewHandler()
|
||||
h.Executor.ExecuteFn = func(ctx context.Context, db string, query *pql.Query, slices []uint64, opt *pilosa.ExecOptions) ([]interface{}, error) {
|
||||
return []interface{}{[]pilosa.Pair{
|
||||
{Key: 1, Count: 2},
|
||||
{Key: 3, Count: 4},
|
||||
{ID: 1, Count: 2},
|
||||
{ID: 3, Count: 4},
|
||||
}}, nil
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue