@@ -1450,6 +1450,43 @@ TEST_F(MergingSnapshotUpdateTest,
14501450 IsError (ErrorKind::kValidationFailed ));
14511451}
14521452
1453+ TEST_F (MergingSnapshotUpdateTest,
1454+ ValidateNoNewDeletesForDataFilesIgnoresEqualityDeletesWhenFlagIsTrue) {
1455+ // This tests the behavior that RewriteFiles::SetDataSequenceNumber() and
1456+ // RewriteFiles::RewriteDataFiles() enable: when a data sequence number is
1457+ // set for rewritten data files, concurrent equality deletes at higher
1458+ // sequence numbers still apply to the new files and are NOT a conflict.
1459+ // Only position deletes should still fail (tested separately by
1460+ // ValidateNoNewDeletesForDataFilesFailsOnPositionDeleteWhenIgnoringEqualityDeletes).
1461+ CommitFileA ();
1462+ ICEBERG_UNWRAP_OR_FAIL (auto first_snapshot, table_->current_snapshot ());
1463+
1464+ auto del_file = MakeEqualityDeleteFile (" /delete/del_a.parquet" , 1L );
1465+ ICEBERG_UNWRAP_OR_FAIL (auto op, NewOverwriteUpdate ());
1466+ EXPECT_THAT (op->AddDelete (del_file), IsOk ());
1467+ const int64_t second_snapshot_id = op->GeneratedSnapshotId ();
1468+ ICEBERG_UNWRAP_OR_FAIL (auto manifests, op->Apply (*table_->metadata (), first_snapshot));
1469+ ICEBERG_UNWRAP_OR_FAIL (
1470+ auto second_snapshot,
1471+ MakeSyntheticSnapshot (DataOperation::kOverwrite , second_snapshot_id,
1472+ first_snapshot->snapshot_id ,
1473+ first_snapshot->sequence_number + 1 , manifests));
1474+
1475+ auto metadata = std::make_shared<TableMetadata>(*table_->metadata ());
1476+ metadata->snapshots .push_back (second_snapshot);
1477+ metadata->current_snapshot_id = second_snapshot->snapshot_id ;
1478+ metadata->last_sequence_number = second_snapshot->sequence_number ;
1479+
1480+ DataFileSet replaced_files;
1481+ replaced_files.insert (file_a_);
1482+ // With ignore_equality_deletes=true, concurrently-added equality deletes
1483+ // should NOT cause a conflict.
1484+ EXPECT_THAT (TestMergeAppend::ValidateNoNewDeletesForDataFilesForTest (
1485+ *metadata, first_snapshot->snapshot_id , replaced_files, second_snapshot,
1486+ file_io_, /* ignore_equality_deletes=*/ true ),
1487+ IsOk ());
1488+ }
1489+
14531490TEST_F (MergingSnapshotUpdateTest,
14541491 ValidateNoNewDeletesForDataFilesUsesConfiguredCaseSensitivity) {
14551492 CommitFileA ();
0 commit comments