1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
% Licensed under the Apache License, Version 2.0 (the "License"); you may not
% use this file except in compliance with the License. You may obtain a copy of
% the License at
%
% http://www.apache.org/licenses/LICENSE-2.0
%
% Unless required by applicable law or agreed to in writing, software
% distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
% WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
% License for the specific language governing permissions and limitations under
% the License.
-define(LOCAL_DOC_PREFIX, "_local/").
-define(DESIGN_DOC_PREFIX0, "_design").
-define(DESIGN_DOC_PREFIX, "_design/").
-define(JSON_ENCODE(V), mochijson2:encode(V)).
-define(JSON_DECODE(V), mochijson2:decode(V)).
-define(DEFAULT_ATTACHMENT_CONTENT_TYPE, <<"application/octet-stream">>).
-define(LOG_DEBUG(Format, Args),
case couch_log:debug_on() of
true -> error_logger:info_report(couch_debug, {Format, Args});
false -> ok
end).
-define(LOG_INFO(Format, Args),
case couch_log:info_on() of
true -> error_logger:info_report(couch_info, {Format, Args});
false -> ok
end).
-define(LOG_ERROR(Format, Args),
error_logger:info_report(couch_error, {Format, Args})).
-record(doc_info,
{
id = <<"">>,
rev = <<"">>,
update_seq = 0,
summary_pointer = nil,
conflict_revs = [],
deleted_conflict_revs = [],
deleted = false
}).
-record(full_doc_info,
{id = <<"">>,
update_seq = 0,
deleted = false,
rev_tree = []
}).
-record(doc,
{
id = <<"">>,
revs = [],
% the json body object.
body = {[]},
% each attachment contains:
% {data, Type, <<binary>>}
% or:
% {pointer, Type, {FileHandle, StreamPointer, Length}}
attachments = [],
deleted = false,
% key/value tuple of meta information, provided when using special options:
% couch_db:open_doc(Db, Id, Options).
meta = []
}).
-record(db_header,
{write_version = 0,
update_seq = 0,
summary_stream_state = nil,
fulldocinfo_by_id_btree_state = nil,
docinfo_by_seq_btree_state = nil,
local_docs_btree_state = nil,
doc_count=0,
doc_del_count=0
}).
-record(db,
{main_pid=nil,
update_pid=nil,
compactor_pid=nil,
fd,
header = #db_header{},
summary_stream,
fulldocinfo_by_id_btree,
docinfo_by_seq_btree,
local_docs_btree,
update_seq,
doc_count,
doc_del_count,
name,
filepath
}).
% small value used in revision trees to indicate the revision isn't stored
-define(REV_MISSING, []).
|