JingsongLi commented on code in PR #9473:
URL: https://github.com/apache/paimon/pull/9473#discussion_r3889039633


##########
paimon-core/src/main/java/org/apache/paimon/operation/commit/RowTrackingCommitUtils.java:
##########
@@ -95,7 +111,7 @@ private static long assignRowTrackingMeta(
                 long rowCount = entry.file().rowCount();
                 if (isBlobFile(entry.file().fileName())) {
                     String blobFieldName = entry.file().writeCols().get(0);
-                    long blobStart = blobStarts.getOrDefault(blobFieldName, 
blobStartDefault);
+                    long blobStart = blobStarts.getOrDefault(blobFieldName, 
firstRowIdStart);

Review Comment:
   [P1] This two-pass assignment loses the normal-range base of each 
CommitMessage. If a normal-only partial writer is followed in the same commit 
by a normal+blob writer, the first blob cursor still defaults to the 
commit-wide firstRowIdStart, so the blob from the second writer is assigned to 
the first logical row. I reproduced this as payloads [belongs-to-row-2, null] 
instead of [null, belongs-to-row-2]. Please preserve the writer/message 
boundary when allocating sidecar row IDs, or carry an explicit relative row 
offset. The mirrored Python implementation in file_store_commit.py has the same 
issue.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to