summaryrefslogtreecommitdiff
path: root/src/couchdb/couch_db_updater.erl
diff options
context:
space:
mode:
authorDamien F. Katz <damien@apache.org>2009-09-11 23:23:07 +0000
committerDamien F. Katz <damien@apache.org>2009-09-11 23:23:07 +0000
commit45796298231349dadf650e9ddefd7a6ff32e1302 (patch)
tree4de5543e9584a2c8a91f0b27b5b8f9e43de3fe46 /src/couchdb/couch_db_updater.erl
parent773a23353b9101620ebb91183cb67240c17aa2c9 (diff)
Refactoring of endkey code in views and btrees. End key functionaility is now handled inside the btree code, simplfying calling code and making it trivial to add new collation options
git-svn-id: https://svn.apache.org/repos/asf/couchdb/trunk@814078 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/couchdb/couch_db_updater.erl')
-rw-r--r--src/couchdb/couch_db_updater.erl13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/couchdb/couch_db_updater.erl b/src/couchdb/couch_db_updater.erl
index fd1d340f..42a85894 100644
--- a/src/couchdb/couch_db_updater.erl
+++ b/src/couchdb/couch_db_updater.erl
@@ -168,7 +168,7 @@ handle_cast({compact_done, CompactFilepath}, #db{filepath=Filepath}=Db) ->
case Db#db.update_seq == NewSeq of
true ->
% suck up all the local docs into memory and write them to the new db
- {ok, LocalDocs} = couch_btree:foldl(Db#db.local_docs_btree,
+ {ok, _, LocalDocs} = couch_btree:foldl(Db#db.local_docs_btree,
fun(Value, _Offset, Acc) -> {ok, [Value | Acc]} end, []),
{ok, NewLocalBtree} = couch_btree:add(NewDb#db.local_docs_btree, LocalDocs),
@@ -279,10 +279,11 @@ simple_upgrade_record(Old, New) ->
lists:sublist(tuple_to_list(New), size(Old) + 1, size(New)-size(Old)),
list_to_tuple(tuple_to_list(Old) ++ NewValuesTail).
-% used for doc insertion, also for the PassedEndFun on all_docs view
-less_docid(A, B) when A==B -> false;
+less_docid(A, B) when A == B -> false;
less_docid(nil, _) -> true; % nil - special key sorts before all
less_docid({}, _) -> false; % {} -> special key sorts after all
+less_docid(_, nil) -> false;
+less_docid(_, {}) -> true;
less_docid(A, B) -> A < B.
@@ -722,8 +723,10 @@ copy_compact(Db, NewDb0, Retry) ->
couch_task_status:set_update_frequency(500),
- {ok, {NewDb2, Uncopied, TotalChanges}} =
- couch_btree:foldl(Db#db.docinfo_by_seq_btree, NewDb#db.update_seq + 1, EnumBySeqFun, {NewDb, [], 0}),
+ {ok, _, {NewDb2, Uncopied, TotalChanges}} =
+ couch_btree:foldl(Db#db.docinfo_by_seq_btree, EnumBySeqFun,
+ {NewDb, [], 0},
+ [{start_key, NewDb#db.update_seq + 1}]),
couch_task_status:update("Flushing"),