diff --git a/tests/test_issues_pylib.py b/tests/test_issues_pylib.py
index 56009a824f9b3a3608f444c2206237c668f394eb..ec9e873c7b8cd2375570021672bb8eb2bc1ca5c3 100644
--- a/tests/test_issues_pylib.py
+++ b/tests/test_issues_pylib.py
@@ -90,3 +90,34 @@ def test_gitlab_com_108():
     tests = db.execute_query("FIND ENTITY test*", cache=False)
     tests.delete()
     print("deleted")
+
+
+def test_gitlab_com_120():
+    """Test that an update doesn't add unwanted subproperties.
+
+    See https://gitlab.com/linkahead/linkahead-pylib/-/issues/120.
+
+    """
+    rt1 = db.RecordType(name="TestType1")
+    rt2 = db.RecordType(name="TestType2")
+    prop = db.Property(name="TestProp", datatype=db.TEXT)
+    rt2.add_property(prop)
+    rt1.add_property(rt2)
+
+    # no subproperties in rt1's rt2 property:
+    assert len(rt1.get_property(rt2.name).properties) == 0
+
+    db.Container().extend([rt1, rt2, prop]).insert()
+
+    rt1_retrieved = db.RecordType(id=rt1.id).retrieve()
+    # Also no subproperties after retrieval
+    assert len(rt1_retrieved.get_property(rt2.name).properties) == 0
+
+    new_prop = db.Property(name="TestPropNew", datatype=db.INTEGER).insert()
+    rt1_retrieved.add_property(new_prop)
+    # Still no subproperties
+    assert len(rt1_retrieved.get_property(rt2.name).properties) == 0
+
+    rt1_retrieved.update()
+    # The update and addition of a new property must not change this, either.
+    assert len(rt1_retrieved.get_property(rt2.name).properties) == 0