func FromQueryResult(res *prompb.QueryResult) storage.SeriesSet {
	series := make([]storage.Series, 0, len(res.Timeseries))
	for _, ts := range res.Timeseries {
		labels := labelProtosToLabels(ts.Labels)
		if err := validateLabelsAndMetricName(labels); err != nil {
			return errSeriesSet{err: err}
		}

		series = append(series, &concreteSeries{
			labels:  labels,
			samples: ts.Samples,
		})
	}
	sort.Sort(byLabel(series))
	return &concreteSeriesSet{
		series: series,
	}
}
func FromQueryResult(res *prompb.QueryResult) storage.SeriesSet {
	series := make([]storage.Series, 0, len(res.Timeseries))
	for _, ts := range res.Timeseries {
		labels := labelProtosToLabels(ts.Labels)
		if err := validateLabelsAndMetricName(labels); err != nil {
			return errSeriesSet{err: err}
		}

		series = append(series, &concreteSeries{
			labels:  labels,
			samples: ts.Samples,
		})
	}
	sort.Sort(byLabel(series))
	return &concreteSeriesSet{
		series: series,
	}
}
func FromQueryResult ( res * prompb . QueryResult ) storage . SeriesSet { series := make ( [ ] storage . Series , 0 , len ( res . Timeseries ) ) for _ , ts := range res . Timeseries { labels := labelProtosToLabels ( ts . Labels ) if err := validateLabelsAndMetricName ( labels ) ; err != nil { return errSeriesSet { err : err } } series = append ( series , & concreteSeries { labels : labels , samples : ts . Samples , } ) } sort . Sort ( byLabel ( series ) ) return & concreteSeriesSet { series : series , } }
// FromQueryResult unpacks a QueryResult proto.
FromQueryResult unpacks a QueryResult proto .