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
|
||||
// and relation_members
|
||||
e := element.OSMElem(elem.OSMElem)
|
||||
e.Id = -e.Id
|
||||
e.Id = d.RelId(e.Id)
|
||||
if err := d.delDb.DeleteElem(e); err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -5,4 +5,22 @@
|
|||
<tag k="amenity" v="cafe"/>
|
||||
</node>
|
||||
</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>
|
||||
|
|
|
@ -124,7 +124,7 @@
|
|||
<nd ref="31001"/>
|
||||
</way>
|
||||
|
||||
<!-- modify duplicate node -->
|
||||
<!-- modify duplicate node id -->
|
||||
<node id="31101" version="1" timestamp="2011-11-11T00:11:11Z" lat="47" lon="80">
|
||||
<tag k="amenity" v="cafe"/>
|
||||
</node>
|
||||
|
@ -144,4 +144,27 @@
|
|||
<tag k="type" v="multipolygon"/>
|
||||
<tag k="building" v="yes"/>
|
||||
</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>
|
||||
|
|
|
@ -183,3 +183,12 @@ func TestSingleTable_DuplicateIds2(t *testing.T) {
|
|||
})
|
||||
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