@@ -450,6 +450,7 @@ func ingestLoad1(
450450 }
451451
452452 if ! meta .HasPointKeys && ! meta .HasRangeKeys {
453+ // Elide ingesting empty sstables.
453454 return nil , keyspan.Span {}, base.BlockReadStats {}, nil
454455 }
455456
@@ -503,12 +504,8 @@ func ingestLoad(
503504 external []ExternalFile ,
504505 cacheHandle * cache.Handle ,
505506 compressionCounters * block.CompressionCounters ,
506- pending [] base.TableNum ,
507+ getNextFileNum func () base.DiskFileNum ,
507508) (ingestLoadResult , error ) {
508- localFileNums := pending [:len (paths )]
509- sharedFileNums := pending [len (paths ) : len (paths )+ len (shared )]
510- externalFileNums := pending [len (paths )+ len (shared ) : len (paths )+ len (shared )+ len (external )]
511-
512509 var result ingestLoadResult
513510 result .local = make ([]ingestLocalMeta , 0 , len (paths ))
514511 var lastRangeKey keyspan.Span
@@ -536,7 +533,8 @@ func ingestLoad(
536533 if ! shouldDisableRangeKeyChecks {
537534 rangeKeyValidator = validateSuffixedBoundaries (opts .Comparer , lastRangeKey )
538535 }
539- m , lastRangeKey , blockReadStats , err = ingestLoad1 (ctx , opts , fmv , readable , cacheHandle , compressionCounters , localFileNums [i ], rangeKeyValidator )
536+ tableNum := base .TableNum (getNextFileNum ())
537+ m , lastRangeKey , blockReadStats , err = ingestLoad1 (ctx , opts , fmv , readable , cacheHandle , compressionCounters , tableNum , rangeKeyValidator )
540538 if err != nil {
541539 return ingestLoadResult {}, err
542540 }
@@ -561,7 +559,7 @@ func ingestLoad(
561559
562560 result .shared = make ([]ingestSharedMeta , 0 , len (shared ))
563561 for i := range shared {
564- m , err := ingestSynthesizeShared (opts , shared [i ], sharedFileNums [ i ] )
562+ m , err := ingestSynthesizeShared (opts , shared [i ], base . PhysicalTableFileNum ( getNextFileNum ()) )
565563 if err != nil {
566564 return ingestLoadResult {}, err
567565 }
@@ -575,7 +573,7 @@ func ingestLoad(
575573 }
576574 result .external = make ([]ingestExternalMeta , 0 , len (external ))
577575 for i := range external {
578- m , err := ingestLoad1External (opts , external [i ], externalFileNums [ i ] )
576+ m , err := ingestLoad1External (opts , external [i ], base . PhysicalTableFileNum ( getNextFileNum ()) )
579577 if err != nil {
580578 return ingestLoadResult {}, err
581579 }
@@ -1470,22 +1468,12 @@ func (d *DB) ingest(ctx context.Context, args ingestArgs) (IngestOperationStats,
14701468 }
14711469 }
14721470 }
1473- // Allocate table numbers for all files being ingested and mark them as
1474- // pending in order to prevent them from being deleted. Note that this causes
1475- // the file number ordering to be out of alignment with sequence number
1476- // ordering. The sorting of L0 tables by sequence number avoids relying on
1477- // that (busted) invariant.
1478- pendingOutputs := make ([]base.TableNum , len (paths )+ len (shared )+ len (external ))
1479- for i := 0 ; i < len (paths )+ len (shared )+ len (external ); i ++ {
1480- pendingOutputs [i ] = d .mu .versions .getNextTableNum ()
1481- }
1482-
14831471 jobID := d .newJobID ()
14841472
14851473 // Load the metadata for all the files being ingested. This step detects
14861474 // and elides empty sstables.
14871475 loadResult , err := ingestLoad (ctx , d .opts , d .FormatMajorVersion (), paths , shared , external ,
1488- d .cacheHandle , & d .compressionCounters , pendingOutputs )
1476+ d .cacheHandle , & d .compressionCounters , d . mu . versions . getNextDiskFileNum )
14891477 if err != nil {
14901478 return IngestOperationStats {}, err
14911479 }
0 commit comments