MCPcopy Create free account
hub / github.com/ByConity/ByConity / seek

Method seek

src/Compression/CachedCompressedReadBuffer.cpp:132–160  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

130}
131
132void CachedCompressedReadBuffer::seek(size_t offset_in_compressed_file, size_t offset_in_decompressed_block)
133{
134 /// Nothing to do if we already at required position
135 if (!owned_cell && file_pos == offset_in_compressed_file
136 && ((!buffer().empty() && offset() == offset_in_decompressed_block) ||
137 nextimpl_working_buffer_offset == offset_in_decompressed_block))
138 return;
139
140 if (owned_cell &&
141 offset_in_compressed_file == file_pos - owned_cell->compressed_size &&
142 offset_in_decompressed_block <= working_buffer.size())
143 {
144 pos = working_buffer.begin() + offset_in_decompressed_block;
145 }
146 else
147 {
148 /// Remember position in compressed file (will be moved in nextImpl)
149 file_pos = offset_in_compressed_file;
150 /// We will discard our working_buffer, but have to account rest bytes
151 bytes += offset();
152 /// No data, everything discarded
153 resetWorkingBuffer();
154 owned_cell.reset();
155
156 /// Remember required offset in decompressed block which will be set in
157 /// the next ReadBuffer::next() call
158 nextimpl_working_buffer_offset = offset_in_decompressed_block;
159 }
160}
161
162std::pair<size_t, size_t> CachedCompressedReadBuffer::position() const
163{

Callers 9

TEST_PFunction · 0.45
getOutputMethod · 0.45
addMethod · 0.45
fixIfBrokenMethod · 0.45
deserializeMethod · 0.45
deserializeVidsMethod · 0.45
deserializeMethod · 0.45
deserializeVidsMethod · 0.45
nextImplMethod · 0.45

Calls 5

bufferFunction · 0.85
emptyMethod · 0.45
sizeMethod · 0.45
beginMethod · 0.45
resetMethod · 0.45

Tested by 1

TEST_PFunction · 0.36