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)
+ }
+}