anoopj commented on code in PR #16408:
URL: https://github.com/apache/iceberg/pull/16408#discussion_r3268345627
##########
core/src/main/java/org/apache/iceberg/TrackingStruct.java:
##########
@@ -268,67 +286,61 @@ public String toString() {
}
static class Builder {
- private EntryStatus status = null;
- private Long snapshotId = null;
- private Long dataSequenceNumber = null;
- private Long fileSequenceNumber = null;
- private Long dvSnapshotId = null;
- private Long firstRowId = null;
- private byte[] deletedPositions = null;
- private byte[] replacedPositions = null;
-
- Builder status(EntryStatus entryStatus) {
- this.status = entryStatus;
- return this;
- }
-
- Builder snapshotId(Long id) {
- this.snapshotId = id;
- return this;
+ private final EntryStatus status;
+ private final Long snapshotId;
+ private final Long dataSequenceNumber;
+ private final Long fileSequenceNumber;
+ private final Long firstRowId;
+ private Long dvSnapshotId;
+ private byte[] deletedPositions;
+ private byte[] replacedPositions;
+
+ private Builder(EntryStatus status, long snapshotId) {
+ this.status = status;
+ this.snapshotId = snapshotId;
+ this.dataSequenceNumber = null;
+ this.fileSequenceNumber = null;
+ this.firstRowId = null;
}
- Builder dataSequenceNumber(Long sequenceNumber) {
- this.dataSequenceNumber = sequenceNumber;
- return this;
+ private Builder(EntryStatus status, Tracking source, Long snapshotId) {
+ this.status = status;
+ this.snapshotId = snapshotId;
+ this.dataSequenceNumber = source.dataSequenceNumber();
+ this.fileSequenceNumber = source.fileSequenceNumber();
+ this.firstRowId = source.firstRowId();
+ this.dvSnapshotId = source.dvSnapshotId();
+ ByteBuffer sourceDeleted = source.deletedPositions();
+ this.deletedPositions = sourceDeleted != null ?
ByteBuffers.toByteArray(sourceDeleted) : null;
+ ByteBuffer sourceReplaced = source.replacedPositions();
+ this.replacedPositions =
+ sourceReplaced != null ? ByteBuffers.toByteArray(sourceReplaced) :
null;
}
- Builder fileSequenceNumber(Long sequenceNumber) {
- this.fileSequenceNumber = sequenceNumber;
- return this;
- }
-
- Builder dvSnapshotId(Long id) {
+ Builder dvSnapshotId(long id) {
+ Preconditions.checkState(
+ status == EntryStatus.ADDED,
+ "Cannot set dv snapshot ID on a %s entry; preserved from existing
tracking",
+ status);
this.dvSnapshotId = id;
return this;
}
- Builder firstRowId(Long rowId) {
- this.firstRowId = rowId;
- return this;
- }
-
Builder deletedPositions(ByteBuffer positions) {
+ Preconditions.checkState(
+ status == EntryStatus.ADDED, "Cannot set deleted positions on a %s
entry", status);
this.deletedPositions = positions != null ?
ByteBuffers.toByteArray(positions) : null;
return this;
}
- Builder deletedPositions(byte[] positions) {
- this.deletedPositions = positions;
- return this;
- }
-
Builder replacedPositions(ByteBuffer positions) {
+ Preconditions.checkState(
+ status == EntryStatus.ADDED, "Cannot set replaced positions on a %s
entry", status);
Review Comment:
This will need to change to `MODIFIED` status when we introduce it. (decided
yesterday at the v4 AMT community sync). Need to be done as a separate PR.
--
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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]