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
[pixels-retina] TableUpdateData Loses Operation Order Across Delete, Insert, and Update #1398
I implemented a fix in Pixels-Sink to preserve the original operation order when sending CDC events to Retina.
The root cause is that a single TableUpdateData stores INSERT, DELETE, and UPDATE operations in separate repeated fields. Retina processes these fields in a fixed order, so mixing different operation types in one TableUpdateData loses their original ordering. For example, an INSERT followed by a DELETE could be executed as DELETE followed by INSERT.
The Sink now groups only adjacent rows with the same operation type into one TableUpdateData, while preserving the order of those groups:
I implemented a fix in Pixels-Sink to preserve the original operation order when sending CDC events to Retina.
The root cause is that a single TableUpdateData stores INSERT, DELETE, and UPDATE operations in separate repeated fields. Retina processes these fields in a fixed order, so mixing different operation types in one TableUpdateData loses their original ordering. For example, an INSERT followed by a DELETE could be executed as DELETE followed by INSERT.
The Sink now groups only adjacent rows with the same operation type into one TableUpdateData, while preserving the order of those groups:
Mixing different operation types in the same TableUpdateData does not necessarily cause incorrect results. The ordering only matters when multiple operations on the same key are included in the same TableUpdateData. So the fix is mainly needed to preserve the relative order of operations that target the same key, rather than requiring a strict global ordering across all CDC events.
Activity
AntiO2 commentedon Sep 3, 2026
I implemented a fix in Pixels-Sink to preserve the original operation order when sending CDC events to Retina.
The root cause is that a single
TableUpdateDatastores INSERT, DELETE, and UPDATE operations in separate repeated fields. Retina processes these fields in a fixed order, so mixing different operation types in oneTableUpdateDataloses their original ordering. For example, anINSERTfollowed by aDELETEcould be executed asDELETEfollowed byINSERT.The Sink now groups only adjacent rows with the same operation type into one
TableUpdateData, while preserving the order of those groups:is encoded as:
Implementation: pixelsdb/pixels-sink#20
gengdy1545 commentedon Sep 4, 2026
Mixing different operation types in the same
TableUpdateDatadoes not necessarily cause incorrect results. The ordering only matters when multiple operations on the same key are included in the sameTableUpdateData. So the fix is mainly needed to preserve the relative order of operations that target the same key, rather than requiring a strict global ordering across all CDC events.