(&mut self, id: &ArrayId)
| 25 | } |
| 26 | |
| 27 | fn prepare_flush(&mut self, id: &ArrayId) -> ArrayEngineResult<Option<PreparedFlush>> { |
| 28 | let store = self.store_mut(id)?; |
| 29 | if store.memtable.is_empty() { |
| 30 | return Ok(None); |
| 31 | } |
| 32 | let schema = store.schema().clone(); |
| 33 | let schema_hash = store.schema_hash(); |
| 34 | let kek = store.kek().cloned(); |
| 35 | let drained = std::mem::replace(&mut store.memtable, Memtable::new()).drain_sorted(); |
| 36 | let built = build_segment_from_memtable(&schema, schema_hash, kek.as_ref(), &drained)?; |
| 37 | let segment_id = store.allocate_segment_id(); |
| 38 | Ok(Some(PreparedFlush { |
| 39 | segment_id, |
| 40 | bytes: built.bytes, |
| 41 | tile_count: built.tile_count, |
| 42 | min_tile: built.min_tile, |
| 43 | max_tile: built.max_tile, |
| 44 | })) |
| 45 | } |
| 46 | |
| 47 | fn install_flushed_segment( |
| 48 | &mut self, |
no test coverage detected