Update a node


When updating a node, do the things that are already equal to the update values are also getting updated (a write operation occurs)?

Example: assuming I have the type Cat, and it has a name and eye color predicates. I inserted one cat to my DB with the name Schrodinger and eye color gray and got its xid 0x1.
What will happen if I send the following request:

mutate updateCat(filter: {id: "0x1"}){
    set {
        name: Schrodinger,
        eyeColor: blue

eye colour will be updated to gray. name will be set to "Schrodinger"

Even if it is already Schrodinger?
Can you estimate the cost of an update where most values are the same, and few aren’t?

I think this is the job for a client side application. I know from experience that MySQL will ignore setting values that have the same value, but I have to ask, what is the purpose for doing this from a client side?

Are you trying to update a piece of data you have not read? - Poor UX, IMHO.

Are you trying to do a sync between systems? - Acceptable use case, but trying to reduce costs by adding in a read step before a set may do the opposite and in turn increase costs instead of decrease.


I am trying to do something like the push git operation, which sends a branch with all of its data and not just the diffs from the last push.
I wanted to figure out if it is worth trying to figure out the diffs first and then send only the updates or send everything at once even though parts of the data won’t update

The system flow is:
The client make changes to his project when ready, using an SDK he sends a push notification to the server the server gets the request, checks for permissions and then performs the update by sending a request to Slash