Uploaded image for project: 'CouchDB'
  1. CouchDB
  2. COUCHDB-861

Enhance _sum to handle lists of numbers.

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 1.1
    • Database Core
    • None

    Description

      _sum can currently only sum a single value but it is often useful to emit an array of numbers on the value side.

      The code below achieves this, I'm working on a test.

      diff --git a/src/couchdb/couch_query_servers.erl b/src/couchdb/couch_query_servers.erl
      index 92c30f8..e2a748e 100644
      — a/src/couchdb/couch_query_servers.erl
      +++ b/src/couchdb/couch_query_servers.erl
      @@ -167,8 +167,13 @@ builtin_sum_rows(KVs) ->
      lists:foldl(fun
      ([_Key, Value], Acc) when is_number(Value) ->
      Acc + Value;
      + ([_Key, Value], Acc) when is_list(Value) ->
      + case Acc of
      + 0 -> Value;
      + _ -> lists:zipwith(fun(X, Y) -> X + Y end, Acc, Value)
      + end;
      (_Else, _Acc) ->

      • throw({invalid_value, <<"builtin _sum function requires map values to be numbers
        + throw({invalid_value, <<"builtin _sum function requires map values to be numbers
        end, 0, KVs).

      builtin_stats(reduce, [[_,First]|Rest]) when is_number(First) ->

      Attachments

        Activity

          People

            Unassigned Unassigned
            rnewson Robert Newson
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: