@@ -379,7 +379,7 @@ func mergeIntervals(
379
379
// the file bytes are interpolated over has changed.
380
380
estimatedBytes : 0 ,
381
381
// Copy the below attributes from prevInterval.
382
- files : append ([] * TableMetadata ( nil ), prevInterval .files ... ),
382
+ files : slices . Clone ( prevInterval .files ),
383
383
isBaseCompacting : prevInterval .isBaseCompacting ,
384
384
intervalRangeIsBaseCompacting : prevInterval .intervalRangeIsBaseCompacting ,
385
385
compactingFileCount : prevInterval .compactingFileCount ,
@@ -463,11 +463,9 @@ func (s *l0Sublevels) addL0Files(
463
463
// Shallow copies of slices that we just append to, are okay.
464
464
newVal .levelFiles = make ([][]* TableMetadata , len (s .levelFiles ))
465
465
for i := range s .levelFiles {
466
- newVal .levelFiles [i ] = make ([]* TableMetadata , len (s .levelFiles [i ]))
467
- copy (newVal .levelFiles [i ], s .levelFiles [i ])
466
+ newVal .levelFiles [i ] = slices .Clone (s .levelFiles [i ])
468
467
}
469
- newVal .Levels = make ([]LevelSlice , len (s .Levels ))
470
- copy (newVal .Levels , s .Levels )
468
+ newVal .Levels = slices .Clone (s .Levels )
471
469
472
470
fileKeys := make ([]intervalKeyTemp , 0 , 2 * len (files ))
473
471
for _ , f := range files {
@@ -603,7 +601,7 @@ func (s *l0Sublevels) addL0Files(
603
601
}
604
602
605
603
// Sort and deduplicate updatedSublevels.
606
- sort . Ints (updatedSublevels )
604
+ slices . Sort (updatedSublevels )
607
605
{
608
606
j := 0
609
607
for i := 1 ; i < len (updatedSublevels ); i ++ {
@@ -763,9 +761,8 @@ func (s *l0Sublevels) InitCompactingFileInfo(inProgress []L0Compaction) {
763
761
return intervalKeyCompare (s .cmp , a .startKey , b )
764
762
})
765
763
for i := start ; i < end && i < len (s .orderedIntervals ); i ++ {
766
- interval := & s .orderedIntervals [i ]
767
764
if ! c .IsIntraL0 {
768
- interval .isBaseCompacting = true
765
+ s . orderedIntervals [ i ] .isBaseCompacting = true
769
766
}
770
767
}
771
768
}
@@ -908,12 +905,8 @@ func (s *l0Sublevels) describe(verbose bool) string {
908
905
// sublevels.
909
906
func (s * l0Sublevels ) ReadAmplification () int {
910
907
amp := 0
911
- for i := range s .orderedIntervals {
912
- interval := & s .orderedIntervals [i ]
913
- fileCount := len (interval .files )
914
- if amp < fileCount {
915
- amp = fileCount
916
- }
908
+ for _ , interval := range s .orderedIntervals {
909
+ amp = max (amp , len (interval .files ))
917
910
}
918
911
return amp
919
912
}
@@ -995,12 +988,8 @@ func (s *l0Sublevels) FlushSplitKeys() [][]byte {
995
988
// L0 -> Lbase compaction.
996
989
func (s * l0Sublevels ) MaxDepthAfterOngoingCompactions () int {
997
990
depth := 0
998
- for i := range s .orderedIntervals {
999
- interval := & s .orderedIntervals [i ]
1000
- intervalDepth := len (interval .files ) - interval .compactingFileCount
1001
- if depth < intervalDepth {
1002
- depth = intervalDepth
1003
- }
991
+ for _ , interval := range s .orderedIntervals {
992
+ depth = max (depth , len (interval .files )- interval .compactingFileCount )
1004
993
}
1005
994
return depth
1006
995
}
@@ -1038,21 +1027,13 @@ func (s *l0Sublevels) checkCompaction(c *L0CompactionFiles) error {
1038
1027
}
1039
1028
}
1040
1029
for _ , f := range c .Files {
1041
- if fileIntervalsByLevel [f .SubLevel ].min > f .minIntervalIndex {
1042
- fileIntervalsByLevel [f .SubLevel ].min = f .minIntervalIndex
1043
- }
1044
- if fileIntervalsByLevel [f .SubLevel ].max < f .maxIntervalIndex {
1045
- fileIntervalsByLevel [f .SubLevel ].max = f .maxIntervalIndex
1046
- }
1030
+ fileIntervalsByLevel [f .SubLevel ].min = min (fileIntervalsByLevel [f .SubLevel ].min , f .minIntervalIndex )
1031
+ fileIntervalsByLevel [f .SubLevel ].max = max (fileIntervalsByLevel [f .SubLevel ].max , f .maxIntervalIndex )
1047
1032
includedFiles .markBit (f .L0Index )
1048
1033
if c .isIntraL0 {
1049
- if topLevel > f .SubLevel {
1050
- topLevel = f .SubLevel
1051
- }
1034
+ topLevel = min (topLevel , f .SubLevel )
1052
1035
} else {
1053
- if topLevel < f .SubLevel {
1054
- topLevel = f .SubLevel
1055
- }
1036
+ topLevel = max (topLevel , f .SubLevel )
1056
1037
}
1057
1038
}
1058
1039
min := fileIntervalsByLevel [topLevel ].min
@@ -1109,20 +1090,15 @@ func (s *l0Sublevels) checkCompaction(c *L0CompactionFiles) error {
1109
1090
// and IsIntraL0Compacting fields are already set on all [TableMetadata]s passed
1110
1091
// in.
1111
1092
func (s * l0Sublevels ) UpdateStateForStartedCompaction (inputs []LevelSlice , isBase bool ) error {
1112
- minIntervalIndex := - 1
1093
+ minIntervalIndex := math . MaxInt
1113
1094
maxIntervalIndex := 0
1114
1095
for i := range inputs {
1115
1096
for f := range inputs [i ].All () {
1116
1097
for i := f .minIntervalIndex ; i <= f .maxIntervalIndex ; i ++ {
1117
- interval := & s .orderedIntervals [i ]
1118
- interval .compactingFileCount ++
1119
- }
1120
- if f .minIntervalIndex < minIntervalIndex || minIntervalIndex == - 1 {
1121
- minIntervalIndex = f .minIntervalIndex
1122
- }
1123
- if f .maxIntervalIndex > maxIntervalIndex {
1124
- maxIntervalIndex = f .maxIntervalIndex
1098
+ s .orderedIntervals [i ].compactingFileCount ++
1125
1099
}
1100
+ minIntervalIndex = min (minIntervalIndex , f .minIntervalIndex )
1101
+ maxIntervalIndex = max (maxIntervalIndex , f .maxIntervalIndex )
1126
1102
}
1127
1103
}
1128
1104
if isBase {
@@ -1202,12 +1178,8 @@ func (l *L0CompactionFiles) addFile(f *TableMetadata) {
1202
1178
l .Files = append (l .Files , f )
1203
1179
l .filesAdded = append (l .filesAdded , f )
1204
1180
l .fileBytes += f .Size
1205
- if f .minIntervalIndex < l .minIntervalIndex {
1206
- l .minIntervalIndex = f .minIntervalIndex
1207
- }
1208
- if f .maxIntervalIndex > l .maxIntervalIndex {
1209
- l .maxIntervalIndex = f .maxIntervalIndex
1210
- }
1181
+ l .minIntervalIndex = min (l .minIntervalIndex , f .minIntervalIndex )
1182
+ l .maxIntervalIndex = max (l .maxIntervalIndex , f .maxIntervalIndex )
1211
1183
}
1212
1184
1213
1185
// Helper to order intervals being considered for compaction.
@@ -1918,12 +1890,9 @@ func (s *l0Sublevels) extendCandidateToRectangle(
1918
1890
candidate .preExtensionMaxInterval = candidate .maxIntervalIndex
1919
1891
// Extend {min,max}IntervalIndex to include all of the candidate's current
1920
1892
// bounds.
1921
- if minIntervalIndex > candidate .minIntervalIndex {
1922
- minIntervalIndex = candidate .minIntervalIndex
1923
- }
1924
- if maxIntervalIndex < candidate .maxIntervalIndex {
1925
- maxIntervalIndex = candidate .maxIntervalIndex
1926
- }
1893
+ minIntervalIndex = min (minIntervalIndex , candidate .minIntervalIndex )
1894
+ maxIntervalIndex = max (maxIntervalIndex , candidate .maxIntervalIndex )
1895
+
1927
1896
var startLevel , increment , endLevel int
1928
1897
if isBase {
1929
1898
startLevel = 0
0 commit comments