@@ -15,6 +15,7 @@ import (
1515 "github.com/cockroachdb/pebble/internal/base"
1616 "github.com/cockroachdb/pebble/internal/invariants"
1717 "github.com/cockroachdb/pebble/internal/manifest"
18+ "github.com/cockroachdb/pebble/internal/overlap"
1819 "github.com/cockroachdb/pebble/internal/private"
1920 "github.com/cockroachdb/pebble/objstorage"
2021 "github.com/cockroachdb/pebble/objstorage/remote"
@@ -832,7 +833,7 @@ func ingestUpdateSeqNum(
832833func ingestTargetLevel (
833834 ctx context.Context ,
834835 cmp base.Compare ,
835- lsmOverlap lsmOverlap ,
836+ lsmOverlap overlap. WithLSM ,
836837 baseLevel int ,
837838 compactions map [* compaction ]struct {},
838839 meta * fileMetadata ,
@@ -904,32 +905,32 @@ func ingestTargetLevel(
904905 // existing point that falls within the ingested table bounds as being "data
905906 // overlap".
906907
907- if lsmOverlap [0 ].result == dataOverlap {
908+ if lsmOverlap [0 ].Result == overlap . Data {
908909 return 0 , nil , nil
909910 }
910911 targetLevel = 0
911912 splitFile = nil
912913 for level := baseLevel ; level < numLevels ; level ++ {
913914 var candidateSplitFile * fileMetadata
914- switch lsmOverlap [level ].result {
915- case dataOverlap :
915+ switch lsmOverlap [level ].Result {
916+ case overlap . Data :
916917 // We cannot ingest into or under this level; return the best target level
917918 // so far.
918919 return targetLevel , splitFile , nil
919920
920- case noDataOverlap :
921- if ! suggestSplit || lsmOverlap [level ].splitFile == nil {
921+ case overlap . OnlyBoundary :
922+ if ! suggestSplit || lsmOverlap [level ].SplitFile == nil {
922923 // We can ingest under this level, but not into this level.
923924 continue
924925 }
925926 // We can ingest into this level if we split this file.
926- candidateSplitFile = lsmOverlap [level ].splitFile
927+ candidateSplitFile = lsmOverlap [level ].SplitFile
927928
928- case noBoundaryOverlap :
929+ case overlap . None :
929930 // We can ingest into this level.
930931
931932 default :
932- return 0 , nil , base .AssertionFailedf ("unexpected lsmOverlap result : %v" , lsmOverlap [level ].result )
933+ return 0 , nil , base .AssertionFailedf ("unexpected WithLevel.Result : %v" , lsmOverlap [level ].Result )
933934 }
934935
935936 // Check boundary overlap with any ongoing compactions. We consider an
@@ -2192,15 +2193,15 @@ func (d *DB) ingestApply(
21922193 // We check overlap against the LSM without holding DB.mu. Note that we
21932194 // are still holding the log lock, so the version cannot change.
21942195 // TODO(radu): perform this check optimistically outside of the log lock.
2195- var overlap lsmOverlap
2196- overlap , err = func () (lsmOverlap , error ) {
2196+ var lsmOverlap overlap. WithLSM
2197+ lsmOverlap , err = func () (overlap. WithLSM , error ) {
21972198 d .mu .Unlock ()
21982199 defer d .mu .Lock ()
21992200 return overlapChecker .DetermineLSMOverlap (ctx , m .UserKeyBounds ())
22002201 }()
22012202 if err == nil {
22022203 f .Level , splitFile , err = ingestTargetLevel (
2203- ctx , d .cmp , overlap , baseLevel , d .mu .compact .inProgress , m , shouldIngestSplit ,
2204+ ctx , d .cmp , lsmOverlap , baseLevel , d .mu .compact .inProgress , m , shouldIngestSplit ,
22042205 )
22052206 }
22062207 }
0 commit comments