code: func (i *Index) measurementSeriesByExprIterator(name []byte, expr influxql.Expr) (tsdb.SeriesIDIterator, error) {
  	// Return all series for the measurement if there are no tag expressions.
  
  	release := i.sfile.Retain()
  	defer release()
  
  	if expr == nil {
  		itr, err := i.measurementSeriesIDIterator(name)
  		if err != nil {
  			return nil, err
  		}
  		return tsdb.FilterUndeletedSeriesIDIterator(i.sfile, itr), nil
  	}
  
  	itr, err := i.seriesByExprIterator(name, expr)
  	if err != nil {
  		return nil, err
  	}
  
  	return tsdb.FilterUndeletedSeriesIDIterator(i.sfile, itr), nil
  }
docs: // measurementSeriesByExprIterator returns a series iterator for a measurement
  // that is filtered by expr. See MeasurementSeriesByExprIterator for more details.
  //
  // measurementSeriesByExprIterator guarantees to never take any locks on the
  // series file.