fix delete of relations with single_id_space
parent
c0333738f3
commit
8949fe28c4
|
@ -86,7 +86,7 @@ func (d *Deleter) deleteRelation(id int64, deleteRefs bool, deleteMembers bool)
|
||||||
// delete from all tables to handle relations with tags from members
|
// delete from all tables to handle relations with tags from members
|
||||||
// and relation_members
|
// and relation_members
|
||||||
e := element.OSMElem(elem.OSMElem)
|
e := element.OSMElem(elem.OSMElem)
|
||||||
e.Id = -e.Id
|
e.Id = d.RelId(e.Id)
|
||||||
if err := d.delDb.DeleteElem(e); err != nil {
|
if err := d.delDb.DeleteElem(e); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,4 +5,22 @@
|
||||||
<tag k="amenity" v="cafe"/>
|
<tag k="amenity" v="cafe"/>
|
||||||
</node>
|
</node>
|
||||||
</modify>
|
</modify>
|
||||||
|
|
||||||
|
<modify>
|
||||||
|
<relation id="31101" version="1" timestamp="2011-11-11T00:11:11Z">
|
||||||
|
<member type="way" ref="31002" role="outer"/>
|
||||||
|
<member type="way" ref="31003" role="outer"/>
|
||||||
|
<tag k="type" v="multipolygon"/>
|
||||||
|
<tag k="building" v="yes"/>
|
||||||
|
</relation>
|
||||||
|
</modify>
|
||||||
|
|
||||||
|
<!-- modify relation does create duplicate polygon -->
|
||||||
|
<modify>
|
||||||
|
<relation id="32901" version="1" timestamp="2011-11-11T00:11:11Z">
|
||||||
|
<member type="way" ref="32101" role="outer"/>
|
||||||
|
<tag k="type" v="multipolygon"/>
|
||||||
|
<tag k="building" v="office"/>
|
||||||
|
</relation>
|
||||||
|
</modify>
|
||||||
</osmChange>
|
</osmChange>
|
||||||
|
|
|
@ -124,7 +124,7 @@
|
||||||
<nd ref="31001"/>
|
<nd ref="31001"/>
|
||||||
</way>
|
</way>
|
||||||
|
|
||||||
<!-- modify duplicate node -->
|
<!-- modify duplicate node id -->
|
||||||
<node id="31101" version="1" timestamp="2011-11-11T00:11:11Z" lat="47" lon="80">
|
<node id="31101" version="1" timestamp="2011-11-11T00:11:11Z" lat="47" lon="80">
|
||||||
<tag k="amenity" v="cafe"/>
|
<tag k="amenity" v="cafe"/>
|
||||||
</node>
|
</node>
|
||||||
|
@ -144,4 +144,27 @@
|
||||||
<tag k="type" v="multipolygon"/>
|
<tag k="type" v="multipolygon"/>
|
||||||
<tag k="building" v="yes"/>
|
<tag k="building" v="yes"/>
|
||||||
</relation>
|
</relation>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- modify relation does create duplicate polygon -->
|
||||||
|
<node id="32001" version="1" timestamp="2011-11-11T00:11:11Z" lat="47" lon="90"/>
|
||||||
|
<node id="32002" version="1" timestamp="2011-11-11T00:11:11Z" lat="47" lon="92"/>
|
||||||
|
<node id="32003" version="1" timestamp="2011-11-11T00:11:11Z" lat="49" lon="92"/>
|
||||||
|
<node id="32004" version="1" timestamp="2011-11-11T00:11:11Z" lat="49" lon="90"/>
|
||||||
|
|
||||||
|
<way id="32101" version="1" timestamp="2011-11-11T00:11:11Z">
|
||||||
|
<nd ref="32001"/>
|
||||||
|
<nd ref="32002"/>
|
||||||
|
<nd ref="32003"/>
|
||||||
|
<nd ref="32004"/>
|
||||||
|
<nd ref="32001"/>
|
||||||
|
<tag k="highway" v="secondary"/>
|
||||||
|
<tag k="landuse" v="park"/>
|
||||||
|
</way>
|
||||||
|
|
||||||
|
<relation id="32901" version="1" timestamp="2011-11-11T00:11:11Z">
|
||||||
|
<member type="way" ref="32101" role="outer"/>
|
||||||
|
<tag k="type" v="multipolygon"/>
|
||||||
|
<tag k="building" v="yes"/>
|
||||||
|
</relation>
|
||||||
</osm>
|
</osm>
|
||||||
|
|
|
@ -183,3 +183,12 @@ func TestSingleTable_DuplicateIds2(t *testing.T) {
|
||||||
})
|
})
|
||||||
assertGeomType(t, checkElem{"osm_all", RelOffset - 31101, "*", nil}, "Polygon")
|
assertGeomType(t, checkElem{"osm_all", RelOffset - 31101, "*", nil}, "Polygon")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestSingleTable_ModifiedRelation2(t *testing.T) {
|
||||||
|
// Modified relation is not inserted twice. Check for #88
|
||||||
|
|
||||||
|
rows := ts.queryRowsTags(t, "osm_all", RelOffset-32901)
|
||||||
|
if len(rows) != 1 {
|
||||||
|
t.Errorf("found duplicate row: %v", rows)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue