diff --git a/src/middle-pgsql.cpp b/src/middle-pgsql.cpp index 7d6aae5ee..61388f3f6 100644 --- a/src/middle-pgsql.cpp +++ b/src/middle-pgsql.cpp @@ -839,9 +839,9 @@ middle_query_pgsql_t::rel_members_get(osmium::Relation const &rel, for (auto const &member : rel.members()) { if (member.type() == osmium::item_type::node && (types & osmium::osm_entity_bits::node)) { - osmium::builder::NodeBuilder builder{*buffer}; - builder.set_id(member.ref()); - ++members_found; + if (node_get(member.ref(), buffer)) { + ++members_found; + } } else if (member.type() == osmium::item_type::way && (types & osmium::osm_entity_bits::way) && res) { // Match the list of ways coming from postgres in a different order diff --git a/src/middle-ram.cpp b/src/middle-ram.cpp index e670fecf3..75547380d 100644 --- a/src/middle-ram.cpp +++ b/src/middle-ram.cpp @@ -334,26 +334,14 @@ middle_ram_t::rel_members_get(osmium::Relation const &rel, for (auto const &member : rel.members()) { auto const member_entity_type = osmium::osm_entity_bits::from_item_type(member.type()); + if ((member_entity_type & types) == 0) { continue; } switch (member.type()) { case osmium::item_type::node: - if (m_store_options.nodes) { - auto const offset = - m_object_index.nodes().get(member.ref()); - if (offset != ordered_index_t::not_found_value()) { - buffer->add_item(m_object_buffer.get(offset)); - buffer->commit(); - ++count; - } - } else { - { - osmium::builder::NodeBuilder builder{*buffer}; - builder.set_id(member.ref()); - } - buffer->commit(); + if (node_get(member.ref(), buffer)) { ++count; } break; @@ -379,15 +367,8 @@ middle_ram_t::rel_members_get(osmium::Relation const &rel, } break; default: // osmium::item_type::relation - if (m_store_options.relations) { - auto const offset = - m_object_index.relations().get(member.ref()); - if (offset != ordered_index_t::not_found_value()) { - buffer->add_item( - m_object_buffer.get(offset)); - buffer->commit(); - ++count; - } + if (relation_get(member.ref(), buffer)) { + ++count; } } } diff --git a/src/output-flex.cpp b/src/output-flex.cpp index 31980384c..0718be7f1 100644 --- a/src/output-flex.cpp +++ b/src/output-flex.cpp @@ -687,12 +687,6 @@ bool output_flex_t::relation_cache_t::add_members(middle_query_t const &middle) return false; } - for (auto &node : m_members_buffer.select()) { - if (!node.location().valid()) { - node.set_location(middle.get_node_location(node.id())); - } - } - for (auto &way : m_members_buffer.select()) { get_nodes(middle, &way); }