2222#include < algorithm>
2323#include < chrono>
2424#include < format>
25+ #include < ranges>
2526#include < string>
2627
2728#include < nlohmann/json.hpp>
@@ -184,51 +185,45 @@ Result<TableMetadataCache::SnapshotsMapRef> TableMetadataCache::GetSnapshotsById
184185
185186Result<TableMetadataCache::SchemasMap> TableMetadataCache::InitSchemasMap (
186187 const TableMetadata* metadata) {
187- SchemasMap schemas_map;
188- schemas_map.reserve (metadata->schemas .size ());
189- for (const auto & schema : metadata->schemas ) {
190- if (schema->schema_id ()) {
191- schemas_map.emplace (schema->schema_id ().value (), schema);
192- }
193- }
194- return schemas_map;
188+ return metadata->schemas | std::views::filter ([](const auto & schema) {
189+ return schema->schema_id ().has_value ();
190+ }) |
191+ std::views::transform ([](const auto & schema) {
192+ return std::make_pair (schema->schema_id ().value (), schema);
193+ }) |
194+ std::ranges::to<SchemasMap>();
195195}
196196
197197Result<TableMetadataCache::PartitionSpecsMap> TableMetadataCache::InitPartitionSpecsMap (
198198 const TableMetadata* metadata) {
199- PartitionSpecsMap partition_specs_map;
200- partition_specs_map.reserve (metadata->partition_specs .size ());
201- for (const auto & spec : metadata->partition_specs ) {
202- partition_specs_map.emplace (spec->spec_id (), spec);
203- }
204- return partition_specs_map;
199+ return metadata->partition_specs | std::views::transform ([](const auto & spec) {
200+ return std::make_pair (spec->spec_id (), spec);
201+ }) |
202+ std::ranges::to<PartitionSpecsMap>();
205203}
206204
207205Result<TableMetadataCache::SortOrdersMap> TableMetadataCache::InitSortOrdersMap (
208206 const TableMetadata* metadata) {
209- SortOrdersMap sort_orders_map;
210- sort_orders_map.reserve (metadata->sort_orders .size ());
211- for (const auto & order : metadata->sort_orders ) {
212- sort_orders_map.emplace (order->order_id (), order);
213- }
214- return sort_orders_map;
207+ return metadata->sort_orders | std::views::transform ([](const auto & order) {
208+ return std::make_pair (order->order_id (), order);
209+ }) |
210+ std::ranges::to<SortOrdersMap>();
215211}
216212
217213Result<TableMetadataCache::SnapshotsMap> TableMetadataCache::InitSnapshotMap (
218214 const TableMetadata* metadata) {
219- SnapshotsMap snapshots_map;
220- snapshots_map.reserve (metadata->snapshots .size ());
221- for (const auto & snapshot : metadata->snapshots ) {
222- snapshots_map.emplace (snapshot->snapshot_id , snapshot);
223- }
224- return snapshots_map;
215+ return metadata->snapshots | std::views::transform ([](const auto & snapshot) {
216+ return std::make_pair (snapshot->snapshot_id , snapshot);
217+ }) |
218+ std::ranges::to<SnapshotsMap>();
225219}
226220
227221// TableMetadataUtil implementation
228222
229223Result<MetadataFileCodecType> TableMetadataUtil::CodecFromFileName (
230224 std::string_view file_name) {
231- if (file_name.find (" .metadata.json" ) == std::string::npos) {
225+ auto pos = file_name.find_last_of (" .metadata.json" );
226+ if (pos == std::string::npos) {
232227 return InvalidArgument (" {} is not a valid metadata file" , file_name);
233228 }
234229
@@ -237,8 +232,7 @@ Result<MetadataFileCodecType> TableMetadataUtil::CodecFromFileName(
237232 return MetadataFileCodecType::kGzip ;
238233 }
239234
240- std::string_view file_name_without_suffix =
241- file_name.substr (0 , file_name.find_last_of (" .metadata.json" ));
235+ std::string_view file_name_without_suffix = file_name.substr (0 , pos);
242236 if (file_name_without_suffix.ends_with (" .gz" )) {
243237 return MetadataFileCodecType::kGzip ;
244238 }
0 commit comments