diff --git a/diff/deleter.go b/diff/deleter.go index bf60f1e..f69f4ea 100644 --- a/diff/deleter.go +++ b/diff/deleter.go @@ -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 } diff --git a/test/single_table.osc b/test/single_table.osc index 3f78162..c349766 100644 --- a/test/single_table.osc +++ b/test/single_table.osc @@ -5,4 +5,22 @@ + + + + + + + + + + + + + + + + + + diff --git a/test/single_table.osm b/test/single_table.osm index 4fefd24..fe9138b 100644 --- a/test/single_table.osm +++ b/test/single_table.osm @@ -124,7 +124,7 @@ - + @@ -144,4 +144,27 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/test/single_table_test.go b/test/single_table_test.go index cba5900..7c02bb1 100644 --- a/test/single_table_test.go +++ b/test/single_table_test.go @@ -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) + } +}