X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=plocate.cpp;h=4f88b4bd74c2ffe230052997939a1cbe30a5ffb0;hb=15ab346aca2262c40792a2266ec4ee53eec6cf28;hp=6fe46a4f77e36a1aa1f75ec2fc7e2036079b25fc;hpb=63fd24efd774f1ed3f5dab82b934f35b7b039557;p=plocate diff --git a/plocate.cpp b/plocate.cpp index 6fe46a4..4f88b4b 100644 --- a/plocate.cpp +++ b/plocate.cpp @@ -105,6 +105,10 @@ Corpus::Corpus(int fd, IOUringEngine *engine) hdr.zstd_dictionary_offset_bytes = 0; hdr.zstd_dictionary_length_bytes = 0; } + if (hdr.max_version < 2) { + // This too. (We ignore the other max_version 2 fields.) + hdr.require_visibility = true; + } } Corpus::~Corpus() @@ -230,7 +234,7 @@ void scan_file_block(const vector &needles, string_view compressed, size_t scan_docids(const vector &needles, const vector &docids, const Corpus &corpus, IOUringEngine *engine) { Serializer docids_in_order; - AccessRXCache access_rx_cache(engine); + AccessRXCache access_rx_cache(engine, corpus.get_hdr().require_visibility); atomic matched{ 0 }; for (size_t i = 0; i < docids.size(); ++i) { uint32_t docid = docids[i]; @@ -306,7 +310,7 @@ uint64_t scan_all_docids(const vector &needles, int fd, const Corpus &co } } - AccessRXCache access_rx_cache(nullptr); + AccessRXCache access_rx_cache(nullptr, corpus.get_hdr().require_visibility); Serializer serializer; uint32_t num_blocks = corpus.get_num_filename_blocks(); unique_ptr offsets(new uint64_t[num_blocks + 1]);