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]