@@ -1379,4 +1379,59 @@ TEST_F(SizeTieredCompactionPolicyTest, test_delete_limit) {
1379
1379
}
1380
1380
}
1381
1381
1382
+ TEST_F (SizeTieredCompactionPolicyTest, test_large_dup_base_rowset) {
1383
+ LOG (INFO) << " test_large_dup_base_rowset" ;
1384
+ create_tablet_schema (DUP_KEYS);
1385
+
1386
+ TabletMetaSharedPtr tablet_meta = std::make_shared<TabletMeta>();
1387
+ create_tablet_meta (tablet_meta.get ());
1388
+
1389
+ write_new_version (tablet_meta, 2 );
1390
+ write_new_version (tablet_meta, 1 );
1391
+ write_new_version (tablet_meta, 1 );
1392
+ write_new_version (tablet_meta, 1 );
1393
+
1394
+ TabletSharedPtr tablet =
1395
+ Tablet::create_tablet_from_meta (tablet_meta, starrocks::StorageEngine::instance ()->get_stores ()[0 ]);
1396
+ tablet->init ();
1397
+ init_compaction_context (tablet);
1398
+
1399
+ ASSERT_EQ (4 , tablet->version_count ());
1400
+
1401
+ config::max_segment_file_size = 1024 * 128 ;
1402
+ DeferOp defer ([&]() {
1403
+ config::max_segment_file_size = 1073741824 ;
1404
+ });
1405
+
1406
+ {
1407
+ auto res = compact (tablet);
1408
+ ASSERT_TRUE (res.ok ());
1409
+
1410
+ ASSERT_EQ (2 , tablet->version_count ());
1411
+ std::vector<Version> versions;
1412
+ tablet->list_versions (&versions);
1413
+ ASSERT_EQ (2 , versions.size ());
1414
+ ASSERT_EQ (0 , versions[0 ].first );
1415
+ ASSERT_EQ (0 , versions[0 ].second );
1416
+ ASSERT_EQ (1 , versions[1 ].first );
1417
+ ASSERT_EQ (3 , versions[1 ].second );
1418
+ }
1419
+
1420
+ {
1421
+ auto res = compact (tablet);
1422
+ ASSERT_FALSE (res.ok ());
1423
+
1424
+ ASSERT_EQ (2 , tablet->version_count ());
1425
+ }
1426
+
1427
+ config::max_segment_file_size = 1073741824 ;
1428
+
1429
+ {
1430
+ auto res = compact (tablet);
1431
+ ASSERT_TRUE (res.ok ());
1432
+
1433
+ ASSERT_EQ (1 , tablet->version_count ());
1434
+ }
1435
+ }
1436
+
1382
1437
} // namespace starrocks
0 commit comments