diff --git a/common/src/datetime.rs b/common/src/datetime.rs index b818066aa..3d46882f9 100644 --- a/common/src/datetime.rs +++ b/common/src/datetime.rs @@ -29,7 +29,7 @@ pub enum DatePrecision { /// All constructors and conversions are provided as explicit /// functions and not by implementing any `From`/`Into` traits /// to prevent unintended usage. -#[derive(Clone, Default, Copy, PartialEq, Eq, PartialOrd, Ord)] +#[derive(Clone, Default, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)] pub struct DateTime { // Timestamp in microseconds. pub(crate) timestamp_micros: i64, diff --git a/src/core/segment_reader.rs b/src/core/segment_reader.rs index 1b70e0cfb..1ed0a675b 100644 --- a/src/core/segment_reader.rs +++ b/src/core/segment_reader.rs @@ -38,7 +38,7 @@ pub struct SegmentReader { termdict_composite: CompositeFile, postings_composite: CompositeFile, positions_composite: CompositeFile, - fast_fields_readers: Arc, + fast_fields_readers: FastFieldReaders, fieldnorm_readers: FieldNormReaders, store_file: FileSlice, @@ -167,7 +167,7 @@ impl SegmentReader { let schema = segment.schema(); let fast_fields_data = segment.open_read(SegmentComponent::FastFields)?; - let fast_fields_readers = Arc::new(FastFieldReaders::open(fast_fields_data)?); + let fast_fields_readers = FastFieldReaders::open(fast_fields_data)?; let fieldnorm_data = segment.open_read(SegmentComponent::FieldNorms)?; let fieldnorm_readers = FieldNormReaders::open(fieldnorm_data)?; diff --git a/src/indexer/json_term_writer.rs b/src/indexer/json_term_writer.rs index 5be02d3a2..23dfcb251 100644 --- a/src/indexer/json_term_writer.rs +++ b/src/indexer/json_term_writer.rs @@ -366,7 +366,7 @@ impl<'a> JsonTermWriter<'a> { &self.term().value_bytes()[..end_of_path - 1] } - pub fn set_fast_value(&mut self, val: T) { + pub(crate) fn set_fast_value(&mut self, val: T) { self.close_path_and_set_type(T::to_type()); let value = if T::to_type() == Type::Date { DateTime::from_u64(val.to_u64()) diff --git a/src/query/range_query/fast_field_range_query.rs b/src/query/range_query/fast_field_range_query.rs index 06bab622d..c36a826aa 100644 --- a/src/query/range_query/fast_field_range_query.rs +++ b/src/query/range_query/fast_field_range_query.rs @@ -3,7 +3,6 @@ use std::ops::RangeInclusive; use columnar::Column; -use crate::fastfield::MakeZero; use crate::{DocId, DocSet, TERMINATED}; /// Helper to have a cursor over a vec of docids @@ -40,7 +39,7 @@ impl VecCursor { } } -pub(crate) struct RangeDocSet { +pub(crate) struct RangeDocSet { /// The range filter on the values. value_range: RangeInclusive, column: Column, @@ -61,7 +60,7 @@ pub(crate) struct RangeDocSet { } const DEFAULT_FETCH_HORIZON: u32 = 128; -impl RangeDocSet { +impl RangeDocSet { pub(crate) fn new(value_range: RangeInclusive, column: Column) -> Self { let mut range_docset = Self { value_range, @@ -131,7 +130,7 @@ impl RangeDocSe } } -impl DocSet for RangeDocSet { +impl DocSet for RangeDocSet { #[inline] fn advance(&mut self) -> DocId { if let Some(docid) = self.loaded_docs.next() { diff --git a/src/termdict/sstable_termdict/merger.rs b/src/termdict/sstable_termdict/merger.rs index e502aeb4d..e98c29656 100644 --- a/src/termdict/sstable_termdict/merger.rs +++ b/src/termdict/sstable_termdict/merger.rs @@ -57,14 +57,6 @@ impl<'a> TermMerger<'a> { } } - pub(crate) fn matching_segments<'b: 'a>( - &'b self, - ) -> impl 'b + Iterator { - self.current_streamers - .iter() - .map(|heap_item| (heap_item.segment_ord, heap_item.streamer.term_ord())) - } - fn advance_segments(&mut self) { let streamers = &mut self.current_streamers; let heap = &mut self.heap; @@ -80,19 +72,18 @@ impl<'a> TermMerger<'a> { /// False if there is none. pub fn advance(&mut self) -> bool { self.advance_segments(); - if let Some(head) = self.heap.pop() { - self.current_streamers.push(head); - while let Some(next_streamer) = self.heap.peek() { - if self.current_streamers[0].streamer.key() != next_streamer.streamer.key() { - break; - } - let next_heap_it = self.heap.pop().unwrap(); // safe : we peeked beforehand - self.current_streamers.push(next_heap_it); + let Some(head) = self.heap.pop() else { + return false; + }; + self.current_streamers.push(head); + while let Some(next_streamer) = self.heap.peek() { + if self.current_streamers[0].streamer.key() != next_streamer.streamer.key() { + break; } - true - } else { - false + let next_heap_it = self.heap.pop().unwrap(); // safe : we peeked beforehand + self.current_streamers.push(next_heap_it); } + true } /// Returns the current term.