@@ -1405,6 +1405,43 @@ TEST_F(MergingSnapshotUpdateTest,
14051405 IsError (ErrorKind::kValidationFailed ));
14061406}
14071407
1408+ TEST_F (MergingSnapshotUpdateTest,
1409+ ValidateNoNewDeletesForDataFilesIgnoresEqualityDeletesWhenFlagIsTrue) {
1410+ // This tests the behavior that RewriteFiles::SetDataSequenceNumber() and
1411+ // RewriteFiles::RewriteDataFiles() enable: when a data sequence number is
1412+ // set for rewritten data files, concurrent equality deletes at higher
1413+ // sequence numbers still apply to the new files and are NOT a conflict.
1414+ // Only position deletes should still fail (tested separately by
1415+ // ValidateNoNewDeletesForDataFilesFailsOnPositionDeleteWhenIgnoringEqualityDeletes).
1416+ CommitFileA ();
1417+ ICEBERG_UNWRAP_OR_FAIL (auto first_snapshot, table_->current_snapshot ());
1418+
1419+ auto del_file = MakeEqualityDeleteFile (" /delete/del_a.parquet" , 1L );
1420+ ICEBERG_UNWRAP_OR_FAIL (auto op, NewOverwriteUpdate ());
1421+ EXPECT_THAT (op->AddDelete (del_file), IsOk ());
1422+ const int64_t second_snapshot_id = op->GeneratedSnapshotId ();
1423+ ICEBERG_UNWRAP_OR_FAIL (auto manifests, op->Apply (*table_->metadata (), first_snapshot));
1424+ ICEBERG_UNWRAP_OR_FAIL (
1425+ auto second_snapshot,
1426+ MakeSyntheticSnapshot (DataOperation::kOverwrite , second_snapshot_id,
1427+ first_snapshot->snapshot_id ,
1428+ first_snapshot->sequence_number + 1 , manifests));
1429+
1430+ auto metadata = std::make_shared<TableMetadata>(*table_->metadata ());
1431+ metadata->snapshots .push_back (second_snapshot);
1432+ metadata->current_snapshot_id = second_snapshot->snapshot_id ;
1433+ metadata->last_sequence_number = second_snapshot->sequence_number ;
1434+
1435+ DataFileSet replaced_files;
1436+ replaced_files.insert (file_a_);
1437+ // With ignore_equality_deletes=true, concurrently-added equality deletes
1438+ // should NOT cause a conflict.
1439+ EXPECT_THAT (TestMergeAppend::ValidateNoNewDeletesForDataFilesForTest (
1440+ *metadata, first_snapshot->snapshot_id , replaced_files, second_snapshot,
1441+ file_io_, /* ignore_equality_deletes=*/ true ),
1442+ IsOk ());
1443+ }
1444+
14081445TEST_F (MergingSnapshotUpdateTest,
14091446 ValidateNoNewDeletesForDataFilesUsesConfiguredCaseSensitivity) {
14101447 CommitFileA ();
0 commit comments