code: func (t *table) Compact(start []byte, limit []byte) error {
  	// If no start was specified, use the table prefix as the first value
  	if start == nil {
  		start = []byte(t.prefix)
  	}
  	// If no limit was specified, use the first element not matching the prefix
  	// as the limit
  	if limit == nil {
  		limit = []byte(t.prefix)
  		for i := len(limit) - 1; i >= 0; i-- {
  			// Bump the current character, stopping if it doesn't overflow
  			limit[i]++
  			if limit[i] > 0 {
  				break
  			}
  			// Character overflown, proceed to the next or nil if the last
  			if i == 0 {
  				limit = nil
  			}
  		}
  	}
  	// Range correctly calculated based on table prefix, delegate down
  	return t.db.Compact(start, limit)
  }
docs: // Compact flattens the underlying data store for the given key range. In essence,
  // deleted and overwritten versions are discarded, and the data is rearranged to
  // reduce the cost of operations needed to access them.
  //
  // A nil start is treated as a key before all keys in the data store; a nil limit
  // is treated as a key after all keys in the data store. If both is nil then it
  // will compact entire data store.