summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Vatamaniuc <vatamane@gmail.com>2022-03-11 15:06:33 -0500
committerNick Vatamaniuc <vatamane@gmail.com>2022-03-11 15:06:33 -0500
commit0a5a37c6ce7736cf753d0b70d3193c2e561827e7 (patch)
treeec4753c434bc84e23b865881cc935f2614577dc6
parentb9a322344aa6e86cf81af61300d697619f545311 (diff)
downloadcouchdb-broken-partitioned-custom-reduce.tar.gz
Partitions with custom reduce are brokenbroken-partitioned-custom-reduce
``` 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, ```
-rw-r--r--test/elixir/test/partition_view_test.exs40
1 files changed, 40 insertions, 0 deletions
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 = %{
@@ -56,6 +66,10 @@ defmodule ViewPartitionTest do
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}},
options: %{include_design: true}
@@ -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"})