@@ -21,6 +21,7 @@ allocator: std.mem.Allocator,
21
21
info : SegmentInfo = .{},
22
22
attributes : std .StringHashMapUnmanaged (u64 ) = .{},
23
23
docs : std .AutoHashMapUnmanaged (u32 , bool ) = .{},
24
+ max_doc_id : u32 = 0 ,
24
25
items : std .ArrayListUnmanaged (Item ) = .{},
25
26
frozen : bool = false ,
26
27
@@ -81,6 +82,7 @@ pub fn build(self: *Self, changes: []const Change) !void {
81
82
try self .docs .ensureTotalCapacity (self .allocator , num_docs );
82
83
try self .items .ensureTotalCapacity (self .allocator , num_items );
83
84
85
+ self .max_doc_id = 0 ;
84
86
var i = changes .len ;
85
87
while (i > 0 ) {
86
88
i -= 1 ;
@@ -94,6 +96,7 @@ pub fn build(self: *Self, changes: []const Change) !void {
94
96
for (op .hashes , 0.. ) | hash , j | {
95
97
items [j ] = .{ .hash = hash , .id = op .id };
96
98
}
99
+ self .max_doc_id = @max (self .max_doc_id , op .id );
97
100
}
98
101
},
99
102
.delete = > | op | {
@@ -131,6 +134,8 @@ pub fn merge(self: *Self, merger: *SegmentMerger(Self)) !void {
131
134
self .docs .deinit (self .allocator );
132
135
self .docs = merger .segment .docs .move ();
133
136
137
+ self .max_doc_id = merger .segment .max_doc_id ;
138
+
134
139
self .items .clearRetainingCapacity ();
135
140
try self .items .ensureTotalCapacity (self .allocator , merger .estimated_size );
136
141
while (true ) {
0 commit comments