@@ -325,11 +325,24 @@ void output_pgsql_t::relation_add(osmium::Relation const &rel)
325325 * contain the change for that also. */
326326void output_pgsql_t::node_delete (osmid_t osm_id)
327327{
328- if (m_expire.from_result (m_tables[t_point]->get_wkb (osm_id)) != 0 ) {
328+ auto const results = m_tables[t_point]->get_wkb (osm_id);
329+ if (expire_from_result (&m_expire, results) != 0 ) {
329330 m_tables[t_point]->delete_row (osm_id);
330331 }
331332}
332333
334+ void output_pgsql_t::delete_from_output_and_expire (osmid_t id)
335+ {
336+ m_tables[t_roads]->delete_row (id);
337+
338+ for (auto table : {t_line, t_poly}) {
339+ auto const results = m_tables[table]->get_wkb (id);
340+ if (expire_from_result (&m_expire, results) != 0 ) {
341+ m_tables[table]->delete_row (id);
342+ }
343+ }
344+ }
345+
333346/* Seperated out because we use it elsewhere */
334347void output_pgsql_t::pgsql_delete_way_from_output (osmid_t osm_id)
335348{
@@ -342,13 +355,7 @@ void output_pgsql_t::pgsql_delete_way_from_output(osmid_t osm_id)
342355 return ;
343356 }
344357
345- m_tables[t_roads]->delete_row (osm_id);
346- if (m_expire.from_result (m_tables[t_line]->get_wkb (osm_id)) != 0 ) {
347- m_tables[t_line]->delete_row (osm_id);
348- }
349- if (m_expire.from_result (m_tables[t_poly]->get_wkb (osm_id)) != 0 ) {
350- m_tables[t_poly]->delete_row (osm_id);
351- }
358+ delete_from_output_and_expire (osm_id);
352359}
353360
354361void output_pgsql_t::way_delete (osmid_t osm_id)
@@ -359,13 +366,7 @@ void output_pgsql_t::way_delete(osmid_t osm_id)
359366/* Relations are identified by using negative IDs */
360367void output_pgsql_t::pgsql_delete_relation_from_output (osmid_t osm_id)
361368{
362- m_tables[t_roads]->delete_row (-osm_id);
363- if (m_expire.from_result (m_tables[t_line]->get_wkb (-osm_id)) != 0 ) {
364- m_tables[t_line]->delete_row (-osm_id);
365- }
366- if (m_expire.from_result (m_tables[t_poly]->get_wkb (-osm_id)) != 0 ) {
367- m_tables[t_poly]->delete_row (-osm_id);
368- }
369+ delete_from_output_and_expire (-osm_id);
369370}
370371
371372void output_pgsql_t::relation_delete (osmid_t osm_id)
0 commit comments