[Local catalog] Retain unchanged variations during incremental sync #16323
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.

Merge after: #16322
Description
This PR fixes an issue with incremental sync
Previously, if variations changed, any unchanged variations for the same product would be deleted during an incremental sync.
This was because we also get the parent product back, and we used
insert(onConflict: .replace)– this triggered a cascade delete of variations (and other relations.)Then we inserted the changed variations, so any that were unchanged remained deleted.
To avoid these issues, we move to
save, which is GRDB’s upsert method.Additionally, with the fix deleted variations would not be deleted during an incremental sync. To improve that, we check the
variationIDsarray for which variations to leave in, after an incremental sync.Test Steps
Perform a full sync
Open POS, open variable product, confirm all the variations show up
Go to wp-admin, update the price of a single variation
Pull to Refresh to perform an incremental sync
Observe that all the variations are shown (including the updates.)
Delete a variation on the web
Pull to refresh
Observe that the variation is deleted.
RELEASE-NOTES.txtif necessary.