edgedb-python icon indicating copy to clipboard operation
edgedb-python copied to clipboard

Syncing an object without a prop/link set alongside an object with it set fetches it

Open dnwpark opened this issue 4 months ago • 0 comments

Given a schema:

type A {
    val: int64;
};

the following code:


original = default.A(val=1)
self.client.save(original)

mirror_1 = self.client.query_required_single(
    default.A.select(val=False).limit(1)
)
mirror_2 = self.client.query_required_single(
    default.A.select(val=True).limit(1)
)

original.val = 2
self.client.save(original)
self.client.sync(mirror_1, mirror_2)

assert not hasattr(mirror_1, "val")  # fail

will fail the assertion

see #872 test test_model_sync_single_prop_06 and test_model_sync_multi_prop_08 for props see #881 test test_model_sync_single_link_04

Notably, multi-links will not fetch the values when synced with an object with it set, but will if that object had its set value changed:

original = default.A(val=1)
self.client.save(original)

mirror_1 = self.client.query_required_single(
    default.A.select(val=False).limit(1)
)
mirror_2 = self.client.query_required_single(
    default.A.select(val=True).limit(1)
)

mirror_2.targets = changed_targets_2
self.client.sync(mirror_1, mirror_2)

assert mirror_1.targets._items == []  # fail

see #881 test test_model_sync_multi_link_10

dnwpark avatar Aug 29 '25 02:08 dnwpark