From 0a5a37c6ce7736cf753d0b70d3193c2e561827e7 Mon Sep 17 00:00:00 2001 From: Nick Vatamaniuc Date: Fri, 11 Mar 2022 15:06:33 -0500 Subject: Partitions with custom reduce are broken ``` make elixir tests=test/elixir/test/partition_view_test.exs:314 * test query with custom reduce works (708.2ms) 1) test query with custom reduce works (ViewPartitionTest) test/elixir/test/partition_view_test.exs:314 Assertion with == failed code: assert resp.status_code == 200 left: 500 right: 200 stacktrace: test/elixir/test/partition_view_test.exs:319: (test) ``` Logs show: ``` [error] 2022-03-11T20:05:58.969707Z node1@127.0.0.1 <0.985.0> 9bc85227db req_err(2412564908) {{invalid_ejson,{p,<<"bar">>,[<<"field">>,<<"one">>]}}, [{jiffy,encode,2, [{file,"/Users/nvatama/asf-3-main/src/jiffy/src/jiffy.erl"}, {line,99}]}, {couch_os_process,writejson,2,[{file,"src/couch_os_process.erl"},{line,97}]}, {couch_os_process,handle_call,3, ``` --- test/elixir/test/partition_view_test.exs | 40 ++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/test/elixir/test/partition_view_test.exs b/test/elixir/test/partition_view_test.exs index 0a55c2443..7edd79b44 100644 --- a/test/elixir/test/partition_view_test.exs +++ b/test/elixir/test/partition_view_test.exs @@ -29,6 +29,16 @@ defmodule ViewPartitionTest do } """ + red_custom = """ + function(keys, values, rereduce) { + if (rereduce) { + return sum(values); + } else { + return values.length; + } + } + """ + query = %{:w => 3} body = %{ @@ -55,6 +65,10 @@ defmodule ViewPartitionTest do _id: "_design/reduce", views: %{some: %{map: map_fun2, reduce: "_count"}} }, + %{ + _id: "_design/reduce_custom", + views: %{some: %{map: map_fun2, reduce: red_custom}} + }, %{ _id: "_design/include_ddocs", views: %{some: %{map: map_fun1}}, @@ -297,6 +311,32 @@ defmodule ViewPartitionTest do ] end + test "query with custom reduce works", context do + db_name = context[:db_name] + + url = "/#{db_name}/_partition/foo/_design/reduce_custom/_view/some" + resp = Couch.get(url, query: %{reduce: true, group_level: 1}) + assert resp.status_code == 200 + results = get_reduce_result(resp) + assert results == [%{"key" => ["field"], "value" => 50}] + + resp = Couch.get(url, query: %{reduce: true, group_level: 2}) + results = get_reduce_result(resp) + + assert results == [ + %{"key" => ["field", "one"], "value" => 16}, + %{"key" => ["field", "two"], "value" => 34} + ] + + resp = Couch.get(url, query: %{reduce: true, group: true}) + results = get_reduce_result(resp) + + assert results == [ + %{"key" => ["field", "one"], "value" => 16}, + %{"key" => ["field", "two"], "value" => 34} + ] + end + test "partition query can set query limits", context do set_config({"query_server_config", "partition_query_limit", "2000"}) -- cgit v1.2.1