summaryrefslogtreecommitdiff
path: root/internal/mapr
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2021-09-12 19:01:34 +0300
committerPaul Buetow <paul@buetow.org>2021-10-02 12:26:29 +0300
commit842fd5800000bb68d6306a9ecad80a98ed762a2f (patch)
tree593e6c606f5eb3f8ef2634ab9ca7c267165ccdc8 /internal/mapr
parent16dc57e1e1c28e9d762424e596223a980770e059 (diff)
limit mapreduce table output to 10 rows by default
Diffstat (limited to 'internal/mapr')
-rw-r--r--internal/mapr/globalgroupset.go4
-rw-r--r--internal/mapr/groupset.go8
2 files changed, 8 insertions, 4 deletions
diff --git a/internal/mapr/globalgroupset.go b/internal/mapr/globalgroupset.go
index 21bf990..50bac37 100644
--- a/internal/mapr/globalgroupset.go
+++ b/internal/mapr/globalgroupset.go
@@ -93,9 +93,9 @@ func (g *GlobalGroupSet) WriteResult(query *Query) error {
}
// Result returns the result of the mapreduce aggregation as a string.
-func (g *GlobalGroupSet) Result(query *Query) (string, int, error) {
+func (g *GlobalGroupSet) Result(query *Query, rowsLimit int) (string, int, error) {
g.semaphore <- struct{}{}
defer func() { <-g.semaphore }()
- return g.GroupSet.Result(query)
+ return g.GroupSet.Result(query, rowsLimit)
}
diff --git a/internal/mapr/groupset.go b/internal/mapr/groupset.go
index d29559a..9bff790 100644
--- a/internal/mapr/groupset.go
+++ b/internal/mapr/groupset.go
@@ -68,12 +68,16 @@ func (g *GroupSet) Serialize(ctx context.Context, ch chan<- string) {
}
// Result returns a nicely formated result of the query from the group set.
-func (g *GroupSet) Result(query *Query) (string, int, error) {
+func (g *GroupSet) Result(query *Query, rowsLimit int) (string, int, error) {
rows, widths, err := g.result(query, true)
if err != nil {
return "", 0, err
}
+ if query.Limit != -1 {
+ rowsLimit = query.Limit
+ }
+
sb := pool.BuilderBuffer.Get().(*strings.Builder)
defer pool.RecycleBuilderBuffer(sb)
@@ -141,7 +145,7 @@ func (g *GroupSet) Result(query *Query) (string, int, error) {
// And now write the data
for i, r := range rows {
- if i == query.Limit {
+ if i == rowsLimit {
break
}
for j, value := range r.values {