formalized unnecessary copying

main
Ziyang Hu 2 years ago
parent 0f397e2873
commit b1ea7240e1

@ -188,25 +188,28 @@ impl InMemRelation {
let epoch_map: &RefCell<BTreeMap<_, _>> = epoch_map.borrow(); let epoch_map: &RefCell<BTreeMap<_, _>> = epoch_map.borrow();
let epoch_map = epoch_map.borrow(); let epoch_map = epoch_map.borrow();
// FIXME let collected = epoch_map
epoch_map.clone().into_iter().map(|(k, v)| { .iter()
.map(|(k, v)| {
if v.0.is_empty() { if v.0.is_empty() {
Ok(k) k.clone()
} else { } else {
let combined = let combined =
k.0.into_iter() k.0.iter()
.zip(v.0.into_iter()) .zip(v.0.iter())
.map(|(kel, vel)| { .map(|(kel, vel)| {
if matches!(kel, DataValue::Guard) { if matches!(kel, DataValue::Guard) {
vel vel.clone()
} else { } else {
kel kel.clone()
} }
}) })
.collect_vec(); .collect_vec();
Ok(Tuple(combined)) Tuple(combined)
} }
}) })
.collect_vec();
collected.into_iter().map(Ok)
} }
pub(crate) fn scan_all<'a>(&'a self) -> impl Iterator<Item = Result<Tuple>> + 'a { pub(crate) fn scan_all<'a>(&'a self) -> impl Iterator<Item = Result<Tuple>> + 'a {
self.scan_all_for_epoch(0) self.scan_all_for_epoch(0)
@ -218,10 +221,11 @@ impl InMemRelation {
let epoch_map: &RefCell<BTreeMap<_, _>> = epoch_map.borrow(); let epoch_map: &RefCell<BTreeMap<_, _>> = epoch_map.borrow();
let epoch_map = epoch_map.borrow(); let epoch_map = epoch_map.borrow();
// FIXME let collected = epoch_map
epoch_map.clone().into_iter().filter_map(|(k, v)| { .iter()
.filter_map(|(k, v)| {
if v.0.is_empty() { if v.0.is_empty() {
Some(Ok(k)) Some(k.clone())
} else if v.0.last() == Some(&DataValue::Guard) { } else if v.0.last() == Some(&DataValue::Guard) {
None None
} else { } else {
@ -236,9 +240,11 @@ impl InMemRelation {
} }
}) })
.collect_vec(); .collect_vec();
Some(Ok(Tuple(combined))) Some(Tuple(combined))
} }
}) })
.collect_vec();
collected.into_iter().map(Ok)
} }
pub(crate) fn scan_prefix(&self, prefix: &Tuple) -> impl Iterator<Item = Result<Tuple>> { pub(crate) fn scan_prefix(&self, prefix: &Tuple) -> impl Iterator<Item = Result<Tuple>> {
self.scan_prefix_for_epoch(prefix, 0) self.scan_prefix_for_epoch(prefix, 0)
@ -257,11 +263,11 @@ impl InMemRelation {
let epoch_map: &RefCell<BTreeMap<_, _>> = epoch_map.borrow(); let epoch_map: &RefCell<BTreeMap<_, _>> = epoch_map.borrow();
let epoch_map = epoch_map.borrow(); let epoch_map = epoch_map.borrow();
let res = epoch_map let collected = epoch_map
.range((Included(prefix), Included(&upper))) .range((Included(prefix), Included(&upper)))
.map(|(k, v)| { .map(|(k, v)| {
if v.0.is_empty() { if v.0.is_empty() {
Ok(k.clone()) k.clone()
} else { } else {
let combined = let combined =
k.0.iter() k.0.iter()
@ -274,11 +280,11 @@ impl InMemRelation {
} }
}) })
.collect_vec(); .collect_vec();
Ok(Tuple(combined)) Tuple(combined)
} }
}) })
.collect_vec(); .collect_vec();
res.into_iter() collected.into_iter().map(Ok)
} }
pub(crate) fn scan_bounded_prefix_for_epoch( pub(crate) fn scan_bounded_prefix_for_epoch(
&self, &self,
@ -300,8 +306,8 @@ impl InMemRelation {
let res = epoch_map let res = epoch_map
.range((Included(&prefix_bound), Included(&upper_bound))) .range((Included(&prefix_bound), Included(&upper_bound)))
.map(|(k, _v)| Ok(k.clone())) .map(|(k, _v)| k.clone())
.collect_vec(); .collect_vec();
res.into_iter() res.into_iter().map(Ok)
} }
} }

Loading…
Cancel
Save