mirror of
https://github.com/neondatabase/neon.git
synced 2026-05-18 05:30:37 +00:00
OrderedVec copy_prefix
This commit is contained in:
@@ -775,12 +775,7 @@ impl InMemoryLayer {
|
||||
|
||||
let end_lsn = self.end_lsn.unwrap();
|
||||
|
||||
let mut before_segsizes = OrderedVec::default();
|
||||
for (lsn, size) in inner.segsizes.iter() {
|
||||
if *lsn <= end_lsn {
|
||||
before_segsizes.append(*lsn, *size);
|
||||
}
|
||||
}
|
||||
let before_segsizes = inner.segsizes.copy_prefix(&Lsn(end_lsn.0 + 1));
|
||||
let mut before_page_versions = inner.page_versions.ordered_iter(Some(end_lsn));
|
||||
|
||||
let mut frozen_layers: Vec<Arc<dyn Layer>> = Vec::new();
|
||||
|
||||
@@ -91,6 +91,19 @@ impl<K: Ord + Copy, V> OrderedVec<K, V> {
|
||||
self.0.is_empty()
|
||||
}
|
||||
|
||||
pub fn copy_prefix(&self, key: &K) -> Self
|
||||
where
|
||||
K: Clone,
|
||||
V: Clone,
|
||||
{
|
||||
let idx = match self.0.binary_search_by_key(key, extract_key) {
|
||||
Ok(idx) => idx,
|
||||
Err(idx) => idx,
|
||||
};
|
||||
|
||||
OrderedVec(Vec::from(&self.0[..idx]))
|
||||
}
|
||||
|
||||
pub fn copy_split(&self, key: &K) -> (Self, Self)
|
||||
where
|
||||
K: Clone,
|
||||
|
||||
Reference in New Issue
Block a user