You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit b25ba46
Browse filesBrowse the repository at this point in the historyBrowse files
[server] Skip unchanged upserts for primary-key tables (#4439)
* [server] Support update_if_changed merge engine for primary-key tables
* [common] Use locale-independent merge engine parsing
* [server] Add opt-in skip-unchanged upserts
Replace the update_if_changed merge engine with table.upsert.skip-unchanged. Compare complete candidate rows in the KV write path using schema-aware logical equality and reject incompatible WAL, TTL, merge engine, and overwrite modes.
Cover equality and configuration edge cases, update the Flink sink and documentation, and keep the implementation focused on the write path.
* [server] Refine skip-unchanged upsert comparison
Compare complete DataType definitions before treating rows as unchanged. Clarify the existing FULL-image lookup cost and describe skipped state writes without implying that upserts are rejected.
* [docs] Clarify skip-unchanged upsert behavior
* [server] Compare unchanged upserts by serialized bytes
Compare the candidate BinaryValue schema ID and serialized row bytes with the stored value without materializing row fields. Cover schema changes, representation differences, batch duplicates, and overwrite rejection.
Move the option guide into the primary key table documentation and link the option reference to its section.
"For a primary key table using the default merge behavior, skip the state write and changelog when the complete candidate row has the same schema ID and serialized row bytes as the stored row. "
2265
+
+ "This also applies to partial updates and partial deletes. "
2266
+
+ "It requires FULL changelog image mode and cannot be combined with row-level KV TTL or a merge engine. As with other tables without a merge engine, OVERWRITE writes are unsupported. "
2267
+
+ "FULL changelog image mode already reads the previous value for every upsert. Comparing it with the complete candidate row adds comparison costs.");
0 commit comments