@@ -326,8 +326,9 @@ class CreateMappingVisitor {
326326// Visitor class for updating name mappings with schema changes
327327class UpdateMappingVisitor {
328328 public:
329- UpdateMappingVisitor (const std::map<int32_t , SchemaField>& updates,
330- const std::multimap<int32_t , int32_t >& adds)
329+ UpdateMappingVisitor (
330+ const std::unordered_map<int32_t , std::shared_ptr<SchemaField>>& updates,
331+ const std::multimap<int32_t , int32_t >& adds)
331332 : updates_(updates), adds_(adds) {}
332333
333334 Result<std::unique_ptr<MappedFields>> VisitMapping (const NameMapping& mapping) {
@@ -351,15 +352,15 @@ class UpdateMappingVisitor {
351352
352353 // Build update assignments map for removing reassigned names
353354 std::unordered_map<std::string, int32_t > update_assignments;
354- std::ranges::for_each (field_results, [&] (const auto & field) {
355+ for (const auto & field : field_results ) {
355356 if (field.field_id .has_value ()) {
356357 auto update_it = updates_.find (field.field_id .value ());
357358 if (update_it != updates_.end ()) {
358- update_assignments.emplace (std::string (update_it->second . name ()),
359+ update_assignments.emplace (std::string (update_it->second -> name ()),
359360 field.field_id .value ());
360361 }
361362 }
362- });
363+ }
363364
364365 // Remove reassigned names from all fields
365366 for (auto & field : field_results) {
@@ -375,7 +376,7 @@ class UpdateMappingVisitor {
375376 if (field.field_id .has_value ()) {
376377 auto update_it = updates_.find (field.field_id .value ());
377378 if (update_it != updates_.end ()) {
378- field_names.insert (std::string (update_it->second . name ()));
379+ field_names.insert (std::string (update_it->second -> name ()));
379380 }
380381 }
381382
@@ -408,7 +409,7 @@ class UpdateMappingVisitor {
408409 for (auto it = range.first ; it != range.second ; ++it) {
409410 auto update_it = updates_.find (it->second );
410411 if (update_it != updates_.end ()) {
411- fields_to_add.push_back (& update_it->second );
412+ fields_to_add.push_back (update_it->second . get () );
412413 }
413414 }
414415
@@ -471,7 +472,7 @@ class UpdateMappingVisitor {
471472 };
472473 }
473474
474- const std::map <int32_t , SchemaField>& updates_;
475+ const std::unordered_map <int32_t , std::shared_ptr< SchemaField> >& updates_;
475476 const std::multimap<int32_t , int32_t >& adds_;
476477};
477478
@@ -488,7 +489,8 @@ Result<std::unique_ptr<NameMapping>> CreateMapping(const Schema& schema) {
488489}
489490
490491Result<std::unique_ptr<NameMapping>> UpdateMapping (
491- const NameMapping& mapping, const std::map<int32_t , SchemaField>& updates,
492+ const NameMapping& mapping,
493+ const std::unordered_map<int32_t , std::shared_ptr<SchemaField>>& updates,
492494 const std::multimap<int32_t , int32_t >& adds) {
493495 UpdateMappingVisitor visitor (updates, adds);
494496 auto result = visitor.VisitMapping (mapping);
0 commit comments