couch_mrview: fix changes log This changes make sure we pass correct keys to remove to the seq and key_byseq btrees in views.
Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/08ab524c Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/08ab524c Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/08ab524c Branch: refs/heads/1994-merge-rcouch Commit: 08ab524c68b0eea43870afa6ea3bfb1a125a2058 Parents: f37134b Author: Benoit Chesneau <[email protected]> Authored: Mon Jan 27 10:24:25 2014 +0100 Committer: Benoit Chesneau <[email protected]> Committed: Mon Jan 27 10:24:25 2014 +0100 ---------------------------------------------------------------------- apps/couch_mrview/src/couch_mrview_updater.erl | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/couchdb/blob/08ab524c/apps/couch_mrview/src/couch_mrview_updater.erl ---------------------------------------------------------------------- diff --git a/apps/couch_mrview/src/couch_mrview_updater.erl b/apps/couch_mrview/src/couch_mrview_updater.erl index 782502a..58ee9d2 100644 --- a/apps/couch_mrview/src/couch_mrview_updater.erl +++ b/apps/couch_mrview/src/couch_mrview_updater.erl @@ -279,13 +279,15 @@ write_kvs(State, UpdateSeq, ViewKVs, DocIdKeys, Log) -> true -> SToRem = couch_util:dict_find(ViewId, SeqsToRemove, []), SToAdd = couch_util:dict_find(ViewId, SeqsToAdd, []), + RemSKs = [{Seq, Key} || {Key, Seq, _} <- SToRem], + RemKSs = [{[Seq, Key], DocId} || {Key, Seq, DocId} <- SToRem], SKVs1 = SKVs ++ SToAdd, {ok, SBt} = couch_btree:add_remove(View#mrview.seq_btree, - SKVs1, SToRem), + SKVs1, RemSKs), {ok, KSbt} = couch_btree:add_remove(View#mrview.key_byseq_btree, couch_mrview_util:to_key_seq(SKVs1), - couch_mrview_util:to_key_seq(SToRem)), + RemKSs), {SBt, KSbt}; _ -> {nil, nil} end, @@ -350,8 +352,9 @@ update_log(Btree, Log, UpdatedSeq, _) -> true -> %% the log is updated, deleted old %% record from the view - DelAcc5 = dict:append(ViewId, {Seq, Key}, - DelAcc4), + DelAcc5 = dict:append(ViewId, + {Key, Seq, DocId}, + DelAcc4), {Log4, AddAcc4, DelAcc5}; false when Op /= del -> %% an update operation has been @@ -364,8 +367,9 @@ update_log(Btree, Log, UpdatedSeq, _) -> {ViewId, {Key,UpdatedSeq, del}}, Log4), - DelAcc5 = dict:append(ViewId, {Seq, Key}, - DelAcc4), + DelAcc5 = dict:append(ViewId, + {Key, Seq, DocId}, + DelAcc4), AddAcc5 = dict:append(ViewId, {{UpdatedSeq, Key}, {DocId, RemValue}},
