mirror of
https://github.com/featurebasedb/featurebase.git
synced 2026-08-28 10:54:59 +00:00
Merge branch 'master' into remove-rbftx-frag
This commit is contained in:
commit
02de222387
2 changed files with 22 additions and 3 deletions
|
|
@ -2876,10 +2876,12 @@ func (e *executor) executeGroupBy(ctx context.Context, qcx *Qcx, index string, c
|
|||
}
|
||||
}
|
||||
|
||||
ignoreLimit := sorter != nil
|
||||
// Execute calls in bulk on each remote node and merge.
|
||||
mapFn := func(ctx context.Context, shard uint64) (_ interface{}, err error) {
|
||||
return e.executeGroupByShard(ctx, qcx, index, c, filter, shard, childRows, bases)
|
||||
return e.executeGroupByShard(ctx, qcx, index, c, filter, shard, childRows, bases, ignoreLimit)
|
||||
}
|
||||
|
||||
// Merge returned results at coordinating node.
|
||||
reduceFn := func(ctx context.Context, prev, v interface{}) interface{} {
|
||||
other := findGroupCounts(prev)
|
||||
|
|
@ -3434,7 +3436,7 @@ func applyConditionToGroupCounts(gcs []GroupCount, subj string, cond *pql.Condit
|
|||
return gcs[:i]
|
||||
}
|
||||
|
||||
func (e *executor) executeGroupByShard(ctx context.Context, qcx *Qcx, index string, c *pql.Call, filter *pql.Call, shard uint64, childRows []RowIDs, bases map[int]int64) (_ []GroupCount, err error) {
|
||||
func (e *executor) executeGroupByShard(ctx context.Context, qcx *Qcx, index string, c *pql.Call, filter *pql.Call, shard uint64, childRows []RowIDs, bases map[int]int64, ignoreLimit bool) (_ []GroupCount, err error) {
|
||||
span, ctx := tracing.StartSpanFromContext(ctx, "Executor.executeGroupByShard")
|
||||
defer span.Finish()
|
||||
|
||||
|
|
@ -3464,7 +3466,7 @@ func (e *executor) executeGroupByShard(ctx context.Context, qcx *Qcx, index stri
|
|||
limit := int(^uint(0) >> 1)
|
||||
if lim, hasLimit, err := c.UintArg("limit"); err != nil {
|
||||
return nil, err
|
||||
} else if hasLimit {
|
||||
} else if !ignoreLimit && hasLimit {
|
||||
limit = int(lim)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7013,6 +7013,17 @@ func variousQueries(t *testing.T, clusterSize int) {
|
|||
{"icecream", "userF"},
|
||||
})
|
||||
|
||||
// Create and populate "dinner" field.
|
||||
c.CreateField(t, "users", pilosa.IndexOptions{Keys: true, TrackExistence: true}, "dinner", pilosa.OptFieldKeys())
|
||||
c.ImportKeyKey(t, "users", "dinner", [][2]string{
|
||||
{"leftovers", "userB"},
|
||||
{"pizza", "userA"},
|
||||
{"pizza", "userB"},
|
||||
{"chinese", "userA"},
|
||||
{"chinese", "userB"},
|
||||
{"chinese", "userF"},
|
||||
})
|
||||
|
||||
// Create and populate "places_visited" time field.
|
||||
c.CreateField(t, "users", pilosa.IndexOptions{Keys: true, TrackExistence: true}, "places_visited", pilosa.OptFieldKeys(), pilosa.OptFieldTypeTime(pilosa.TimeQuantum("YM")))
|
||||
ts2019Jan01 := int64(1546300800) * 1e+9 // 2019 January 1st 0:00:00
|
||||
|
|
@ -7388,6 +7399,12 @@ pangolin,1,100
|
|||
0,1,1
|
||||
5,1,1
|
||||
10,1,1
|
||||
`,
|
||||
},
|
||||
{
|
||||
query: "GroupBy(Rows(field=dinner), sort=\"count desc\", limit=2)",
|
||||
csvVerifier: `chinese,3
|
||||
pizza,2
|
||||
`,
|
||||
},
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue