From 712830243c89a0863831ead8e983f089fd37fd42 Mon Sep 17 00:00:00 2001 From: "Damien F. Katz" Date: Thu, 5 Jun 2008 23:49:48 +0000 Subject: Added reduce/combine example. Fixed broken node chunking with very large keys/reduction values git-svn-id: https://svn.apache.org/repos/asf/incubator/couchdb/trunk@663786 13f79535-47bb-0310-9956-ffa450edef68 --- src/couchdb/couch_btree.erl | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src/couchdb/couch_btree.erl') diff --git a/src/couchdb/couch_btree.erl b/src/couchdb/couch_btree.erl index f5111c28..f01234c1 100644 --- a/src/couchdb/couch_btree.erl +++ b/src/couchdb/couch_btree.erl @@ -255,7 +255,7 @@ chunkify(_Bt, [], _ChunkThreshold, OutList, _OutListSize, OutputChunks) -> lists:reverse([lists:reverse(OutList) | OutputChunks]); chunkify(Bt, [InElement | RestInList], ChunkThreshold, OutList, OutListSize, OutputChunks) -> case size(term_to_binary(InElement)) of - Size when (Size + OutListSize) > ChunkThreshold -> + Size when (Size + OutListSize) > ChunkThreshold andalso OutList /= [] -> chunkify(Bt, RestInList, ChunkThreshold, [], 0, [lists:reverse([InElement | OutList]) | OutputChunks]); Size -> chunkify(Bt, RestInList, ChunkThreshold, [InElement | OutList], OutListSize + Size, OutputChunks) @@ -398,6 +398,9 @@ modify_kvnode(Bt, [{Key, Value} | RestKVs], [{ActionType, ActionKey, ActionValue end. +reduce_stream_node(_Bt, _Dir, nil, _KeyStart, _KeyEnd, GroupedKey, GroupedKVsAcc, + GroupedRedsAcc, _KeyGroupFun, _Fun, Acc) -> + {ok, Acc, GroupedRedsAcc, GroupedKVsAcc, GroupedKey}; reduce_stream_node(Bt, Dir, {P, _R}, KeyStart, KeyEnd, GroupedKey, GroupedKVsAcc, GroupedRedsAcc, KeyGroupFun, Fun, Acc) -> case get_node(Bt, P) of -- cgit v1.2.3