diff --git a/crates/storage/provider/src/providers/database/provider.rs b/crates/storage/provider/src/providers/database/provider.rs index e39336c6a8..82c054f689 100644 --- a/crates/storage/provider/src/providers/database/provider.rs +++ b/crates/storage/provider/src/providers/database/provider.rs @@ -1359,7 +1359,7 @@ impl StorageChangeSetReader for DatabaseProvider self.tx .cursor_dup_read::()? .walk_range(storage_range)? - .map(|result| -> ProviderResult<_> { Ok(result?) }) + .map(|r| r.map_err(Into::into)) .collect() } } @@ -1392,7 +1392,7 @@ impl StorageChangeSetReader for DatabaseProvider self.tx .cursor_dup_read::()? .walk_range(BlockNumberAddress::range(range))? - .map(|result| -> ProviderResult<_> { Ok(result?) }) + .map(|r| r.map_err(Into::into)) .collect() } } @@ -1449,32 +1449,15 @@ impl ChangeSetReader for DatabaseProvider { &self, range: impl core::ops::RangeBounds, ) -> ProviderResult> { - let range = to_range(range); - let mut changesets = Vec::new(); - if self.cached_storage_settings().account_changesets_in_static_files && - let Some(highest) = self - .static_file_provider - .get_highest_static_file_block(StaticFileSegment::AccountChangeSets) - { - let static_end = range.end.min(highest + 1); - if range.start < static_end { - for block in range.start..static_end { - let block_changesets = self.account_block_changeset(block)?; - for changeset in block_changesets { - changesets.push((block, changeset)); - } - } - } + if self.cached_storage_settings().account_changesets_in_static_files { + self.static_file_provider.account_changesets_range(range) } else { - // Fetch from database for blocks not in static files - let mut cursor = self.tx.cursor_read::()?; - for entry in cursor.walk_range(range)? { - let (block_num, account_before) = entry?; - changesets.push((block_num, account_before)); - } + self.tx + .cursor_read::()? + .walk_range(to_range(range))? + .map(|r| r.map_err(Into::into)) + .collect() } - - Ok(changesets) } fn account_changeset_count(&self) -> ProviderResult {