This is an automated email from the ASF dual-hosted git repository.
zeroshade pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg-go.git
The following commit(s) were added to refs/heads/main by this push:
new 28cb44a91 refactor(manifest)!: use explicit sequence number API names
(#2315)
28cb44a91 is described below
commit 28cb44a91c728a1b9a2c7b5365d333c76292a6a8
Author: Minh Vu <[email protected]>
AuthorDate: Mon Oct 26 19:55:12 2026 +0100
refactor(manifest)!: use explicit sequence number API names (#2315)
* refactor(manifest)!: use explicit sequence number API names
Signed-off-by: Minh Vu <[email protected]>
* chore: sync release notes with main to resolve conflicts
---------
Signed-off-by: Minh Vu <[email protected]>
Co-authored-by: Matt Topol <[email protected]>
---
catalog/rest/scan_planning_parity_test.go | 4 +-
manifest.go | 41 +++++++------
manifest_list_version_test.go | 24 ++++----
manifest_projection_test.go | 4 +-
manifest_test.go | 68 +++++++++++-----------
table/all_manifests_internal_test.go | 2 +-
table/compaction/eq_delete_collect.go | 4 +-
table/compaction/eq_delete_decision.go | 8 +--
table/compaction/eq_delete_decision_test.go | 2 +-
table/conflict_validation_bench_test.go | 2 +-
table/conflict_validation_test.go | 4 +-
table/dv_rewrite_test.go | 12 ++--
table/equality_delete_index.go | 10 ++--
table/equality_delete_range_index.go | 2 +-
table/equality_delete_range_index_test.go | 12 ++--
table/equality_delete_sequence_guard_test.go | 4 +-
table/incremental_append_scan.go | 2 +-
table/incremental_changelog_scan.go | 2 +-
table/inspect_entries.go | 4 +-
table/inspect_internal_test.go | 30 +++++-----
table/maintenance/manifest_test_helpers_test.go | 4 +-
table/partition_conflict_test.go | 2 +-
table/partition_residual_read_test.go | 2 +-
table/partition_residual_test.go | 2 +-
table/pos_delete_collect.go | 4 +-
table/positional_delete_index.go | 10 ++--
table/positional_delete_index_bench_test.go | 4 +-
table/positional_delete_index_test.go | 4 +-
table/replace_files_test.go | 28 ++++-----
table/rewrite_data_files_test.go | 2 +-
table/rewrite_files_test.go | 6 +-
.../scan_task_finalization_planfiles_bench_test.go | 4 +-
table/scanner.go | 12 ++--
table/scanner_empty_manifest_bench_test.go | 2 +-
table/scanner_internal_test.go | 24 ++++----
table/scanner_manifest_projection_test.go | 2 +-
table/scanner_plan_tasks_bench_test.go | 4 +-
table/scanner_row_limit_bench_test.go | 4 +-
table/snapshot_producers.go | 4 +-
table/snapshot_producers_test.go | 4 +-
table/table_test.go | 2 +-
table/transaction.go | 8 +--
table/updates_test.go | 4 +-
43 files changed, 193 insertions(+), 190 deletions(-)
diff --git a/catalog/rest/scan_planning_parity_test.go
b/catalog/rest/scan_planning_parity_test.go
index 4a640a243..13281c388 100644
--- a/catalog/rest/scan_planning_parity_test.go
+++ b/catalog/rest/scan_planning_parity_test.go
@@ -198,7 +198,7 @@ func newPlanningParityTable(t *testing.T) (table.Metadata,
*iceio.MemFS) {
b.SplitOffsets([]int64{4, 40, 70})
b.LowerBoundValues(map[int][]byte{2:
lo}).UpperBoundValues(map[int][]byte{2: hi})
b.ValueCounts(map[int]int64{1: 10, 2:
10}).NullValueCounts(map[int]int64{1: 0, 2: 0})
- entries = append(entries,
iceberg.NewManifestEntryBuilder(iceberg.EntryStatusADDED, new(int64(10)),
b.Build()).SequenceNum(1).Build())
+ entries = append(entries,
iceberg.NewManifestEntryBuilder(iceberg.EntryStatusADDED, new(int64(10)),
b.Build()).DataSequenceNumber(1).Build())
}
var data bytes.Buffer
mf, err := iceberg.WriteManifest("mem://parity/data.avro", &data, 2,
spec, schema, 10, entries)
@@ -218,7 +218,7 @@ func newPlanningParityTable(t *testing.T) (table.Metadata,
*iceio.MemFS) {
if content == iceberg.EntryContentEqDeletes {
b.EqualityFieldIDs([]int{2})
}
- require.NoError(t,
writer.Add(iceberg.NewManifestEntryBuilder(iceberg.EntryStatusADDED,
new(int64(20)), b.Build()).SequenceNum(2).Build()))
+ require.NoError(t,
writer.Add(iceberg.NewManifestEntryBuilder(iceberg.EntryStatusADDED,
new(int64(20)), b.Build()).DataSequenceNumber(2).Build()))
}
}
require.NoError(t, writer.Close())
diff --git a/manifest.go b/manifest.go
index d9ca43c6a..029de6eee 100644
--- a/manifest.go
+++ b/manifest.go
@@ -96,7 +96,8 @@ func NewManifestBuilder(version int, path string, length
int64, partitionSpecID
}
}
-func (b *ManifestBuilder) SequenceNum(num, minSeqNum int64) *ManifestBuilder {
+// SequenceNumber sets the manifest sequence number and minimum live data
sequence number.
+func (b *ManifestBuilder) SequenceNumber(num, minSeqNum int64)
*ManifestBuilder {
b.m.SeqNumber, b.m.MinSeqNumber = num, minSeqNum
return b
@@ -385,8 +386,8 @@ func (m *manifestFile) DeletedDataFiles() int32 {
return m.DeletedFiles
func (m *manifestFile) AddedRows() int64 { return
m.AddedRowsCount }
func (m *manifestFile) ExistingRows() int64 { return
m.ExistingRowsCount }
func (m *manifestFile) DeletedRows() int64 { return
m.DeletedRowsCount }
-func (m *manifestFile) SequenceNum() int64 { return m.SeqNumber }
-func (m *manifestFile) MinSequenceNum() int64 { return
m.MinSeqNumber }
+func (m *manifestFile) SequenceNumber() int64 { return m.SeqNumber }
+func (m *manifestFile) MinSequenceNumber() int64 { return
m.MinSeqNumber }
func (m *manifestFile) KeyMetadata() []byte {
if m.Key == nil {
return nil
@@ -548,12 +549,12 @@ type ManifestFile interface {
// DeletedRows returns the number of rows in all files of the manifest
// which have status EntryStatusDELETED.
DeletedRows() int64
- // SequenceNum returns the sequence number when this manifest was
+ // SequenceNumber returns the sequence number when this manifest was
// added to the table. Will be 0 for v1 manifest lists.
- SequenceNum() int64
- // MinSequenceNum is the minimum data sequence number of all live data
+ SequenceNumber() int64
+ // MinSequenceNumber is the minimum data sequence number of all live
data
// or delete files in the manifest. Will be 0 for v1 manifest lists.
- MinSequenceNum() int64
+ MinSequenceNumber() int64
// KeyMetadata returns implementation-specific key metadata for
encryption
// if it exists in the manifest list.
KeyMetadata() []byte
@@ -2010,7 +2011,7 @@ func (w *ManifestWriter) addEntry(entry *manifestEntry)
error {
}
if status == EntryStatusADDED || status == EntryStatusEXISTING {
- if seq := entry.SequenceNum(); seq >= 0 && (w.minSeqNum < 0 ||
seq < w.minSeqNum) {
+ if seq := entry.DataSequenceNumber(); seq >= 0 && (w.minSeqNum
< 0 || seq < w.minSeqNum) {
w.minSeqNum = seq
}
}
@@ -2025,14 +2026,14 @@ func (w *ManifestWriter) Add(entry ManifestEntry) error
{
}
func (w *ManifestWriter) Delete(entry ManifestEntry) error {
- w.reusedEntry.wrap(EntryStatusDELETED, &w.snapshotID,
entry.(*manifestEntry).SeqNum, entry.FileSequenceNum(), entry.DataFile())
+ w.reusedEntry.wrap(EntryStatusDELETED, &w.snapshotID,
entry.(*manifestEntry).SeqNum, entry.FileSequenceNumber(), entry.DataFile())
return w.addEntry(&w.reusedEntry)
}
func (w *ManifestWriter) Existing(entry ManifestEntry) error {
snapshotID := entry.SnapshotID()
- w.reusedEntry.wrap(EntryStatusEXISTING, &snapshotID,
entry.(*manifestEntry).SeqNum, entry.FileSequenceNum(), entry.DataFile())
+ w.reusedEntry.wrap(EntryStatusEXISTING, &snapshotID,
entry.(*manifestEntry).SeqNum, entry.FileSequenceNumber(), entry.DataFile())
return w.addEntry(&w.reusedEntry)
}
@@ -2966,13 +2967,15 @@ func NewManifestEntryBuilder(status
ManifestEntryStatus, snapshotID *int64, data
}
}
-func (b *ManifestEntryBuilder) SequenceNum(num int64) *ManifestEntryBuilder {
+// DataSequenceNumber sets the data sequence number of the file.
+func (b *ManifestEntryBuilder) DataSequenceNumber(num int64)
*ManifestEntryBuilder {
b.m.SeqNum = &num
return b
}
-func (b *ManifestEntryBuilder) FileSequenceNum(num int64)
*ManifestEntryBuilder {
+// FileSequenceNumber sets the file sequence number of the entry.
+func (b *ManifestEntryBuilder) FileSequenceNumber(num int64)
*ManifestEntryBuilder {
b.m.FileSeqNum = &num
return b
@@ -2999,7 +3002,7 @@ func (m *manifestEntry) SnapshotID() int64 {
return *m.Snapshot
}
-func (m *manifestEntry) SequenceNum() int64 {
+func (m *manifestEntry) DataSequenceNumber() int64 {
if m.SeqNum == nil {
return -1
}
@@ -3007,7 +3010,7 @@ func (m *manifestEntry) SequenceNum() int64 {
return *m.SeqNum
}
-func (m *manifestEntry) FileSequenceNum() *int64 {
+func (m *manifestEntry) FileSequenceNumber() *int64 {
if m.FileSeqNum == nil {
return nil
}
@@ -3025,7 +3028,7 @@ func (m *manifestEntry) inherit(manifest ManifestFile) {
m.Snapshot = &snap
}
- manifestSequenceNum := manifest.SequenceNum()
+ manifestSequenceNum := manifest.SequenceNumber()
if manifestSequenceNum != -1 {
if m.SeqNum == nil && (manifestSequenceNum ==
initialSequenceNumber || m.EntryStatus == EntryStatusADDED) {
m.SeqNum = &manifestSequenceNum
@@ -3344,14 +3347,14 @@ type ManifestEntry interface {
// SnapshotID is the id where the file was added, or deleted,
// if null it is inherited from the manifest list.
SnapshotID() int64
- // SequenceNum returns the data sequence number of the file.
+ // DataSequenceNumber returns the data sequence number of the file.
// If it was null and the status is EntryStatusADDED then it
// is inherited from the manifest list.
- SequenceNum() int64
- // FileSequenceNum returns the file sequence number indicating
+ DataSequenceNumber() int64
+ // FileSequenceNumber returns the file sequence number indicating
// when the file was added. If it was null and the status is
// EntryStatusADDED then it is inherited from the manifest list.
- FileSequenceNum() *int64
+ FileSequenceNumber() *int64
// DataFile provides the information about the data file indicated
// by this manifest entry.
DataFile() DataFile
diff --git a/manifest_list_version_test.go b/manifest_list_version_test.go
index c7870d791..cc45a756c 100644
--- a/manifest_list_version_test.go
+++ b/manifest_list_version_test.go
@@ -126,7 +126,7 @@ func TestReadManifestListInfersVersionWhenKeyAbsent(t
*testing.T) {
t.Run("v2", func(t *testing.T) {
deletes := NewManifestBuilder(2,
"s3://bucket/metadata/deletes-m0.avro", 100, 0, 42).
Content(ManifestContentDeletes).
- SequenceNum(5, 3).
+ SequenceNumber(5, 3).
Build()
var buf bytes.Buffer
@@ -139,19 +139,19 @@ func TestReadManifestListInfersVersionWhenKeyAbsent(t
*testing.T) {
assert.Equal(t, 2, got[0].Version())
assert.Equal(t, ManifestContentDeletes,
got[0].ManifestContent())
- assert.Equal(t, int64(5), got[0].SequenceNum())
- assert.Equal(t, int64(3), got[0].MinSequenceNum())
+ assert.Equal(t, int64(5), got[0].SequenceNumber())
+ assert.Equal(t, int64(3), got[0].MinSequenceNumber())
assert.Equal(t, int64(42), got[0].SnapshotID())
})
t.Run("v3", func(t *testing.T) {
data := NewManifestBuilder(3,
"s3://bucket/metadata/data-m0.avro", 100, 0, 42).
AddedRows(10).
- SequenceNum(5, 5).
+ SequenceNumber(5, 5).
Build()
deletes := NewManifestBuilder(3,
"s3://bucket/metadata/deletes-m1.avro", 100, 0, 42).
Content(ManifestContentDeletes).
- SequenceNum(5, 3).
+ SequenceNumber(5, 3).
Build()
var buf bytes.Buffer
@@ -168,8 +168,8 @@ func TestReadManifestListInfersVersionWhenKeyAbsent(t
*testing.T) {
assert.Equal(t, int64(100), *got[0].FirstRowID())
assert.Equal(t, ManifestContentDeletes,
got[1].ManifestContent())
- assert.Equal(t, int64(5), got[1].SequenceNum())
- assert.Equal(t, int64(3), got[1].MinSequenceNum())
+ assert.Equal(t, int64(5), got[1].SequenceNumber())
+ assert.Equal(t, int64(3), got[1].MinSequenceNumber())
assert.Nil(t, got[1].FirstRowID())
})
}
@@ -212,15 +212,15 @@ func TestReadManifestListDuckDBFixture(t *testing.T) {
assert.Equal(t, 3, got[0].Version())
assert.Equal(t, ManifestContentData, got[0].ManifestContent())
- assert.Equal(t, int64(1), got[0].SequenceNum())
- assert.Equal(t, int64(1), got[0].MinSequenceNum())
+ assert.Equal(t, int64(1), got[0].SequenceNumber())
+ assert.Equal(t, int64(1), got[0].MinSequenceNumber())
require.NotNil(t, got[0].FirstRowID())
assert.Equal(t, int64(0), *got[0].FirstRowID())
assert.Equal(t, 3, got[1].Version())
assert.Equal(t, ManifestContentDeletes, got[1].ManifestContent())
- assert.Equal(t, int64(2), got[1].SequenceNum())
- assert.Equal(t, int64(2), got[1].MinSequenceNum())
+ assert.Equal(t, int64(2), got[1].SequenceNumber())
+ assert.Equal(t, int64(2), got[1].MinSequenceNumber())
}
// TestReadManifestListKeyContradictsSchema: a "format-version" key claiming
@@ -240,7 +240,7 @@ func TestReadManifestListKeyContradictsSchema(t *testing.T)
{
for _, tc := range cases {
mf := NewManifestBuilder(tc.writeVersion,
"s3://bucket/metadata/deletes-m0.avro", 100, 0, 42).
Content(ManifestContentDeletes).
- SequenceNum(5, 3).
+ SequenceNumber(5, 3).
Build()
var buf bytes.Buffer
diff --git a/manifest_projection_test.go b/manifest_projection_test.go
index 42e8f9a2d..3195f6a61 100644
--- a/manifest_projection_test.go
+++ b/manifest_projection_test.go
@@ -149,8 +149,8 @@ func TestManifestEntryProjectionDropsTransientStats(t
*testing.T) {
assert.Equal(t, entry.Status(), projected.Status())
assert.Equal(t, entry.SnapshotID(), projected.SnapshotID())
- assert.Equal(t, entry.SequenceNum(), projected.SequenceNum())
- assert.Equal(t, entry.FileSequenceNum(), projected.FileSequenceNum())
+ assert.Equal(t, entry.DataSequenceNumber(),
projected.DataSequenceNumber())
+ assert.Equal(t, entry.FileSequenceNumber(),
projected.FileSequenceNumber())
assert.Equal(t, "data.parquet", projected.DataFile().FilePath())
assert.Equal(t, int64(3), projected.DataFile().Count())
assert.Equal(t, int64(128), projected.DataFile().FileSizeBytes())
diff --git a/manifest_test.go b/manifest_test.go
index 41ee590b5..41469ccd6 100644
--- a/manifest_test.go
+++ b/manifest_test.go
@@ -69,7 +69,7 @@ var (
NewManifestBuilder(2,
"/home/iceberg/warehouse/nyc/taxis_partitioned/metadata/0125c686-8aa6-4502-bdcc-b6d17ca41a3b-m0.avro",
7989, 0, snapshotID).
Content(ManifestContentDeletes).
- SequenceNum(3, 3).
+ SequenceNumber(3, 3).
AddedFiles(3).
ExistingFiles(0).
DeletedFiles(0).
@@ -88,7 +88,7 @@ var (
NewManifestBuilder(3,
"/home/iceberg/warehouse/nyc/taxis_partitioned/metadata/0125c686-8aa6-4502-bdcc-b6d17ca41a3b-m0.avro",
7989, 0, snapshotID).
Content(ManifestContentData).
- SequenceNum(5, 5).
+ SequenceNumber(5, 5).
AddedFiles(3).
ExistingFiles(0).
DeletedFiles(0).
@@ -947,9 +947,9 @@ func (m *ManifestTestSuite) TestManifestEntriesV1() {
m.Equal(EntryStatusADDED, entry1.Status())
m.EqualValues(8744736658442914487, entry1.SnapshotID())
- m.Zero(entry1.SequenceNum())
- m.NotNil(entry1.FileSequenceNum())
- m.Zero(*entry1.FileSequenceNum())
+ m.Zero(entry1.DataSequenceNumber())
+ m.NotNil(entry1.FileSequenceNumber())
+ m.Zero(*entry1.FileSequenceNumber())
datafile := entry1.DataFile()
m.Equal(EntryContentData, datafile.ContentType())
@@ -1070,8 +1070,8 @@ func (m *ManifestTestSuite) TestReadManifestListV1() {
m.Equal(1, list[0].Version())
m.EqualValues(7989, list[0].Length())
m.Equal(ManifestContentData, list[0].ManifestContent())
- m.Zero(list[0].SequenceNum())
- m.Zero(list[0].MinSequenceNum())
+ m.Zero(list[0].SequenceNumber())
+ m.Zero(list[0].MinSequenceNumber())
m.EqualValues(9182715666859759686, list[0].SnapshotID())
m.EqualValues(3, list[0].AddedDataFiles())
m.True(list[0].HasAddedFiles())
@@ -1101,8 +1101,8 @@ func (m *ManifestTestSuite) TestReadManifestListV2() {
m.Equal(2, list[0].Version())
m.EqualValues(7989, list[0].Length())
m.Equal(ManifestContentDeletes, list[0].ManifestContent())
- m.EqualValues(3, list[0].SequenceNum())
- m.EqualValues(3, list[0].MinSequenceNum())
+ m.EqualValues(3, list[0].SequenceNumber())
+ m.EqualValues(3, list[0].MinSequenceNumber())
m.EqualValues(9182715666859759686, list[0].SnapshotID())
m.EqualValues(3, list[0].AddedDataFiles())
m.True(list[0].HasAddedFiles())
@@ -1131,8 +1131,8 @@ func (m *ManifestTestSuite) TestReadManifestListV3() {
m.Equal(3, list[0].Version())
m.EqualValues(7989, list[0].Length())
m.Equal(ManifestContentData, list[0].ManifestContent())
- m.EqualValues(5, list[0].SequenceNum())
- m.EqualValues(5, list[0].MinSequenceNum())
+ m.EqualValues(5, list[0].SequenceNumber())
+ m.EqualValues(5, list[0].MinSequenceNumber())
m.EqualValues(9182715666859759686, list[0].SnapshotID())
m.EqualValues(3, list[0].AddedDataFiles())
@@ -2096,8 +2096,8 @@ func (m *ManifestTestSuite) TestManifestEntriesV2() {
m.Equal(EntryStatusADDED, entry1.Status())
m.Equal(entrySnapshotID, entry1.SnapshotID())
- m.Zero(entry1.SequenceNum())
- m.Zero(*entry1.FileSequenceNum())
+ m.Zero(entry1.DataSequenceNumber())
+ m.Zero(*entry1.FileSequenceNumber())
datafile := entry1.DataFile()
m.Equal(EntryContentData, datafile.ContentType())
@@ -2250,8 +2250,8 @@ func (m *ManifestTestSuite) TestManifestEntriesV3() {
m.Zero(manifest.AddedRows())
m.Equal(EntryStatusADDED, entry1.Status())
m.Equal(entrySnapshotID, entry1.SnapshotID())
- m.Zero(entry1.SequenceNum())
- m.Zero(*entry1.FileSequenceNum())
+ m.Zero(entry1.DataSequenceNumber())
+ m.Zero(*entry1.FileSequenceNumber())
datafile := entry1.DataFile()
m.Equal(EntryContentData, datafile.ContentType())
m.Equal("/home/iceberg/warehouse/nyc/taxis_partitioned/data/VendorID=null/00000-633-d8a4223e-dc97-45a1-86e1-adaba6e8abd7-00001.parquet",
datafile.FilePath())
@@ -2557,8 +2557,8 @@ func (m *ManifestTestSuite) TestManifestEntryBuilder() {
m.Assert().Equal(EntryStatusEXISTING, entry.Status())
m.Assert().EqualValues(1, entry.SnapshotID())
// unassigned sequence number
- m.Assert().Equal(int64(-1), entry.SequenceNum())
- m.Assert().Nil(entry.FileSequenceNum())
+ m.Assert().Equal(int64(-1), entry.DataSequenceNumber())
+ m.Assert().Nil(entry.FileSequenceNumber())
data := entry.DataFile()
m.Assert().Equal(EntryContentData, data.ContentType())
m.Assert().Equal("sample.parquet", data.FilePath())
@@ -2602,12 +2602,12 @@ func (m *ManifestTestSuite)
TestManifestEntryFileSequenceNumReturnsCopy() {
Data: &dataFile{Path: "/data/sample.parquet"},
}
- got := entry.FileSequenceNum()
+ got := entry.FileSequenceNumber()
m.Require().NotNil(got)
m.Assert().Equal(entryFileSeqNum, *got)
*got = 20
- current := entry.FileSequenceNum()
+ current := entry.FileSequenceNumber()
m.Require().NotNil(current)
m.Assert().Equal(int64(10), *current)
}
@@ -2750,7 +2750,7 @@ func (m *ManifestTestSuite)
TestV2ManifestKeepsReferencedDataFile() {
WithManifestWriterContent(ManifestContentDeletes))
m.Require().NoError(err)
m.Require().NoError(writer.Add(
- NewManifestEntryBuilder(EntryStatusADDED, &snapshotID,
deleteFile).SequenceNum(1).Build()))
+ NewManifestEntryBuilder(EntryStatusADDED, &snapshotID,
deleteFile).DataSequenceNumber(1).Build()))
m.Require().NoError(writer.Close())
manifest, err := writer.ToManifestFile("manifest.avro",
int64(out.Len()))
@@ -3388,7 +3388,7 @@ func (m *ManifestTestSuite)
TestV3ManifestListWriterAssignedRowIDDelta() {
m.Require().NoError(err)
manifests := []ManifestFile{
NewManifestBuilder(3, "current.avro", 100, 1,
commitSnapID).AddedRows(10).ExistingRows(5).Build(),
- NewManifestBuilder(3, "carried.avro", 200, 1,
otherSnapID).SequenceNum(0, 0).AddedRows(100).ExistingRows(50).Build(),
+ NewManifestBuilder(3, "carried.avro", 200, 1,
otherSnapID).SequenceNumber(0, 0).AddedRows(100).ExistingRows(50).Build(),
NewManifestBuilder(3, "current2.avro", 300, 1,
commitSnapID).AddedRows(20).Build(),
}
err = writer.AddManifests(manifests)
@@ -3954,7 +3954,7 @@ func (m *ManifestTestSuite)
TestManifestEntryPresentEmptyListSurvivesRewrite() {
// First round trip mirrors reading an existing manifest: a
present-empty
// array decodes to a non-nil pointer over a nil slice.
- first := writeAndRead(NewManifestEntryBuilder(EntryStatusADDED,
&snapshotID, built).SequenceNum(1).Build())
+ first := writeAndRead(NewManifestEntryBuilder(EntryStatusADDED,
&snapshotID, built).DataSequenceNumber(1).Build())
m.Require().NotNil(first.ColSizes, "decoded column_sizes must stay
present, not null")
m.Require().NotNil(first.ValCounts, "decoded value_counts must stay
present, not null")
m.Require().NotNil(first.NullCounts, "decoded null_value_counts must
stay present, not null")
@@ -3967,7 +3967,7 @@ func (m *ManifestTestSuite)
TestManifestEntryPresentEmptyListSurvivesRewrite() {
// Re-encoding the decoded entry is what a manifest rewrite/merge does.
The
// present-empty lists must not collapse to null here.
- second := writeAndRead(NewManifestEntryBuilder(EntryStatusADDED,
&snapshotID, first).SequenceNum(1).Build())
+ second := writeAndRead(NewManifestEntryBuilder(EntryStatusADDED,
&snapshotID, first).DataSequenceNumber(1).Build())
m.Require().NotNil(second.ColSizes,
"present-empty column_sizes must survive a decode -> re-encode
rewrite as a present array")
m.Require().NotNil(second.ValCounts,
@@ -4093,7 +4093,7 @@ func (m *ManifestTestSuite)
TestDecodedDataFileMetadataIsIsolatedFromSourceAndGe
var buf bytes.Buffer
manifest, err := WriteManifest("/manifest.avro", &buf, 3, spec, schema,
snapshotID,
- []ManifestEntry{NewManifestEntryBuilder(EntryStatusADDED,
&snapshotID, dataFile).SequenceNum(1).Build()})
+ []ManifestEntry{NewManifestEntryBuilder(EntryStatusADDED,
&snapshotID, dataFile).DataSequenceNumber(1).Build()})
m.Require().NoError(err)
encoded := buf.Bytes()
entries, err := ReadManifest(manifest, bytes.NewReader(encoded), false)
@@ -4212,8 +4212,8 @@ func (m *ManifestTestSuite)
TestV2ManifestListAcceptsV1Manifests() {
m.Equal(manifestFileRecordsV1[0].FilePath(), entry.FilePath())
m.Equal(manifestFileRecordsV1[0].Length(), entry.Length())
m.Equal(ManifestContentData, entry.ManifestContent(), "v1 inheritance:
content must be data")
- m.Equal(int64(0), entry.SequenceNum(), "v1 inheritance: sequence_number
must be 0")
- m.Equal(int64(0), entry.MinSequenceNum(), "v1 inheritance:
min_sequence_number must be 0")
+ m.Equal(int64(0), entry.SequenceNumber(), "v1 inheritance:
sequence_number must be 0")
+ m.Equal(int64(0), entry.MinSequenceNumber(), "v1 inheritance:
min_sequence_number must be 0")
m.Equal(manifestFileRecordsV1[0].AddedRows(), entry.AddedRows())
}
@@ -4245,8 +4245,8 @@ func (m *ManifestTestSuite)
TestManifestWriterPreservesMinSequenceNumberZero() {
var manifestBuf bytes.Buffer
mf, err := WriteManifest("carried-forward-v1.avro", &manifestBuf, 2,
partitionSpec, testSchema, snapshotID, entries)
m.Require().NoError(err)
- m.Equal(int64(0), mf.MinSequenceNum(), "min_sequence_number must be 0
for v1-inherited live entries")
- m.Equal(int64(-1), mf.SequenceNum(), "manifest-level sequence_number is
assigned by the manifest list writer")
+ m.Equal(int64(0), mf.MinSequenceNumber(), "min_sequence_number must be
0 for v1-inherited live entries")
+ m.Equal(int64(-1), mf.SequenceNumber(), "manifest-level sequence_number
is assigned by the manifest list writer")
commitSeq := int64(42)
var listBuf bytes.Buffer
@@ -4256,8 +4256,8 @@ func (m *ManifestTestSuite)
TestManifestWriterPreservesMinSequenceNumberZero() {
list, err := ReadManifestList(&listBuf)
m.Require().NoError(err)
m.Require().Len(list, 1)
- m.Equal(int64(0), list[0].MinSequenceNum(), "manifest list must
preserve min_sequence_number 0")
- m.Equal(commitSeq, list[0].SequenceNum(), "manifest list assigns
sequence_number from the commit")
+ m.Equal(int64(0), list[0].MinSequenceNumber(), "manifest list must
preserve min_sequence_number 0")
+ m.Equal(commitSeq, list[0].SequenceNumber(), "manifest list assigns
sequence_number from the commit")
}
// TestV3ManifestListAcceptsV1AndV2Manifests verifies that a v3 manifest list
@@ -4281,8 +4281,8 @@ func (m *ManifestTestSuite)
TestV3ManifestListAcceptsV1AndV2Manifests() {
v1Entry := got[0]
m.Equal(manifestFileRecordsV1[0].FilePath(), v1Entry.FilePath())
m.Equal(ManifestContentData, v1Entry.ManifestContent())
- m.Equal(int64(0), v1Entry.SequenceNum())
- m.Equal(int64(0), v1Entry.MinSequenceNum())
+ m.Equal(int64(0), v1Entry.SequenceNumber())
+ m.Equal(int64(0), v1Entry.MinSequenceNumber())
m.Require().NotNil(v1Entry.FirstRowID(), "v3 list must assign
first_row_id for data manifests")
m.Equal(firstRowID, *v1Entry.FirstRowID())
@@ -4920,8 +4920,8 @@ func TestToManifestFileInheritsWriterContent(t
*testing.T) {
assert.Equal(t, int64(len(data)), mf.Length())
assert.Equal(t, int32(1), mf.PartitionSpecID())
assert.Equal(t, int64(1234), mf.SnapshotID())
- assert.Equal(t, int64(-1), mf.SequenceNum())
- assert.Equal(t, int64(1), mf.MinSequenceNum())
+ assert.Equal(t, int64(-1), mf.SequenceNumber())
+ assert.Equal(t, int64(1), mf.MinSequenceNumber())
assert.Equal(t, int32(1), mf.AddedDataFiles())
assert.Zero(t, mf.ExistingDataFiles())
assert.Zero(t, mf.DeletedDataFiles())
diff --git a/table/all_manifests_internal_test.go
b/table/all_manifests_internal_test.go
index e7c16f965..397e4caf1 100644
--- a/table/all_manifests_internal_test.go
+++ b/table/all_manifests_internal_test.go
@@ -199,7 +199,7 @@ func tableWithManifestListsUsingIO(t *testing.T,
snapshotCount int, readIOFn fun
seqNum := snapshotID
manifestPath := fmt.Sprintf("%s/metadata/manifest-%02d.avro",
tableLocation, snapshotID)
manifest := iceberg.NewManifestBuilder(2, manifestPath, 1, 0,
snapshotID).
- SequenceNum(seqNum, seqNum).
+ SequenceNumber(seqNum, seqNum).
AddedFiles(1).
AddedRows(1).
Build()
diff --git a/table/compaction/eq_delete_collect.go
b/table/compaction/eq_delete_collect.go
index 200d46a3d..6f75bb333 100644
--- a/table/compaction/eq_delete_collect.go
+++ b/table/compaction/eq_delete_collect.go
@@ -132,9 +132,9 @@ func collectDeadEqualityDeletes(
}
partition := internal.BorrowedDataFilePartition(df)
if specs == nil {
- survey.AddSurvivor(partition, e.SequenceNum())
+ survey.AddSurvivor(partition,
e.DataSequenceNumber())
} else {
- survey.AddSurvivorWithSpec(df.SpecID(),
partition, e.SequenceNum())
+ survey.AddSurvivorWithSpec(df.SpecID(),
partition, e.DataSequenceNumber())
}
}
}
diff --git a/table/compaction/eq_delete_decision.go
b/table/compaction/eq_delete_decision.go
index 25144289f..34de3c5b0 100644
--- a/table/compaction/eq_delete_decision.go
+++ b/table/compaction/eq_delete_decision.go
@@ -148,10 +148,10 @@ func DecideDeadEqualityDeletes(survey *SurvivorSurvey,
candidates []iceberg.Mani
if _, ok := seen[path]; ok {
continue
}
- if e.SequenceNum() < 0 {
+ if e.DataSequenceNumber() < 0 {
continue
}
- if minSeq >= e.SequenceNum() {
+ if minSeq >= e.DataSequenceNumber() {
seen[path] = struct{}{}
dead = append(dead, df)
}
@@ -199,7 +199,7 @@ func DecideDeadEqualityDeletesWithSpecs(
if _, ok := seen[path]; ok {
continue
}
- if e.SequenceNum() < 0 {
+ if e.DataSequenceNumber() < 0 {
continue
}
isUnpartitioned, ok := unpartitionedBySpecID[df.SpecID()]
@@ -214,7 +214,7 @@ func DecideDeadEqualityDeletesWithSpecs(
}
if survey.specAwareApplicableMinSeq(
df.SpecID(), internal.BorrowedDataFilePartition(df),
isUnpartitioned,
- ) >= e.SequenceNum() {
+ ) >= e.DataSequenceNumber() {
seen[path] = struct{}{}
dead = append(dead, df)
}
diff --git a/table/compaction/eq_delete_decision_test.go
b/table/compaction/eq_delete_decision_test.go
index 626d93f83..94d78a82c 100644
--- a/table/compaction/eq_delete_decision_test.go
+++ b/table/compaction/eq_delete_decision_test.go
@@ -412,7 +412,7 @@ func makeEqDeleteEntry(
df := builder.Build()
entryBuilder :=
iceberg.NewManifestEntryBuilder(iceberg.EntryStatusADDED, nil, df)
- entryBuilder.SequenceNum(seq)
+ entryBuilder.DataSequenceNumber(seq)
return entryBuilder.Build()
}
diff --git a/table/conflict_validation_bench_test.go
b/table/conflict_validation_bench_test.go
index c0d66a7c3..e80fa098e 100644
--- a/table/conflict_validation_bench_test.go
+++ b/table/conflict_validation_bench_test.go
@@ -207,7 +207,7 @@ func newConflictValidationBenchmarkContext(b *testing.B,
entryCount int) *confli
b.Fatal(err)
}
entries[i] =
iceberg.NewManifestEntryBuilder(iceberg.EntryStatusADDED, &snapshotID,
dataFile.Build()).
- SequenceNum(1).
+ DataSequenceNumber(1).
Build()
}
diff --git a/table/conflict_validation_test.go
b/table/conflict_validation_test.go
index ee5a6a0ca..0cb824c78 100644
--- a/table/conflict_validation_test.go
+++ b/table/conflict_validation_test.go
@@ -55,7 +55,7 @@ func writeTestDeleteManifest(
t.Helper()
entry := iceberg.NewManifestEntryBuilder(iceberg.EntryStatusADDED,
&snapshotID, delFile).
- SequenceNum(1).
+ DataSequenceNumber(1).
Build()
manifestPath := filepath.ToSlash(filepath.Join(dir,
fmt.Sprintf("delete-manifest-%d.avro", snapshotID)))
@@ -838,7 +838,7 @@ func writeTestMetricsManifestWithValues(
}
df := builder.Build()
entry := iceberg.NewManifestEntryBuilder(iceberg.EntryStatusADDED,
&snapshotID, df).
- SequenceNum(1).
+ DataSequenceNumber(1).
Build()
manifestPath := filepath.Join(dir, "metrics-manifest.avro")
diff --git a/table/dv_rewrite_test.go b/table/dv_rewrite_test.go
index f18ae5d02..dbae9dc8c 100644
--- a/table/dv_rewrite_test.go
+++ b/table/dv_rewrite_test.go
@@ -203,7 +203,7 @@ func
TestRewriteFiles_ExplicitDeleteRewriteIgnoresAutomaticDVRemoval(t *testing.
continue
}
oldEquality = entry.DataFile()
- oldEqualitySequence = entry.SequenceNum()
+ oldEqualitySequence = entry.DataSequenceNumber()
}
}
require.NotNil(t, oldEquality)
@@ -226,7 +226,7 @@ func
TestRewriteFiles_ExplicitDeleteRewriteIgnoresAutomaticDVRemoval(t *testing.
tbl, err = tx.Commit(ctx)
require.NoError(t, err)
- assert.Equal(t, oldEqualitySequence, currentManifestEntry(t, tbl,
newEqualityPath).SequenceNum())
+ assert.Equal(t, oldEqualitySequence, currentManifestEntry(t, tbl,
newEqualityPath).DataSequenceNumber())
assert.Empty(t, deleteEntriesReferencing(t, tbl, rewritten))
assertRowCount(t, tbl, 3)
}
@@ -247,7 +247,7 @@ func
TestRewriteFiles_DataSequenceNumberKeepsDVApplicableToReplacement(t *testin
require.NoError(t, err)
require.Len(t, tasks, 1)
oldData := tasks[0].File
- oldDataSequence := currentManifestEntry(t, tbl,
oldDataPath).SequenceNum()
+ oldDataSequence := currentManifestEntry(t, tbl,
oldDataPath).DataSequenceNumber()
oldDeletePath := tbl.Location() + "/data/old-pos-delete.parquet"
writeParquetFile(t, oldDeletePath, table.PositionalDeleteArrowSchema,
@@ -261,7 +261,7 @@ func
TestRewriteFiles_DataSequenceNumberKeepsDVApplicableToReplacement(t *testin
require.NoError(t,
tx.NewRowDelta(nil).AddDeletes(oldDelete).Commit(t.Context()))
tbl, err = tx.Commit(t.Context())
require.NoError(t, err)
- oldDeleteSequence := currentManifestEntry(t, tbl,
oldDeletePath).SequenceNum()
+ oldDeleteSequence := currentManifestEntry(t, tbl,
oldDeletePath).DataSequenceNumber()
tx = tbl.NewTransaction()
require.NoError(t, tx.UpgradeFormatVersion(3))
@@ -303,8 +303,8 @@ func
TestRewriteFiles_DataSequenceNumberKeepsDVApplicableToReplacement(t *testin
tbl, err = tx.Commit(t.Context())
require.NoError(t, err)
- assert.Equal(t, oldDataSequence, currentManifestEntry(t, tbl,
newDataPath).SequenceNum())
- assert.Equal(t, oldDeleteSequence, currentManifestEntry(t, tbl,
newDVs[0].FilePath()).SequenceNum())
+ assert.Equal(t, oldDataSequence, currentManifestEntry(t, tbl,
newDataPath).DataSequenceNumber())
+ assert.Equal(t, oldDeleteSequence, currentManifestEntry(t, tbl,
newDVs[0].FilePath()).DataSequenceNumber())
assert.Equal(t, []int64{2}, scanIDs(t, tbl),
"the deletion vector must remain applicable to the replacement
data file")
}
diff --git a/table/equality_delete_index.go b/table/equality_delete_index.go
index 030fa6cc7..0b5c96278 100644
--- a/table/equality_delete_index.go
+++ b/table/equality_delete_index.go
@@ -495,7 +495,7 @@ func buildEqualityDeleteIndex(
sortBySequence := func(entries []equalityDeleteIndexEntry) {
slices.SortStableFunc(entries, func(a, b
equalityDeleteIndexEntry) int {
- return cmp.Compare(a.entry.SequenceNum(),
b.entry.SequenceNum())
+ return cmp.Compare(a.entry.DataSequenceNumber(),
b.entry.DataSequenceNumber())
})
}
sortBySequence(idx.global)
@@ -536,12 +536,12 @@ func (idx *equalityDeleteIndex) forDataFile(dataEntry
iceberg.ManifestEntry) ([]
}
}
- dataSeqNum := dataEntry.SequenceNum()
+ dataSeqNum := dataEntry.DataSequenceNumber()
// Equality deletes are sorted by sequence within each list. When even
// the newest delete is not newer than the data file, no delete applies.
// Avoid initializing or copying column statistics in that common case.
- if (len(idx.global) == 0 ||
idx.global[len(idx.global)-1].entry.SequenceNum() <= dataSeqNum) &&
- (len(partitionEntries) == 0 ||
partitionEntries[len(partitionEntries)-1].entry.SequenceNum() <= dataSeqNum) {
+ if (len(idx.global) == 0 ||
idx.global[len(idx.global)-1].entry.DataSequenceNumber() <= dataSeqNum) &&
+ (len(partitionEntries) == 0 ||
partitionEntries[len(partitionEntries)-1].entry.DataSequenceNumber() <=
dataSeqNum) {
return nil, nil
}
var dataStats *equalityDeleteDataFileStats
@@ -563,7 +563,7 @@ func firstEqualityDeleteAfter(
dataSeqNum int64,
) int {
return sort.Search(len(entries), func(i int) bool {
- return entries[i].entry.SequenceNum() > dataSeqNum
+ return entries[i].entry.DataSequenceNumber() > dataSeqNum
})
}
diff --git a/table/equality_delete_range_index.go
b/table/equality_delete_range_index.go
index d71b53494..f72b7ec3e 100644
--- a/table/equality_delete_range_index.go
+++ b/table/equality_delete_range_index.go
@@ -96,7 +96,7 @@ func (idx *equalityDeleteRangeIndex) build() {
entryIndex: entryIndex,
lower: field.lowerValue,
upper: field.upperValue,
- sequence: entries[entryIndex].entry.SequenceNum(),
+ sequence:
entries[entryIndex].entry.DataSequenceNumber(),
})
if _, found := fieldsByID[field.fieldID]; !found {
fieldsByID[field.fieldID] = *field
diff --git a/table/equality_delete_range_index_test.go
b/table/equality_delete_range_index_test.go
index 61f0fa42b..338d1f950 100644
--- a/table/equality_delete_range_index_test.go
+++ b/table/equality_delete_range_index_test.go
@@ -35,7 +35,7 @@ func appendEqualityDeletesAfterLinear(
dataStats *equalityDeleteDataFileStats,
) []iceberg.DataFile {
for _, entry := range entries {
- if entry.entry.SequenceNum() > dataSeqNum &&
equalityDeleteCanContainData(dataStats, entry.fields) {
+ if entry.entry.DataSequenceNumber() > dataSeqNum &&
equalityDeleteCanContainData(dataStats, entry.fields) {
out = append(out, entry.entry.DataFile())
}
}
@@ -119,11 +119,11 @@ func TestEqualityDeleteRangeIndexMatchesLinearReference(t
*testing.T) {
stats :=
equalityDeleteDataFileStatsFor(dataEntry.DataFile())
want := appendEqualityDeletesAfterLinear(
- nil, entries, dataEntry.SequenceNum(), &stats)
+ nil, entries, dataEntry.DataSequenceNumber(),
&stats)
assert.Equal(t, equalityDeleteMetricPaths(want),
equalityDeleteMetricPaths(got))
- start := firstEqualityDeleteAfter(entries,
dataEntry.SequenceNum())
+ start := firstEqualityDeleteAfter(entries,
dataEntry.DataSequenceNumber())
if len(entries)-start >=
equalityDeleteRangeIndexMinLookupEntries {
- candidates, ok :=
idx.rangeIndexesByPartition[key].candidates(start, dataEntry.SequenceNum(),
&stats)
+ candidates, ok :=
idx.rangeIndexesByPartition[key].candidates(start,
dataEntry.DataSequenceNumber(), &stats)
assert.Equal(t, tt.indexed, ok, "the expected
fast path must actually run")
if ok {
assert.Less(t, len(candidates),
len(entries)-start)
@@ -214,10 +214,10 @@ func BenchmarkEqualityDeleteRangeIndexLookup(b
*testing.B) {
var files []iceberg.DataFile
if indexed {
files =
appendEqualityDeletesAfterIndexed(
- nil, entries,
dataEntry.SequenceNum(), &stats, rangeIndex)
+ nil, entries,
dataEntry.DataSequenceNumber(), &stats, rangeIndex)
} else {
files =
appendEqualityDeletesAfterIndexed(
- nil, entries,
dataEntry.SequenceNum(), &stats, nil)
+ nil, entries,
dataEntry.DataSequenceNumber(), &stats, nil)
}
matched += len(files)
}
diff --git a/table/equality_delete_sequence_guard_test.go
b/table/equality_delete_sequence_guard_test.go
index 2fd7e8fee..7fe80313f 100644
--- a/table/equality_delete_sequence_guard_test.go
+++ b/table/equality_delete_sequence_guard_test.go
@@ -83,7 +83,7 @@ func TestEqualityDeleteIndexSkipsUnusedDataFileStatistics(t
*testing.T) {
entry :=
newEqualityDeleteMetricsTestEntry("data.parquet", 1, tc.partition,
iceberg.EntryContentData, tc.seq, nil, nil,
nil, nil, nil, nil)
if tc.skipStats {
- seq := entry.SequenceNum()
+ seq := entry.DataSequenceNumber()
entry =
iceberg.NewManifestEntry(iceberg.EntryStatusADDED, nil, &seq, nil,
equalityDeleteStatsForbiddenFile{entry.DataFile()})
}
@@ -120,7 +120,7 @@ func TestEqualityDeleteIndexSkipsUnusedDataFileStatistics(t
*testing.T) {
data := newEqualityDeleteMetricsTestEntry("data.parquet", 1,
partA,
iceberg.EntryContentData, 5, nil, nil, nil, nil, nil,
nil)
- seq := data.SequenceNum()
+ seq := data.DataSequenceNumber()
entry := iceberg.NewManifestEntry(iceberg.EntryStatusADDED,
nil, &seq, nil,
equalityDeleteStatsForbiddenFile{data.DataFile()})
matched, err := globalIdx.forDataFile(entry)
diff --git a/table/incremental_append_scan.go b/table/incremental_append_scan.go
index d682d4ca8..277caec92 100644
--- a/table/incremental_append_scan.go
+++ b/table/incremental_append_scan.go
@@ -218,7 +218,7 @@ func (s *IncrementalAppendScan) PlanFiles(ctx
context.Context) ([]FileScanTask,
task := FileScanTask{File: file, Start: 0, Length:
file.FileSizeBytes()}
task.Residual = residual
task.FirstRowID = file.FirstRowID()
- if sequenceNumber := entry.SequenceNum(); sequenceNumber >= 0 {
+ if sequenceNumber := entry.DataSequenceNumber(); sequenceNumber
>= 0 {
task.DataSequenceNumber = &sequenceNumber
}
tasks = append(tasks, task)
diff --git a/table/incremental_changelog_scan.go
b/table/incremental_changelog_scan.go
index f3b418102..7ec37d123 100644
--- a/table/incremental_changelog_scan.go
+++ b/table/incremental_changelog_scan.go
@@ -322,7 +322,7 @@ func newChangelogScanTask(entry iceberg.ManifestEntry,
ordinal int, residual ice
task.Length = file.FileSizeBytes()
task.Residual = residual
task.FirstRowID = file.FirstRowID()
- if sequenceNumber := entry.SequenceNum(); sequenceNumber >= 0 {
+ if sequenceNumber := entry.DataSequenceNumber(); sequenceNumber
>= 0 {
task.DataSequenceNumber = &sequenceNumber
}
}
diff --git a/table/inspect_entries.go b/table/inspect_entries.go
index c4fdb86ae..225524459 100644
--- a/table/inspect_entries.go
+++ b/table/inspect_entries.go
@@ -80,8 +80,8 @@ func newInspectEntryAppender(
bldr.Field(0).(*array.Int32Builder).Append(int32(entry.Status()))
appendEntriesOptionalInt64(bldr.Field(1).(*array.Int64Builder),
entry.SnapshotID())
- appendEntriesOptionalInt64(bldr.Field(2).(*array.Int64Builder),
entry.SequenceNum())
- appendInspectOptionalInt64(bldr.Field(3).(*array.Int64Builder),
entry.FileSequenceNum())
+ appendEntriesOptionalInt64(bldr.Field(2).(*array.Int64Builder),
entry.DataSequenceNumber())
+ appendInspectOptionalInt64(bldr.Field(3).(*array.Int64Builder),
entry.FileSequenceNumber())
dataFileBuilder.Append(true)
return contentFileBuilder.append(entry.DataFile())
diff --git a/table/inspect_internal_test.go b/table/inspect_internal_test.go
index d7d3da7a0..1b26c60e3 100644
--- a/table/inspect_internal_test.go
+++ b/table/inspect_internal_test.go
@@ -1198,7 +1198,7 @@ func TestInspectAllManifestsPreservesSnapshotReferences(t
*testing.T) {
require.NoError(t, err)
manifest := iceberg.NewManifestBuilder(2,
tableLocation+"/metadata/shared-manifest.avro", 100, 0, 1).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
AddedFiles(1).
KeyMetadata([]byte{1, 2, 3}).
Build()
@@ -1251,7 +1251,7 @@ func TestInspectAllManifestsStreamsRecordBatches(t
*testing.T) {
manifests[idx] = iceberg.NewManifestBuilder(2,
fmt.Sprintf("mem://default/table-location/metadata/manifest-%04d.avro", idx),
100, 0, 1).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
AddedFiles(1).
Build()
}
@@ -1287,7 +1287,7 @@ func TestInspectAllManifestsAllocator(t *testing.T) {
manifests[idx] = iceberg.NewManifestBuilder(2,
fmt.Sprintf("mem://default/table-location/metadata/manifest-%04d.avro", idx),
100, 0, 1).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
AddedFiles(1).
Build()
}
@@ -1370,7 +1370,7 @@ func TestInspectManifestsContainsNaN(t *testing.T) {
require.NoError(t, err)
manifest := iceberg.NewManifestBuilder(2,
"mem://default/table-location/metadata/contains-nan.avro",
100, int32(spec.ID()), 1).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
Partitions([]iceberg.FieldSummary{{
ContainsNaN: &containsNaN,
LowerBound: &bound,
@@ -1429,7 +1429,7 @@ func TestInspectManifestsPromotedPartitionSummaryBounds(t
*testing.T) {
require.NoError(t, err)
manifest := iceberg.NewManifestBuilder(2,
"mem://default/table-location/metadata/promoted.avro",
100, int32(spec.ID()), 1).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
Partitions([]iceberg.FieldSummary{{LowerBound:
&bound, UpperBound: &bound}}).
Build()
tbl := inspectTableWithManifestListAndSchemas(t,
initialSchema, currentSchema,
@@ -1459,7 +1459,7 @@ func TestInspectManifestsDroppedPartitionSource(t
*testing.T) {
require.NoError(t, err)
manifest := iceberg.NewManifestBuilder(2,
"mem://default/table-location/metadata/dropped-source.avro",
100, int32(spec.ID()), 1).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
Partitions([]iceberg.FieldSummary{{LowerBound: &bound,
UpperBound: &bound}}).
Build()
tbl := inspectTableWithManifestListAndSchemas(t, initialSchema,
currentSchema,
@@ -1484,7 +1484,7 @@ func TestInspectManifestsDeleteCounts(t *testing.T) {
manifest := iceberg.NewManifestBuilder(2,
"mem://default/table-location/metadata/delete-manifest.avro",
100, int32(spec.ID()), 1).
Content(iceberg.ManifestContentDeletes).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
AddedFiles(2).
ExistingFiles(3).
DeletedFiles(4).
@@ -1615,7 +1615,7 @@ func
TestInspectManifestsRejectsNegativeCountsForV2AndV3(t *testing.T) {
manifest := iceberg.NewManifestBuilder(tt.version,
"mem://default/table-location/metadata/negative-count.avro",
100, int32(spec.ID()), 1).
Content(tt.content).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
AddedFiles(tt.added).
ExistingFiles(tt.existing).
DeletedFiles(tt.deleted).
@@ -1633,7 +1633,7 @@ func TestInspectManifestsRejectsMissingPartitionSpec(t
*testing.T) {
spec := partitionedSpec()
manifest := iceberg.NewManifestBuilder(2,
"mem://default/table-location/metadata/missing-spec.avro",
100, 999, 1).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
Partitions([]iceberg.FieldSummary{{}}).
Build()
tbl := inspectTableWithManifestList(t, spec, 2,
[]iceberg.ManifestFile{manifest})
@@ -1647,7 +1647,7 @@ func
TestInspectManifestsAllowsMissingPartitionSpecWithoutSummaries(t *testing.T
spec := partitionedSpec()
manifest := iceberg.NewManifestBuilder(2,
"mem://default/table-location/metadata/missing-spec.avro",
100, 999, 1).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
Build()
tbl := inspectTableWithManifestList(t, spec, 2,
[]iceberg.ManifestFile{manifest})
@@ -1668,7 +1668,7 @@ func
TestInspectManifestsReportsPartitionFieldNameInBoundErrors(t *testing.T) {
invalidBound := []byte{0x01}
manifest := iceberg.NewManifestBuilder(2,
"mem://default/table-location/metadata/invalid-bound.avro",
100, int32(spec.ID()), 1).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
Partitions([]iceberg.FieldSummary{{LowerBound: &invalidBound}}).
Build()
tbl := inspectTableWithManifestList(t, spec, 2,
[]iceberg.ManifestFile{manifest})
@@ -1681,7 +1681,7 @@ func TestInspectManifestsWrapsFileIOFactoryError(t
*testing.T) {
spec := partitionedSpec()
manifest := iceberg.NewManifestBuilder(2,
"mem://default/table-location/metadata/manifest.avro",
100, int32(spec.ID()), 1).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
Build()
tbl := inspectTableWithManifestList(t, spec, 2,
[]iceberg.ManifestFile{manifest})
factoryErr := errors.New("factory failed")
@@ -1712,7 +1712,7 @@ func TestInspectManifestsRejectsExtraPartitionSummaries(t
*testing.T) {
spec := partitionedSpec()
manifest := iceberg.NewManifestBuilder(2,
"mem://default/table-location/metadata/extra-summary.avro",
100, int32(spec.ID()), 1).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
Partitions([]iceberg.FieldSummary{{}, {}}).
Build()
tbl := inspectTableWithManifestList(t, spec, 2,
[]iceberg.ManifestFile{manifest})
@@ -1727,7 +1727,7 @@ func TestInspectManifestsRejectsUnknownContent(t
*testing.T) {
manifest := iceberg.NewManifestBuilder(2,
"mem://default/table-location/metadata/unknown-content.avro",
100, int32(spec.ID()), 1).
Content(iceberg.ManifestContent(2)).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
Build()
tbl := inspectTableWithManifestList(t, spec, 2,
[]iceberg.ManifestFile{manifest})
@@ -2867,7 +2867,7 @@ func
TestInspectPartitionsLeavesSpecIDUnsetForExpiredSnapshot(t *testing.T) {
require.NoError(t, err)
require.NoError(t, memIO.WriteFile(manifestPath, manifestBuf.Bytes()))
manifest := iceberg.NewManifestBuilder(2, manifestPath,
int64(manifestBuf.Len()), int32(spec.ID()), expiredSnapshotID).
- SequenceNum(sequenceNumber, sequenceNumber).
+ SequenceNumber(sequenceNumber, sequenceNumber).
AddedFiles(1).
AddedRows(1).
Build()
diff --git a/table/maintenance/manifest_test_helpers_test.go
b/table/maintenance/manifest_test_helpers_test.go
index d84f913da..3d844eb39 100644
--- a/table/maintenance/manifest_test_helpers_test.go
+++ b/table/maintenance/manifest_test_helpers_test.go
@@ -127,7 +127,7 @@ func writeManifest(t testing.TB, tio *trackingIO,
snapshotID, seqNum int64, mani
require.NoError(t, err)
entry := iceberg.NewManifestEntryBuilder(iceberg.EntryStatusADDED,
&snapshotID, df.Build()).
- SequenceNum(seqNum).
+ DataSequenceNumber(seqNum).
Build()
var buf bytes.Buffer
@@ -136,7 +136,7 @@ func writeManifest(t testing.TB, tio *trackingIO,
snapshotID, seqNum int64, mani
require.NoError(t, tio.WriteFile(manifestPath, buf.Bytes()))
return iceberg.NewManifestBuilder(2, manifestPath, int64(buf.Len()), 0,
snapshotID).
- SequenceNum(seqNum, seqNum).
+ SequenceNumber(seqNum, seqNum).
AddedFiles(1).
AddedRows(1).
Build()
diff --git a/table/partition_conflict_test.go b/table/partition_conflict_test.go
index 2341f8c82..6daaaadac 100644
--- a/table/partition_conflict_test.go
+++ b/table/partition_conflict_test.go
@@ -98,7 +98,7 @@ func writeTestManifest(
require.NoError(t, err)
entry := iceberg.NewManifestEntryBuilder(iceberg.EntryStatusADDED,
&snapshotID, df.Build()).
- SequenceNum(1).
+ DataSequenceNumber(1).
Build()
manifestPath := filepath.ToSlash(filepath.Join(dir,
fmt.Sprintf("manifest-%d.avro", snapshotID)))
diff --git a/table/partition_residual_read_test.go
b/table/partition_residual_read_test.go
index 5fb45a2ea..2cb84bb1f 100644
--- a/table/partition_residual_read_test.go
+++ b/table/partition_residual_read_test.go
@@ -72,7 +72,7 @@ func TestReadTasksUsesIdentityPartitionResidual(t *testing.T)
{
iceberg.EntryStatusADDED,
&snapshotID,
dataFileBuilder.Build(),
- ).SequenceNum(1).Build()
+ ).DataSequenceNumber(1).Build()
manifestPath := tableLocation + "/metadata/manifest.avro"
var manifestBuffer bytes.Buffer
manifest, err := iceberg.WriteManifest(
diff --git a/table/partition_residual_test.go b/table/partition_residual_test.go
index 58eb8a4da..ed0f74708 100644
--- a/table/partition_residual_test.go
+++ b/table/partition_residual_test.go
@@ -372,7 +372,7 @@ func TestPlanFilesLocalPopulatesPartitionResidual(t
*testing.T) {
dataFile := newTestDataFile(t, spec, dataPath, map[int]any{1000:
int32(5)})
entry := iceberg.NewManifestEntryBuilder(
iceberg.EntryStatusADDED, &snapshotID, dataFile,
- ).SequenceNum(1).Build()
+ ).DataSequenceNumber(1).Build()
var manifestBuffer bytes.Buffer
manifest, err := iceberg.WriteManifest(
diff --git a/table/pos_delete_collect.go b/table/pos_delete_collect.go
index 198d24a4e..dec778543 100644
--- a/table/pos_delete_collect.go
+++ b/table/pos_delete_collect.go
@@ -106,7 +106,7 @@ func collectPositionDeleteCandidates(ctx context.Context,
fs iceio.IO, manifests
}
// An unset delete sequence cannot be compared safely.
Retain it.
- if seq := e.SequenceNum(); seq >= 0 {
+ if seq := e.DataSequenceNumber(); seq >= 0 {
partitionKey, err :=
canonicalPartitionKey(df.SpecID(), dataFilePartition(df))
if err != nil {
return nil, false, fmt.Errorf("building
partition key for position delete %s (spec %d): %w", df.FilePath(),
df.SpecID(), err)
@@ -147,7 +147,7 @@ func minSurvivorSeqByPartition(ctx context.Context, fs
iceio.IO, manifests []ice
// Unknown survivor sequence numbers are treated as old
as possible,
// retaining every delete whose applicability is
uncertain.
- seq := max(e.SequenceNum(), 0)
+ seq := max(e.DataSequenceNumber(), 0)
key, err := canonicalPartitionKey(df.SpecID(),
dataFilePartition(df))
if err != nil {
return nil, fmt.Errorf("building partition key
for surviving data file %s (spec %d): %w", df.FilePath(), df.SpecID(), err)
diff --git a/table/positional_delete_index.go b/table/positional_delete_index.go
index fa358a692..476a01b35 100644
--- a/table/positional_delete_index.go
+++ b/table/positional_delete_index.go
@@ -166,7 +166,7 @@ func buildPositionalDeleteIndex(entries
[]iceberg.ManifestEntry) (*positionalDel
sortBySequence := func(entries []iceberg.ManifestEntry) {
slices.SortStableFunc(entries, func(a, b iceberg.ManifestEntry)
int {
- return cmp.Compare(a.SequenceNum(), b.SequenceNum())
+ return cmp.Compare(a.DataSequenceNumber(),
b.DataSequenceNumber())
})
}
for _, pathEntries := range idx.byPath {
@@ -174,7 +174,7 @@ func buildPositionalDeleteIndex(entries
[]iceberg.ManifestEntry) (*positionalDel
}
sortPartitionBySequence := func(entries
[]positionalPartitionDeleteEntry) {
slices.SortStableFunc(entries, func(a, b
positionalPartitionDeleteEntry) int {
- return cmp.Compare(a.entry.SequenceNum(),
b.entry.SequenceNum())
+ return cmp.Compare(a.entry.DataSequenceNumber(),
b.entry.DataSequenceNumber())
})
}
for _, partitionEntries := range idx.byPartition {
@@ -210,7 +210,7 @@ func (idx *positionalDeleteIndex) forDataFile(dataEntry
iceberg.ManifestEntry) (
}
}
- dataSeqNum := dataEntry.SequenceNum()
+ dataSeqNum := dataEntry.DataSequenceNumber()
out, err := appendPartitionDeletesFromSequence(
nil, partitionEntries, dataSeqNum, dataFile.FilePath())
if err != nil {
@@ -229,7 +229,7 @@ func appendPartitionDeletesFromSequence(
dataFilePath string,
) ([]iceberg.DataFile, error) {
start := sort.Search(len(entries), func(i int) bool {
- return entries[i].entry.SequenceNum() >= dataSeqNum
+ return entries[i].entry.DataSequenceNumber() >= dataSeqNum
})
if start == len(entries) {
return out, nil
@@ -258,7 +258,7 @@ func appendPositionalDeletesFromSequence(
dataSeqNum int64,
) []iceberg.DataFile {
start := sort.Search(len(entries), func(i int) bool {
- return entries[i].SequenceNum() >= dataSeqNum
+ return entries[i].DataSequenceNumber() >= dataSeqNum
})
for _, entry := range entries[start:] {
out = append(out, entry.DataFile())
diff --git a/table/positional_delete_index_bench_test.go
b/table/positional_delete_index_bench_test.go
index dd5ed66c2..5fcbee04d 100644
--- a/table/positional_delete_index_bench_test.go
+++ b/table/positional_delete_index_bench_test.go
@@ -398,7 +398,7 @@ func matchPositionalDeletesByMetrics(
deleteEntries []iceberg.ManifestEntry,
) ([]iceberg.DataFile, error) {
start := sort.Search(len(deleteEntries), func(i int) bool {
- return deleteEntries[i].SequenceNum() >= dataEntry.SequenceNum()
+ return deleteEntries[i].DataSequenceNumber() >=
dataEntry.DataSequenceNumber()
})
evaluator, err :=
newInclusiveMetricsEvaluator(iceberg.PositionalDeleteSchema,
iceberg.EqualTo(iceberg.Reference("file_path"),
dataEntry.DataFile().FilePath()),
@@ -432,7 +432,7 @@ func matchPositionalDeletesByPartition(
}
start := sort.Search(len(deleteEntries), func(i int) bool {
- return deleteEntries[i].SequenceNum() >= dataEntry.SequenceNum()
+ return deleteEntries[i].DataSequenceNumber() >=
dataEntry.DataSequenceNumber()
})
evaluator, err :=
newInclusiveMetricsEvaluator(iceberg.PositionalDeleteSchema,
iceberg.EqualTo(iceberg.Reference("file_path"),
dataFile.FilePath()),
diff --git a/table/positional_delete_index_test.go
b/table/positional_delete_index_test.go
index 88478bce2..3f40700f6 100644
--- a/table/positional_delete_index_test.go
+++ b/table/positional_delete_index_test.go
@@ -257,7 +257,7 @@ func
TestPositionalDeleteIndexMatchesReferenceApplicability(t *testing.T) {
for _, dataEntry := range dataEntries {
t.Run(fmt.Sprintf("%s/spec=%d/sequence=%d",
- dataEntry.DataFile().FilePath(),
dataEntry.DataFile().SpecID(), dataEntry.SequenceNum()), func(t *testing.T) {
+ dataEntry.DataFile().FilePath(),
dataEntry.DataFile().SpecID(), dataEntry.DataSequenceNumber()), func(t
*testing.T) {
matched, err := idx.forDataFile(dataEntry)
require.NoError(t, err)
@@ -280,7 +280,7 @@ func referencePositionalDeleteApplies(
deleteEntry iceberg.ManifestEntry,
pathFieldID int,
) bool {
- if deleteEntry.SequenceNum() < dataEntry.SequenceNum() {
+ if deleteEntry.DataSequenceNumber() < dataEntry.DataSequenceNumber() {
return false
}
diff --git a/table/replace_files_test.go b/table/replace_files_test.go
index 2a2bf491c..065aed728 100644
--- a/table/replace_files_test.go
+++ b/table/replace_files_test.go
@@ -217,7 +217,7 @@ func
TestReplaceFilesWithDeleteFilesPreservesDataSequenceNumber(t *testing.T) {
require.NoError(t, err)
oldDelete := oldDeleteBuilder.Build()
- oldSequence := currentManifestEntry(t, tbl,
oldDelete.FilePath()).SequenceNum()
+ oldSequence := currentManifestEntry(t, tbl,
oldDelete.FilePath()).DataSequenceNumber()
newDeletePath := tbl.Location() + "/data/new-pos-delete.parquet"
writeParquetFile(t, newDeletePath, table.PositionalDeleteArrowSchema,
fmt.Sprintf(`[{"file_path":%q,"pos":0}]`, dataPath))
@@ -236,7 +236,7 @@ func
TestReplaceFilesWithDeleteFilesPreservesDataSequenceNumber(t *testing.T) {
tbl, err = tx.Commit(t.Context())
require.NoError(t, err)
- assert.Equal(t, oldSequence, currentManifestEntry(t, tbl,
newDeletePath).SequenceNum(),
+ assert.Equal(t, oldSequence, currentManifestEntry(t, tbl,
newDeletePath).DataSequenceNumber(),
"rewritten delete files must retain the replaced data sequence
number")
assert.NotEqual(t, tbl.CurrentSnapshot().SequenceNumber, oldSequence,
"the new snapshot sequence must not replace the delete data
sequence")
@@ -366,7 +366,7 @@ func
TestReplaceFilesWithDeleteFilesValidatesDeletionVectorIdentity(t *testing.T
require.NoError(t,
tx.NewRowDelta(nil).AddDeletes(sourceDelete).Commit(t.Context()))
sharedTbl, err := tx.Commit(t.Context())
require.NoError(t, err)
- sequence := currentManifestEntry(t, sharedTbl,
sourceDelete.FilePath()).SequenceNum()
+ sequence := currentManifestEntry(t, sharedTbl,
sourceDelete.FilePath()).DataSequenceNumber()
tx = sharedTbl.NewTransaction()
require.NoError(t, tx.UpgradeFormatVersion(3))
@@ -458,7 +458,7 @@ func
TestReplaceFilesWithDeleteFilesValidatesExistingPaths(t *testing.T) {
}
tbl, err = tx.Commit(t.Context())
require.NoError(t, err)
- sequence := currentManifestEntry(t, tbl,
source.FilePath()).SequenceNum()
+ sequence := currentManifestEntry(t, tbl,
source.FilePath()).DataSequenceNumber()
for _, tt := range []struct {
name string
@@ -529,7 +529,7 @@ func
TestReplaceFilesWithDeleteFilesRejectsPartialPositionDeleteToDVRewrite(t *t
tbl, err = tx.Commit(t.Context())
require.NoError(t, err)
- sequence := currentManifestEntry(t, tbl,
oldDeletes[0].FilePath()).SequenceNum()
+ sequence := currentManifestEntry(t, tbl,
oldDeletes[0].FilePath()).DataSequenceNumber()
offset, length := int64(8), int64(16)
replacement := newRewriteDeletionVector(t,
tbl.Location()+"/data/replacement.puffin", dataPath, &offset, &length)
@@ -572,7 +572,7 @@ func
TestReplaceFilesWithDeleteFilesRejectsDeletionVectorPartitionMismatch(t *te
require.NoError(t,
tx.NewRowDelta(nil).AddDeletes(oldDelete).Commit(t.Context()))
tbl, err = tx.Commit(t.Context())
require.NoError(t, err)
- deleteSequence := currentManifestEntry(t, tbl,
oldDeletePath).SequenceNum()
+ deleteSequence := currentManifestEntry(t, tbl,
oldDeletePath).DataSequenceNumber()
tx = tbl.NewTransaction()
require.NoError(t, tx.UpgradeFormatVersion(3))
@@ -624,7 +624,7 @@ func
TestReplaceFilesWithDeleteFilesIgnoresOlderSurvivingPositionDelete(t *testi
require.NoError(t,
tx.NewRowDelta(nil).AddDeletes(oldPartitionDelete).Commit(t.Context()))
tbl, err = tx.Commit(t.Context())
require.NoError(t, err)
- oldPartitionDeleteSequence := currentManifestEntry(t, tbl,
oldPartitionDeletePath).SequenceNum()
+ oldPartitionDeleteSequence := currentManifestEntry(t, tbl,
oldPartitionDeletePath).DataSequenceNumber()
dataBPath := tbl.Location() + "/data/data-b.parquet"
dataBBuilder, err := iceberg.NewDataFileBuilder(
@@ -635,7 +635,7 @@ func
TestReplaceFilesWithDeleteFilesIgnoresOlderSurvivingPositionDelete(t *testi
require.NoError(t, tx.AddDataFiles(t.Context(),
[]iceberg.DataFile{dataBBuilder.Build()}, nil))
tbl, err = tx.Commit(t.Context())
require.NoError(t, err)
- dataBSequence := currentManifestEntry(t, tbl, dataBPath).SequenceNum()
+ dataBSequence := currentManifestEntry(t, tbl,
dataBPath).DataSequenceNumber()
require.Greater(t, dataBSequence, oldPartitionDeleteSequence)
filePathField, ok :=
iceberg.PositionalDeleteSchema.FindFieldByName("file_path")
@@ -655,7 +655,7 @@ func
TestReplaceFilesWithDeleteFilesIgnoresOlderSurvivingPositionDelete(t *testi
require.NoError(t,
tx.NewRowDelta(nil).AddDeletes(newPositionDelete).Commit(t.Context()))
tbl, err = tx.Commit(t.Context())
require.NoError(t, err)
- newPositionDeleteSequence := currentManifestEntry(t, tbl,
newPositionDeletePath).SequenceNum()
+ newPositionDeleteSequence := currentManifestEntry(t, tbl,
newPositionDeletePath).DataSequenceNumber()
tx = tbl.NewTransaction()
require.NoError(t, tx.UpgradeFormatVersion(3))
@@ -681,7 +681,7 @@ func
TestReplaceFilesWithDeleteFilesIgnoresOlderSurvivingPositionDelete(t *testi
"an older position delete cannot apply to the newer target data
file")
tbl, err = tx.Commit(t.Context())
require.NoError(t, err)
- assert.Equal(t, newPositionDeleteSequence, currentManifestEntry(t, tbl,
replacement.FilePath()).SequenceNum())
+ assert.Equal(t, newPositionDeleteSequence, currentManifestEntry(t, tbl,
replacement.FilePath()).DataSequenceNumber())
}
func TestReplaceFilesWithDeleteFilesRejectsSurvivingDeletionVector(t
*testing.T) {
@@ -711,7 +711,7 @@ func
TestReplaceFilesWithDeleteFilesRejectsSurvivingDeletionVector(t *testing.T)
offset, length := int64(8), int64(16)
replacement := newRewriteDeletionVector(t,
tbl.Location()+"/data/replacement-dv.puffin", target, &offset, &length)
- sequence := currentManifestEntry(t, tbl,
siblingDVs[0].FilePath()).SequenceNum()
+ sequence := currentManifestEntry(t, tbl,
siblingDVs[0].FilePath()).DataSequenceNumber()
tx = tbl.NewTransaction()
err = tx.ReplaceFilesWithDeleteFiles(t.Context(), nil, nil,
[]iceberg.DataFile{siblingDVs[0]},
@@ -733,7 +733,7 @@ func
TestReplaceFilesWithDeleteFilesAllowsDroppedEqualityField(t *testing.T) {
require.NoError(t,
tx.NewRowDelta(nil).AddDeletes(oldDelete).Commit(t.Context()))
tbl, err = tx.Commit(t.Context())
require.NoError(t, err)
- sequence := currentManifestEntry(t, tbl,
oldDelete.FilePath()).SequenceNum()
+ sequence := currentManifestEntry(t, tbl,
oldDelete.FilePath()).DataSequenceNumber()
tx = tbl.NewTransaction()
require.NoError(t, tx.UpdateSchema(true,
false).DeleteColumn([]string{"data"}).Commit())
@@ -1269,7 +1269,7 @@ func
TestReplaceFilesRejectsDeletionVectorSupersededByCurrentSnapshot(t *testing
[]iceberg.DataFile{superseded},
[]table.DeleteFileAddition{{
File:
rewritten[0],
- DataSequenceNumber:
currentManifestEntry(t, tbl, superseded.FilePath()).SequenceNum(),
+ DataSequenceNumber:
currentManifestEntry(t, tbl, superseded.FilePath()).DataSequenceNumber(),
}}, nil)
},
},
@@ -1324,7 +1324,7 @@ func
TestReplaceFilesRemovesLiveDeletionVectorNotSupersededEntry(t *testing.T) {
[]iceberg.DataFile{liveDV},
[]table.DeleteFileAddition{{
File: rewritten[0],
- DataSequenceNumber: currentManifestEntry(t,
tbl, liveDV.FilePath()).SequenceNum(),
+ DataSequenceNumber: currentManifestEntry(t,
tbl, liveDV.FilePath()).DataSequenceNumber(),
}}, nil))
tbl, err = tx.Commit(t.Context())
require.NoError(t, err)
diff --git a/table/rewrite_data_files_test.go b/table/rewrite_data_files_test.go
index 0ba78aa92..ef2e168ae 100644
--- a/table/rewrite_data_files_test.go
+++ b/table/rewrite_data_files_test.go
@@ -1345,7 +1345,7 @@ func readKeySeqNums(t *testing.T, tbl *table.Table)
(eqDelete, smallMin, preserv
continue
}
path := e.DataFile().FilePath()
- seq := e.SequenceNum()
+ seq := e.DataSequenceNumber()
switch {
case e.DataFile().ContentType() ==
iceberg.EntryContentEqDeletes:
eqDelete = seq
diff --git a/table/rewrite_files_test.go b/table/rewrite_files_test.go
index fb4189f4c..df2c512e8 100644
--- a/table/rewrite_files_test.go
+++ b/table/rewrite_files_test.go
@@ -327,7 +327,7 @@ func
TestRewriteFiles_PreservesIndependentPositionDeleteSequences(t *testing.T)
tbl, err = tx.Commit(t.Context())
require.NoError(t, err)
oldDeletes = append(oldDeletes, builder)
- oldSequences = append(oldSequences, currentManifestEntry(t,
tbl, path).SequenceNum())
+ oldSequences = append(oldSequences, currentManifestEntry(t,
tbl, path).DataSequenceNumber())
}
require.NotEqual(t, oldSequences[0], oldSequences[1])
@@ -349,7 +349,7 @@ func
TestRewriteFiles_PreservesIndependentPositionDeleteSequences(t *testing.T)
require.NoError(t, err)
for i, df := range newDeletes {
- assert.Equal(t, oldSequences[i], currentManifestEntry(t, tbl,
df.FilePath()).SequenceNum())
+ assert.Equal(t, oldSequences[i], currentManifestEntry(t, tbl,
df.FilePath()).DataSequenceNumber())
}
assert.Empty(t, scanIDs(t, tbl),
"each replacement must retain the applicability of its
corresponding old position delete")
@@ -814,7 +814,7 @@ func
TestRewriteFiles_RejectsConcurrentDeleteForAddedDVTarget(t *testing.T) {
require.NoError(t,
tx.NewRowDelta(nil).AddDeletes(oldDelete).Commit(t.Context()))
tbl, err = tx.Commit(t.Context())
require.NoError(t, err)
- oldDeleteSequence := currentManifestEntry(t, tbl,
oldDelete.FilePath()).SequenceNum()
+ oldDeleteSequence := currentManifestEntry(t, tbl,
oldDelete.FilePath()).DataSequenceNumber()
tx = tbl.NewTransaction()
require.NoError(t, tx.UpgradeFormatVersion(3))
diff --git a/table/scan_task_finalization_planfiles_bench_test.go
b/table/scan_task_finalization_planfiles_bench_test.go
index 8fc19eeaf..1ceec7efa 100644
--- a/table/scan_task_finalization_planfiles_bench_test.go
+++ b/table/scan_task_finalization_planfiles_bench_test.go
@@ -137,7 +137,7 @@ func newPlanFilesFinalizationBenchmarkTable(b testing.TB,
splitOffsets bool) *Ta
iceberg.EntryStatusADDED,
&snapshotID,
fileBuilder.Build(),
- ).SequenceNum(sequenceNum).Build()
+ ).DataSequenceNumber(sequenceNum).Build()
}
manifestPath := fmt.Sprintf("%s/metadata/manifest-%d.avro",
tableLocation, manifestIndex)
@@ -151,7 +151,7 @@ func newPlanFilesFinalizationBenchmarkTable(b testing.TB,
splitOffsets bool) *Ta
}
manifests[manifestIndex] = iceberg.NewManifestBuilder(
2, manifestPath, int64(manifestBuffer.Len()),
int32(manifestSpec.ID()), snapshotID,
- ).SequenceNum(sequenceNum, sequenceNum).
+ ).SequenceNumber(sequenceNum, sequenceNum).
AddedFiles(int32(planFilesFinalizationBenchmarkFilesPerManifest)).
AddedRows(int64(planFilesFinalizationBenchmarkFilesPerManifest)).
Build()
diff --git a/table/scanner.go b/table/scanner.go
index 5194ecf2b..968c93b47 100644
--- a/table/scanner.go
+++ b/table/scanner.go
@@ -938,14 +938,14 @@ func (scan *Scan) partitionFiltersForSchema(schema
*iceberg.Schema) *keyDefaultM
func (scan *Scan) checkSequenceNumber(minSeqNum int64, manifest
iceberg.ManifestFile) bool {
return manifest.ManifestContent() == iceberg.ManifestContentData ||
(manifest.ManifestContent() == iceberg.ManifestContentDeletes &&
- manifest.SequenceNum() >= minSeqNum)
+ manifest.SequenceNumber() >= minSeqNum)
}
func minSequenceNum(manifests []iceberg.ManifestFile) int64 {
var n int64 = math.MaxInt64
for _, m := range manifests {
if m.ManifestContent() == iceberg.ManifestContentData {
- n = min(n, m.MinSequenceNum())
+ n = min(n, m.MinSequenceNumber())
}
}
if n == math.MaxInt64 {
@@ -964,14 +964,14 @@ func minSequenceNum(manifests []iceberg.ManifestFile)
int64 {
// snapshot as the equality deletes are not affected — this is how RowDelta
// atomically adds new rows alongside deletes for old rows.
func matchEqualityDeletesToData(dataEntry iceberg.ManifestEntry,
eqDeleteEntries []iceberg.ManifestEntry) []iceberg.DataFile {
- dataSeqNum := dataEntry.SequenceNum()
+ dataSeqNum := dataEntry.DataSequenceNumber()
dataPartition := dataEntry.DataFile().Partition()
out := make([]iceberg.DataFile, 0)
for _, del := range eqDeleteEntries {
// Equality deletes only apply to data files with a strictly
lower
// sequence number.
- if del.SequenceNum() <= dataSeqNum {
+ if del.DataSequenceNumber() <= dataSeqNum {
continue
}
@@ -1031,7 +1031,7 @@ func matchDVToData(dataEntry iceberg.ManifestEntry,
dvIndex map[string]iceberg.M
if !ok {
return nil
}
- if dvSeq := dvEntry.SequenceNum(); dvSeq < 0 || dataEntry.SequenceNum()
<= dvSeq {
+ if dvSeq := dvEntry.DataSequenceNumber(); dvSeq < 0 ||
dataEntry.DataSequenceNumber() <= dvSeq {
return []iceberg.DataFile{dvEntry.DataFile()}
}
@@ -1609,7 +1609,7 @@ func fileScanTaskForDataEntry(
// _last_updated_sequence_number is the manifest entry's data sequence
// number (field id 3), not file sequence number (field id 4).
task.FirstRowID = dataFile.FirstRowID()
- if seq := entry.SequenceNum(); seq >= 0 {
+ if seq := entry.DataSequenceNumber(); seq >= 0 {
task.DataSequenceNumber = &seq
}
diff --git a/table/scanner_empty_manifest_bench_test.go
b/table/scanner_empty_manifest_bench_test.go
index af4634343..7cf80ca6f 100644
--- a/table/scanner_empty_manifest_bench_test.go
+++ b/table/scanner_empty_manifest_bench_test.go
@@ -152,7 +152,7 @@ func writeEmptyManifestBenchmarkManifest(
)
require.NoError(b, err)
entries[i] = iceberg.NewManifestEntryBuilder(status,
&snapshotID, dataFile.Build()).
- SequenceNum(sequenceNum).
+ DataSequenceNumber(sequenceNum).
Build()
}
diff --git a/table/scanner_internal_test.go b/table/scanner_internal_test.go
index 92580d549..59467f3ed 100644
--- a/table/scanner_internal_test.go
+++ b/table/scanner_internal_test.go
@@ -46,14 +46,14 @@ import (
func newDataManifest(minSeqNum int64) iceberg.ManifestFile {
return iceberg.NewManifestBuilder(2, "/path/to/manifest.avro", 1000, 0,
1).
Content(iceberg.ManifestContentData).
- SequenceNum(minSeqNum, minSeqNum).
+ SequenceNumber(minSeqNum, minSeqNum).
Build()
}
func newDeleteManifest(minSeqNum int64) iceberg.ManifestFile {
return iceberg.NewManifestBuilder(2, "/path/to/manifest.avro", 1000, 0,
1).
Content(iceberg.ManifestContentDeletes).
- SequenceNum(minSeqNum, minSeqNum).
+ SequenceNumber(minSeqNum, minSeqNum).
Build()
}
@@ -557,7 +557,7 @@ func scanWithManifestCount(tb testing.TB, manifestCount
int) (*Scan, *iceio.MemF
iceberg.EntryStatusADDED,
&snapshotID,
dataFile.Build(),
- ).SequenceNum(1).Build()
+ ).DataSequenceNumber(1).Build()
manifestPath :=
fmt.Sprintf("mem://planning/table/metadata/manifest-%d.avro", i)
var manifestData bytes.Buffer
manifests[i], err = iceberg.WriteManifest(
@@ -948,7 +948,7 @@ func TestPlanDataManifestTasksPreservesManifestOrder(t
*testing.T) {
unknownCounts := iceberg.NewManifestBuilder(
2, manifests[0].FilePath(), manifests[0].Length(), 0,
snapshotID,
).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
AddedFiles(-1).
ExistingFiles(-1).
Build()
@@ -1220,7 +1220,7 @@ func TestFetchManifestCountersWithRealSnapshot(t
*testing.T) {
Build()
deleteScanned := iceberg.NewManifestBuilder(2,
"mem://default/table-location/metadata/delete-scanned.avro", 100, specID,
snapshotID).
Content(iceberg.ManifestContentDeletes).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
AddedFiles(1).
Partitions([]iceberg.FieldSummary{{ContainsNull: false,
LowerBound: match, UpperBound: match}}).
Build()
@@ -1353,14 +1353,14 @@ func
TestPlanFilesSkipsKnownEmptyManifestsBeforeOpening(t *testing.T) {
deletePath := tableLocation + "/metadata/delete-empty.avro"
dataManifest := iceberg.NewManifestBuilder(2, dataPath, 100,
int32(spec.ID()), snapshotID).
Content(iceberg.ManifestContentData).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
AddedFiles(0).
ExistingFiles(0).
DeletedFiles(2).
Build()
deleteManifest := iceberg.NewManifestBuilder(2, deletePath, 100,
int32(spec.ID()), snapshotID).
Content(iceberg.ManifestContentDeletes).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
AddedFiles(0).
ExistingFiles(0).
DeletedFiles(1).
@@ -1424,7 +1424,7 @@ func TestScanReusesPartitionFiltersAcrossPlanningPhases(t
*testing.T) {
require.NoError(t, err)
entry := iceberg.NewManifestEntryBuilder(
iceberg.EntryStatusADDED, &snapshotID, dataFile.Build(),
- ).SequenceNum(1).Build()
+ ).DataSequenceNumber(1).Build()
var manifestBytes bytes.Buffer
manifest, err := iceberg.WriteManifest(
manifestPath, &manifestBytes, 2, spec, schema, snapshotID,
[]iceberg.ManifestEntry{entry},
@@ -1670,7 +1670,7 @@ func TestTimeTravelMetricsPruningUsesSnapshotSchema(t
*testing.T) {
dataFile.LowerBoundValues(map[int][]byte{1: lower}).
UpperBoundValues(map[int][]byte{1: upper}).
Build(),
- ).SequenceNum(1).Build()
+ ).DataSequenceNumber(1).Build()
manifestPath := "mem://default/table/metadata/manifest.avro"
var manifestBytes bytes.Buffer
@@ -2317,7 +2317,7 @@ func TestPlanFilesUnknownTransformDoesNotPrune(t
*testing.T) {
dataFile.LowerBoundValues(map[int][]byte{1:
int32Bound(5)}).
UpperBoundValues(map[int][]byte{1:
int32Bound(5)}).
Build(),
- ).SequenceNum(1).Build()
+ ).DataSequenceNumber(1).Build()
var manifestBytes bytes.Buffer
_, err = iceberg.WriteManifest(manifestPath, &manifestBytes, 2,
spec, oldSchema, snapshotID,
@@ -2328,7 +2328,7 @@ func TestPlanFilesUnknownTransformDoesNotPrune(t
*testing.T) {
// Partition summary excludes the filter value (id == 5).
manifest := iceberg.NewManifestBuilder(2, manifestPath,
int64(manifestBytes.Len()), int32(spec.ID()), snapshotID).
Partitions([]iceberg.FieldSummary{{ContainsNull: false,
LowerBound: &lower, UpperBound: &upper}}).
- SequenceNum(1, 1).
+ SequenceNumber(1, 1).
AddedFiles(1).
Build()
@@ -2496,7 +2496,7 @@ func TestPlanDataManifestTasksHandlesInaccurateCounts(t
*testing.T) {
for i, manifest := range manifests {
manifests[i] = iceberg.NewManifestBuilder(2,
manifest.FilePath(), manifest.Length(),
manifest.PartitionSpecID(),
manifest.SnapshotID()).
- SequenceNum(manifest.SequenceNum(),
manifest.MinSequenceNum()).
+ SequenceNumber(manifest.SequenceNumber(),
manifest.MinSequenceNumber()).
AddedFiles(counts[i]).
Build()
}
diff --git a/table/scanner_manifest_projection_test.go
b/table/scanner_manifest_projection_test.go
index 47f62d380..086765f5b 100644
--- a/table/scanner_manifest_projection_test.go
+++ b/table/scanner_manifest_projection_test.go
@@ -248,7 +248,7 @@ func
TestPlanDataManifestTasksWithProjectionRetainsEqualityDeletePruning(t *test
require.NoError(t, err)
require.NoError(t, fs.WriteFile(deleteManifest.FilePath(),
deleteBytes.Bytes()))
deleteManifest = iceberg.NewManifestBuilder(2,
deleteManifest.FilePath(), int64(deleteBytes.Len()), 0, 2).
- Content(iceberg.ManifestContentDeletes).SequenceNum(2,
2).AddedFiles(2).AddedRows(2).Build()
+ Content(iceberg.ManifestContentDeletes).SequenceNumber(2,
2).AddedFiles(2).AddedRows(2).Build()
classified, err :=
scan.collectManifestEntriesWithSchemaMinSequenceNum(t.Context(),
[]iceberg.ManifestFile{deleteManifest}, schema,
scan.partitionFiltersForSchema(schema), 0, true)
require.NoError(t, err)
diff --git a/table/scanner_plan_tasks_bench_test.go
b/table/scanner_plan_tasks_bench_test.go
index 04e6062b1..dfcea8081 100644
--- a/table/scanner_plan_tasks_bench_test.go
+++ b/table/scanner_plan_tasks_bench_test.go
@@ -129,7 +129,7 @@ func newPlanTasksBenchmarkFixture(
iceberg.EntryStatusADDED,
&snapshotID,
dataFile.Build(),
- ).SequenceNum(sequenceNumber).Build()
+ ).DataSequenceNumber(sequenceNumber).Build()
}
manifestPath :=
fmt.Sprintf("mem://plan-tasks-benchmark/metadata/manifest-%d.avro",
manifestIndex)
@@ -144,7 +144,7 @@ func newPlanTasksBenchmarkFixture(
manifests[manifestIndex] = iceberg.NewManifestBuilder(
2, manifestPath, int64(manifestBuf.Len()),
int32(spec.ID()), snapshotID,
).
- SequenceNum(sequenceNumber, sequenceNumber).
+ SequenceNumber(sequenceNumber, sequenceNumber).
AddedFiles(int32(entryCount)).
AddedRows(int64(entryCount)).
Build()
diff --git a/table/scanner_row_limit_bench_test.go
b/table/scanner_row_limit_bench_test.go
index 59f6cf1bb..fff2a3df7 100644
--- a/table/scanner_row_limit_bench_test.go
+++ b/table/scanner_row_limit_bench_test.go
@@ -123,7 +123,7 @@ func writeRowLimitPlanningBenchmarkManifest(
require.NoError(b, err)
entry := iceberg.NewManifestEntryBuilder(iceberg.EntryStatusADDED,
&snapshotID, dataFile.Build()).
- SequenceNum(sequenceNumber).
+ DataSequenceNumber(sequenceNumber).
Build()
var manifestBuf bytes.Buffer
@@ -133,7 +133,7 @@ func writeRowLimitPlanningBenchmarkManifest(
require.NoError(b, fs.WriteFile(manifestPath, manifestBuf.Bytes()))
return iceberg.NewManifestBuilder(2, manifestPath,
int64(manifestBuf.Len()), 0, snapshotID).
- SequenceNum(sequenceNumber, sequenceNumber).
+ SequenceNumber(sequenceNumber, sequenceNumber).
AddedFiles(1).
AddedRows(1).
Build()
diff --git a/table/snapshot_producers.go b/table/snapshot_producers.go
index 31de7f14b..698d5eae9 100644
--- a/table/snapshot_producers.go
+++ b/table/snapshot_producers.go
@@ -256,10 +256,10 @@ func (of *overwriteFiles) scanManifest(ctx
context.Context, m iceberg.ManifestFi
isData := content == iceberg.EntryContentData
matched := (isDeletedData && isData) || (isDeletedDelete &&
!isData)
if matched {
- seqNum := entry.SequenceNum()
+ seqNum := entry.DataSequenceNumber()
scan.deleted = append(scan.deleted,
iceberg.NewManifestEntry(iceberg.EntryStatusDELETED,
- &of.base.snapshotID, &seqNum,
entry.FileSequenceNum(),
+ &of.base.snapshotID, &seqNum,
entry.FileSequenceNumber(),
entry.DataFile()))
continue
diff --git a/table/snapshot_producers_test.go b/table/snapshot_producers_test.go
index 8d648a86c..a18a8fc54 100644
--- a/table/snapshot_producers_test.go
+++ b/table/snapshot_producers_test.go
@@ -2468,14 +2468,14 @@ func
TestOverwriteParentDependentManifestsUsesProductionPath(t *testing.T) {
require.Len(t, dataTombstone, 1)
require.Equal(t, iceberg.EntryStatusDELETED, dataTombstone[0].Status())
require.Equal(t, sp.snapshotID, dataTombstone[0].SnapshotID())
- require.Equal(t, dataSequenceNumber, dataTombstone[0].SequenceNum())
+ require.Equal(t, dataSequenceNumber,
dataTombstone[0].DataSequenceNumber())
require.Equal(t, deletedData.FilePath(),
dataTombstone[0].DataFile().FilePath())
deleteTombstone := readEntries(got[1])
require.Len(t, deleteTombstone, 1)
require.Equal(t, iceberg.EntryStatusDELETED,
deleteTombstone[0].Status())
require.Equal(t, sp.snapshotID, deleteTombstone[0].SnapshotID())
- require.Equal(t, deleteSequenceNumber, deleteTombstone[0].SequenceNum())
+ require.Equal(t, deleteSequenceNumber,
deleteTombstone[0].DataSequenceNumber())
require.Equal(t, removedDelete.FilePath(),
deleteTombstone[0].DataFile().FilePath())
keptDataEntries := readEntries(got[2])
diff --git a/table/table_test.go b/table/table_test.go
index be0a8a2ce..dae8b35fd 100644
--- a/table/table_test.go
+++ b/table/table_test.go
@@ -2700,7 +2700,7 @@ func (t *TableWritingTestSuite) TestMergeManifests() {
for i, entry := range entries {
t.Equal(snapshotList[i].SnapshotID, entry.SnapshotID())
if t.formatVersion > 1 {
- t.EqualValues(3-i, entry.SequenceNum())
+ t.EqualValues(3-i, entry.DataSequenceNumber())
}
}
diff --git a/table/transaction.go b/table/transaction.go
index ca194e2fd..58833f665 100644
--- a/table/transaction.go
+++ b/table/transaction.go
@@ -1996,7 +1996,7 @@ func (t *Transaction) replaceFiles(ctx context.Context,
dataFilesToDelete, dataF
// count as found when removing files, but it still blocks
re-adding its path.
isLive := entry.Status() != iceberg.EntryStatusDELETED
if isData && isLive {
- liveDataFiles[path] = rewriteFileState{file: df,
dataSequenceNumber: entry.SequenceNum()}
+ liveDataFiles[path] = rewriteFileState{file: df,
dataSequenceNumber: entry.DataSequenceNumber()}
if _, ok := setToDelete[path]; ok {
markedDataForDeletion =
append(markedDataForDeletion, df)
}
@@ -2004,7 +2004,7 @@ func (t *Transaction) replaceFiles(ctx context.Context,
dataFilesToDelete, dataF
if !isData && isLive {
if _, ok := setDeleteFilesToRemove[path]; ok {
markedDeleteForRemoval =
append(markedDeleteForRemoval, df)
- if seq := entry.SequenceNum(); seq >= 0 {
+ if seq := entry.DataSequenceNumber(); seq >= 0 {
removedDeleteSequenceNumbers =
append(removedDeleteSequenceNumbers, seq)
removedDeleteContents[df.ContentType()]
= struct{}{}
} else {
@@ -2017,7 +2017,7 @@ func (t *Transaction) replaceFiles(ctx context.Context,
dataFilesToDelete, dataF
// was already replaced would match the newer
DV, which holds more deletes.
if want, ok := dvsToRemoveByRef[*ref]; ok &&
want.FilePath() == path {
markedDVsForRemoval[*ref] = df
- if seq := entry.SequenceNum(); seq >= 0
{
+ if seq := entry.DataSequenceNumber();
seq >= 0 {
removedDeleteSequenceNumbers =
append(removedDeleteSequenceNumbers, seq)
removedDeleteContents[df.ContentType()] = struct{}{}
} else {
@@ -2078,7 +2078,7 @@ func (t *Transaction) replaceFiles(ctx context.Context,
dataFilesToDelete, dataF
if _, removed := setDeleteFilesToRemove[path]; !removed
{
if _, automaticallyRemoved :=
autoSetDeleteFilesToRemove[path]; !automaticallyRemoved {
survivingPositionDeletes =
append(survivingPositionDeletes, rewriteFileState{
- file: df, dataSequenceNumber:
entry.SequenceNum(),
+ file: df, dataSequenceNumber:
entry.DataSequenceNumber(),
})
}
}
diff --git a/table/updates_test.go b/table/updates_test.go
index b364316e2..dade0a16f 100644
--- a/table/updates_test.go
+++ b/table/updates_test.go
@@ -87,7 +87,7 @@ func writeManifest(t testing.TB, tio *trackingIO, snapshotID,
seqNum int64, mani
require.NoError(t, err)
entry := iceberg.NewManifestEntryBuilder(iceberg.EntryStatusADDED,
&snapshotID, df.Build()).
- SequenceNum(seqNum).
+ DataSequenceNumber(seqNum).
Build()
var buf bytes.Buffer
@@ -96,7 +96,7 @@ func writeManifest(t testing.TB, tio *trackingIO, snapshotID,
seqNum int64, mani
require.NoError(t, tio.WriteFile(manifestPath, buf.Bytes()))
return iceberg.NewManifestBuilder(2, manifestPath, int64(buf.Len()), 0,
snapshotID).
- SequenceNum(seqNum, seqNum).
+ SequenceNumber(seqNum, seqNum).
AddedFiles(1).
AddedRows(1).
Build()