func (s *levelHandler) deleteTables(toDel []*table.Table) error {
	s.Lock() // s.Unlock() below

	toDelMap := make(map[uint64]struct{})
	for _, t := range toDel {
		toDelMap[t.ID()] = struct{}{}
	}

	// Make a copy as iterators might be keeping a slice of tables.
	var newTables []*table.Table
	for _, t := range s.tables {
		_, found := toDelMap[t.ID()]
		if !found {
			newTables = append(newTables, t)
			continue
		}
		s.totalSize -= t.Size()
	}
	s.tables = newTables

	s.Unlock() // Unlock s _before_ we DecrRef our tables, which can be slow.

	return decrRefs(toDel)
}
func (s *levelHandler) deleteTables(toDel []*table.Table) error {
	s.Lock() // s.Unlock() below

	toDelMap := make(map[uint64]struct{})
	for _, t := range toDel {
		toDelMap[t.ID()] = struct{}{}
	}

	// Make a copy as iterators might be keeping a slice of tables.
	var newTables []*table.Table
	for _, t := range s.tables {
		_, found := toDelMap[t.ID()]
		if !found {
			newTables = append(newTables, t)
			continue
		}
		s.totalSize -= t.Size()
	}
	s.tables = newTables

	s.Unlock() // Unlock s _before_ we DecrRef our tables, which can be slow.

	return decrRefs(toDel)
}
func ( s * levelHandler ) deleteTables ( toDel [ ] * table . Table ) error { s . Lock ( ) // s.Unlock() below toDelMap := make ( map [ uint64 ] struct { } ) for _ , t := range toDel { toDelMap [ t . ID ( ) ] = struct { } { } } // Make a copy as iterators might be keeping a slice of tables. var newTables [ ] * table . Table for _ , t := range s . tables { _ , found := toDelMap [ t . ID ( ) ] if ! found { newTables = append ( newTables , t ) continue } s . totalSize -= t . Size ( ) } s . tables = newTables s . Unlock ( ) // Unlock s _before_ we DecrRef our tables, which can be slow. return decrRefs ( toDel ) }
// deleteTables remove tables idx0, ..., idx1-1.
deleteTables remove tables idx0 ... idx1 - 1 .